赞
踩
一个完整的 K8s 集群由一组节点(node)服务器组成,这些服务器节点运行着 K8s 所管理的容器化应用,且每个集群至少有一个工作节点(work node)。工作节点会托管所有的 Pods,而 Pod 就是作为应用负载的组件。
控制平面管理集群中的工作节点和 Pods,为集群提供故障转移和高可用性。
基础架构:
控制平面组件会为集群做出全局决策(如:集群资源调度、检测和响应等),控制节点可以在集群中的任何节点上运行,接下来看看控制平面组件都有哪些。
该组件负责公开 K8s API,负责 API 请求处理,提供了资源操作的唯一入口(如认证、授权、访问控制、API 注册等),是 K8s 的前端控制平面组件。
kube-apiserver
可进行水平扩/缩容(通过部署多个 kube-apiserver 实例来实现),实现多 kube-apiserver
实例的流量平衡。
etcd
是兼顾一致性与高可用性的键值数据库,可以作为保存 Kubernetes 所有集群数据的后台数据库,它保存了整个 K8s 集群的状态。
通常,我们也要对 ETCD 集群做相关备份工作,更多 ETCD 相关内容可阅读其官方文档
该组件负责资源调度,如监视新创建的、未指定运行节点(node) 的 Pods, 并选择节点来让 Pod 在上面运行。
调度决策考虑的因素包括单个 Pod 及 Pods 集合的资源需求、软硬件及策略约束、 亲和性及反亲和性规范、数据位置、工作负载间的干扰等。
该组件负责运行控制器进程,从逻辑上讲,每个控制器都是单独的一个进程,但是为了降低复杂性,这些控制器都被编译到同一个可执行文件,并在同一个进程中运行。负责维护集群状态,如故障检测、自动扩展、滚动更新等。
控制器主要包括:
该组件是指嵌入特定云的控制逻辑控制平面组件,允许你将 K8s 集群连接到云提供商的 API 上,并将与该云平台交互的组件同与你的集群交互的组件分离开来。
该组件运行在 K8s 集群中的每个 work 节点上,保证容器都运行在 Pod 中。
kubelet 接收一组通过各类机制提供给它的 PodSpecs, 确保这些 PodSpecs 中描述的容器处于运行状态且健康。kubelet 不会管理不是由 Kubernetes 创建的容器。
该组件运行在 K8s 集群中的每个 work 节点上,是集群中每个 work 节点上运行的网络代理,负责维护节点上的一些网络规则, 这些网络规则会允许从集群内部或外部的网络会话与 Pod 进行网络通信。
如果操作系统提供了可用的数据包过滤层,则 kube-proxy 会通过它来实现网络规则。 否则,kube-proxy 仅做流量转发。
该组件是容器运行时,是负责运行容器的软件。
Kubernetes 支持许多容器运行环境,例如 Docker、Containerd、CRI-O 等。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。