我有一个本地 Kubernetes 集群,最近它需要物理重启所有工作节点(运行三个工作节点)。当 Pod 重新启动时,我注意到所有 Pod 都安排在一个物理工作节点上,而不是均匀分布在三个工作节点上。我假设其他两个工作节点需要更长的时间才能从重启中恢复在线,而 Kubernetes 只是将我们所有的应用程序安排在唯一的工作节点上。
部署 yaml 中是否有办法指定所有部署副本最终应分布在所有工作节点上?IE 阻止 Kubernetes 在单个工作节点上启动所有 pod?
我有一个本地 Kubernetes 集群,最近它需要物理重启所有工作节点(运行三个工作节点)。当 Pod 重新启动时,我注意到所有 Pod 都安排在一个物理工作节点上,而不是均匀分布在三个工作节点上。我假设其他两个工作节点需要更长的时间才能从重启中恢复在线,而 Kubernetes 只是将我们所有的应用程序安排在唯一的工作节点上。
部署 yaml 中是否有办法指定所有部署副本最终应分布在所有工作节点上?IE 阻止 Kubernetes 在单个工作节点上启动所有 pod?
有一种叫做inter pod 反亲和性的东西就是这样做的。
来自 k8s 文档:
例子:
它将确保没有两个相同部署的 Pod 是同一节点上的调度。如果没有更多节点可用于调度 pod,则 pod 将保持挂起状态(不会被调度)。