首页 > 解决方案 > 具有重启策略的 Kubernetes POD 是否总是必须在控制器的支持下才能工作?

问题描述

如果我创建一个 POD 清单 (pod-definition.yaml) 并设置该restartPolicy: AlwaysPod 是否还需要与任何控制器(即 Replicaset 或 Deployment)相关联?此处的最终目标是在 Pod 死机时自动启动 Pod 中的容器。如果 Pod 没有与控制器关联,该容器会自动重启吗?如果 Pod 只有一个容器会发生什么?

这里的文档不清楚,但它让我相信 Pod 必须在控制器下才能工作,即,如果您隐式创建一个 8Ks 对象并指定从不重启策略,您将获得一个 pod。如果您指定 always(默认),您将获得部署。

标签: kubernetes

解决方案


没有控制器(部署、复制控制器等)的 Pod 并且只有restartPolicy在其运行的节点(确切地说是该节点上的 kubelet)死亡或耗尽或重新启动或由于某些其他原因 Pod 被驱逐时才会重新启动/重新调度节点。如果节点处于良好状态并且由于某种原因 pod 崩溃,它将在同一个节点上重新启动,而无需控制器。

原因是 pod restartPolicy 由 kubelet 处理,即 pod 由节点的 kubelet 重新启动。现在如果节点死亡,kubelet 也已死亡,无法重新启动 pod。因此,您需要一个控制器,它将在另一个节点中重新启动它。

文档

restartPolicy 仅指 kubelet 在同一节点上重新启动容器

简而言之,如果您希望 pod 在节点故障或节点的 kubelet 故障中幸存下来,您应该拥有更高级别的控制器。


推荐阅读