深入理解Kubernetes内部架构与组件
1. Pod的高级调度
在Kubernetes中,Pod调度是一个复杂的过程,受到多种因素的影响。例如,当两个节点由云基础设施提供时,为了节省成本,可能会将Pod调度到第一个节点,并将第二个节点归还给云提供商。
对于多个Pod副本,理想情况下应将它们分散到尽可能多的节点上,以避免单个节点故障导致服务不可用。默认情况下,属于同一Service或ReplicaSet的Pod会分散到多个节点,但这并非绝对。可以通过定义Pod亲和性和反亲和性规则来强制Pod分散或聚集。
调度器可以根据特定需求和基础设施进行配置,甚至可以用自定义实现替换。也可以在没有调度器的情况下运行Kubernetes集群,但需要手动进行调度。
还可以在集群中运行多个调度器。对于每个Pod,可通过在Pod规范中设置 schedulerName 属性来指定调度该Pod的调度器。未设置该属性或 schedulerName 设置为 default-scheduler 的Pod将使用默认调度器,其他Pod则需手动调度或由其他调度器处理。
2. 控制器管理器中的控制器
API服务器仅负责在etcd中存储资源并通知客户端变更,调度器仅为Pod分配节点,而控制器管理器中的控制器则确保系统的实际状态与期望状态一致。
控制器管理器目前将多个执行各种协调任务的控制器组合在一起,未来这些控制器可能会拆分为单独的进程,方便必要时进行自定义替换。以下是部分控制器及其功能:
| 控制器名称 | 功能 |
| —
订阅专栏 解锁全文
73



被折叠的 条评论
为什么被折叠?



