kubernetes - 具有重启策略的 Kubernetes POD 是否总是必须在控制器的支持下才能工作?
问题描述
如果我创建一个 POD 清单 (pod-definition.yaml) 并设置该restartPolicy: Always
Pod 是否还需要与任何控制器(即 Replicaset 或 Deployment)相关联?此处的最终目标是在 Pod 死机时自动启动 Pod 中的容器。如果 Pod 没有与控制器关联,该容器会自动重启吗?如果 Pod 只有一个容器会发生什么?
这里的文档不清楚,但它让我相信 Pod 必须在控制器下才能工作,即,如果您隐式创建一个 8Ks 对象并指定从不重启策略,您将获得一个 pod。如果您指定 always(默认),您将获得部署。
解决方案
没有控制器(部署、复制控制器等)的 Pod 并且只有restartPolicy
在其运行的节点(确切地说是该节点上的 kubelet)死亡或耗尽或重新启动或由于某些其他原因 Pod 被驱逐时才会重新启动/重新调度节点。如果节点处于良好状态并且由于某种原因 pod 崩溃,它将在同一个节点上重新启动,而无需控制器。
原因是 pod restartPolicy 由 kubelet 处理,即 pod 由节点的 kubelet 重新启动。现在如果节点死亡,kubelet 也已死亡,无法重新启动 pod。因此,您需要一个控制器,它将在另一个节点中重新启动它。
从文档
restartPolicy 仅指 kubelet 在同一节点上重新启动容器
简而言之,如果您希望 pod 在节点故障或节点的 kubelet 故障中幸存下来,您应该拥有更高级别的控制器。
推荐阅读
- out-of-memory - Pytorch RuntimeError:CUDA out of memory when training graph attention network
- javascript - jQuery .text() 方法不显示索引项值
- c++ - 使用 For 循环将一个字符串复制到另一个字符串
- python - 如何在 PyCharm 中定位模块?
- python - 如何仅将 csv 文件中的某个列复制到 sqlite 数据库表中?
- web2py - 将 INSERT 查询中的 id 分配给变量时,web2py 服务器停止响应
- blazor-client-side - 如何部署独立 Blazor Webassembly
- java - 尝试 catch while 循环 Java
- javascript - 如何检查函数是否已调用
- java - 什么是 ”
“元素上” " 用于 JavaFX 应用程序中的“maven-compiler-plugin”