Master
Master 节点是 Kubernetes 集群的控制节点,每个 Kubernetes 集群里需要有一个 Master 节点来负责整个集群的管理和控制,基本上 Kubernetes 所有的控制命令都是发给它,由它来负责具体的执行过程。
关键进程
Master 节点上运行着以下一组关键进程:
Kubernetes API Server(kube-apiserver)
整个集群的控制中枢,提供集群中各个模块之间的数据交换,并将集群状态和信息存储到分布式键-值(key-value)存储系统 Etcd 集群中。
是集群管理、资源配额、集群安全机制的入口,为集群各类资源对象提供增删改查以及 watch 的 REST API 接口。
Kubernetes Scheduler(kube-scheduler)
集群 Pod 的调度中心,主要通过调度算法将 Pod 分配到最佳的 Node 节点,它通过 API Server 监听所有 Pod 的状态,一旦发现新的未被调度到任何 Node 节点的 Pod(PodSpec.NodeName 为空),就会根据一系列策略选择最佳节点进行调度,对每一个 Pod 创建一个绑定(Binding),然后被调度的节点上的 Kubelet 负责启动该 Pod。
Scheduler 是集群可插拔式组件,它跟踪每个节点上的资源利用率以确保工作负载不会超过可用资源。因此,Scheduler 必须知道资源需求、资源可用性以及其他约束和策略,例如服务质量、亲和性/反亲和性要求、数据位置等。
Scheduler 将资源供应与工作负载需求相匹配以维持系统的稳定和可靠性,因此 Scheduler 在调度的过程中需要考虑公平、资源高效利用、效率等方面的问题。
Kubernetes Controller Manager(kube-controller-manager)
集群的状态管理器,保证 Pod 或其他资源达到期望值。
当集群中某个 Pod 的副本数或其他资源因故障和错误导致无法正常运行,没有达到设定的值时,Controller Manager 会尝试自动修复并使其达到期望状态。
Etcd
用于可靠地存储集群的配置数据,是一种持久型、轻量型、分布式的键-值(key-value)数据存储组件。
Etcd 作为 Kubernetes 集群的持久化存储系统,集群的灾难恢复、状态信息存储都与其密不可分,所以在 Kubernetes 高可用集群中,Etcd 的高可用是至关重要的一部分,在生产环境中建议部署大于 3 的奇数个数的 Etcd,以保证数据的安全性和可恢复性。
Etcd 可与 Master 组件部署在同一个节点上,大规模集群环境下建议部署在集群外,并且使用高性能服务器来提高 Etcd 的性能和降低 Etcd 同步数据的延迟。
补充说明
在 Kubernetes 架构中,虽然 Scheduler 和 Controller Manager 在多个节点上进行了部署,但执行工作的节点只有一个。
因为 Scheduler 和 Controller Manager 属于有状态服务,为了防止重复调度,多个节点的 Scheduler 和 Controller Manager 进行了选主工作,工作节点(主节点)信息保存在 Scheduler 和 Controller Manager 的 EndPoint 中。
可以通过 kubectl get leases -n kube-system 查看:
最后更新于
这有帮助吗?