Kubernetes Pod 调度与节点亲和性详解
在 Kubernetes 中,Pod 的调度是一个关键环节,它决定了 Pod 会被分配到哪个节点上运行。本文将详细介绍如何通过节点标签和节点亲和性来实现 Pod 的调度。
1. 解决 Pod 待处理状态
当 Pod 处于 “Pending” 状态时,通常是因为没有合适的节点来运行这些 Pod。此时,可以通过为节点添加标签,使其与 Pod 定义中的 nodeSelector 字段设置相匹配,从而解决这个问题。具体步骤如下:
1. 添加节点标签 :根据 Pod 定义中的 nodeSelector 字段,为节点添加相应的标签。
2. 查看 Pod 状态 :添加标签后,再次列出 Pod,此时 Pod 应该不再处于 “Pending” 状态,而是已经完成或正在运行。
需要注意的是,如果在运行时修改节点标签,例如移除某个节点的标签,正在运行的 Pod 不会将其状态更改为 “Pending”,而是会继续在该节点上运行,即使该节点上没有匹配的标签。
2. 节点亲和性概述
从 Kubernetes 1.2 版本开始,引入了一种新的节点选择机制,称为节点亲和性(Node Affinity)。节点亲和性的 alpha 版本基于标签,但计划添加对其他类型节点亲和性的支持,例如根据节点上正在运行的其他 Pod 来调度 Pod。目前,支持两种类型的节点亲和性,如下表所示:
| 节点亲和性类 |
|---|
超级会员免费看
订阅专栏 解锁全文
86

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



