共计 2200 个字符,预计需要花费 6 分钟才能阅读完成。
Kubernetes(通常缩写为 K8S)是容器编排平台。
Kubernetes 提供了反对简单容器应用程序所需的所有。对于开发人员和经营人员来说,这是最便捷,最受欢迎的框架,简直所有组织的 DevOps 团队都宽泛应用它。
Kubernetes 对计算机集群而言,就像操作系统对计算机而言。
为了方便管理和服务发现,Kubernetes 将组成一个应用程序的容器分组为逻辑单元。这对于微服务应用程序特地有用。
只管 Kubernetes 在 Linux 上运行,但它与平台无关,能够在裸机,虚拟机,云实例或 OpenStack 上运行。最新版本的 Kubernetes 曾经反对在 Windows 上运行。
Kubernetes 集群中的计算机或节点分为管制立体和工作负载立体。
Kubernetes 集群架构
Kubernetes 集群由分为两组的节点组成:
- 一组 master 节点,它们承载着管制立体组件,它们是零碎的大脑,因为它们管制着整个集群。
- 一组形成工作负载立体的工作节点,工作负载(或应用程序)在此运行。
这两个立体独特组成了 Kubernetes 集群。
Kubernetes Master 节点
这是 Kubernetes 控制面板或管制立体。这里做出无关集群的决策,例如调度和检测 / 响应集群事件。master 服务器的组件能够在集群中的任何节点上运行。以下是每个要害组件的细分:
- API Server
- 集群数据存储 (etcd)
- Controller Manager
- Scheduler
- Dashboard (可选)
让咱们逐个探讨这些组件。
API Server
这是 Kubernetes 控制面板中惟一用户可拜访的 API 的组件,并且是你将与之交互的惟一主组件。API Server 公开了一个 restful 的 Kubernetes API,并应用了 JSON 清单文件。
Kubernetes API Server 公开了 RESTful Kubernetes API。应用集群和其余 Kubernetes 组件的工程师通过此 API 创建对象。
集群数据存储
Kubernetes 应用 ETCD 作为数据存储。这是一个一致性且高可用的键值存储,用于长久存储所有 API 对象。
因为 API Server 自身是无状态的,因而 etcd 分布式数据存储将长久保留通过 API 创立的对象。API Server 是与 etcd 通信的惟一组件。
Controller Manager
kube-controller manager,它运行所有解决集群中工作的控制器。这些包含节点控制器,正本控制器,端点控制器以及服务帐户和 secret 控制器。这些控制器中的每一个都独自工作以维持所需状态。
控制器使你通过 API 创立的对象依照想要的状态运行。它们中的大多数仅创立其余对象,然而有些还与内部零碎通信(例如,通过其 API 的云提供商)。
Scheduler
调度程序监督新创建的 Pod(一个或多个容器的组),并将其调配给节点。
调度程序决定每个应用程序实例应在哪个工作程序节点上运行。
master 节点和工作节点的组件之间就是这样进行交互的。
Kubernetes 工作节点
master 节点解决和治理集群,而工作节点运行容器并提供 Kubernetes 运行时环境。
次要组件有:
- Kubelet
- Container runtime
- Kube-proxy
让咱们逐个探讨这些组件。
Kubelet
工作节点蕴含一个 kubelet。这是次要的节点代理。它监督 API 服务器以查找已调配给其节点的 Pod。Kubelet 执行工作并保护向主节点报告 pod 状态的反向通道。
Kubelet 是与 API Server 进行对话并治理在其节点上运行的应用程序的代理。它通过 API 报告这些应用程序和节点的状态。
Container Runtime
每个 pod 内都有容器,kubelet 通过 Docker 运行这些容器(拉取镜像,启动和进行容器等)。它还定期执行任何申请的容器活动性探测。它反对 Docker 和 CRI- O 等。
容器运行时,能够是 Docker 或与 Kubernetes 兼容的任何其余运行时。它依照 Kubelet 的指令在容器中运行你的应用程序。
Kube-proxy
这是节点的网络大脑,负责保护主机上的网络规定并执行连贯转发。它还负责服务中所有 Pod 的负载平衡。
Kubernetes 服务代理(Kube-proxy)对应用程序之间的网络流量进行负载平衡。
附加组件
大多数 Kubernetes 集群还蕴含其余几个组件。这包含 DNS 服务器,网络插件,日志记录代理等。
它们通常在工作节点上运行,但也能够配置为在 master 节点上运行。
Kubernetes 实战
将应用程序部署到 Kubernetes 中的步骤。
在部署应用程序时,将产生以下操作:
- 你将利用程序清单提交给 Kubernetes API。API Server 将清单中定义的对象写入 etcd。
- 控制器会留神到新创建的对象,并创立几个新对象。
- 调度程序将 Pod 调配给每个工作节点。
- Kubelet 留神到已调配给本人的 Pod。它通过 Container Runtime 运行应用程序实例。
- Kube-proxy 会留神到,应用程序实例已准备就绪,能够承受来自客户端的连贯并为其配置负载均衡器。
- Kubelet 和控制器监视系统并放弃利用程序运行。
Kubernetes 是 容器编排事实上的规范,当然在理论应用过程中,须要理解更多的知识点,本文心愿能够帮忙还没有接触过 Kubernetes 的小伙伴疾速入门。
PS: 本文属于翻译,原文