问题描述
K8S/Openshift 中复制控制器的职责是确保实际状态与期望状态相同。因此,如果所需的状态是 2 个 Pod,那么它可以确保正好创建/运行 2 个 Pod。如果 Pod 由于某种原因失败,那么复制控制器会确保它会重新启动一个新的 Pod 以补偿失败的 Pod。
我想确认的一件事,如果 Pod/Container 存在错误 - 那么复制控制器会关心错误代码并发现 Pod 由于错误而失败,因此决定不再启动 Pod . ??请回答。
解决方法
我想确认的一件事,如果 Pod/Container 存在错误 - 那么复制控制器会关心错误代码并发现 Pod 由于错误而失败,因此决定不再启动 Pod . ??
错误可以通过多种不同的方式显示:
- 应用程序日志中的错误代码
- 消息负载中的错误代码
- 响应中的 http 状态代码中的错误代码
- 进程退出代码
只有 last - 进程退出代码对 ReplicationController(或在较新的 Kubernetes 中,ReplicaSet 控制器)有用。如果进程退出,Pod 将终止,控制器将创建一个新的。
此外,为了缓解其他情况,您可以实现 LivenessProbe,以便在出现另一种错误时杀死 Pod。