【问题标题】:K8s/Openshift - does the replication controller care about exit status of pod/containers?K8s/Openshift - 复制控制器是否关心 pod/容器的退出状态?
【发布时间】:2021-07-09 15:45:47
【问题描述】:

K8S/Openshift 中复制控制器的职责是确保实际状态与期望状态相同。因此,如果所需的状态是 2 个 Pod,那么它可以确保恰好有 2 个 Pod 被创建/运行。如果 pod 由于某种原因失败,则复制控制器会确保它将重新启动新的 pod 以补偿失败的 pod。

我要确认的一件事是,如果 Pod/Container 存在错误 - 那么复制控制器是否会关心错误代码并发现 pod 由于错误而失败,因此决定不再启动 pod . ??请回答。

【问题讨论】:

  • 但是,作为评论,我想补充一点——复制控制器的目的之一是处理失败/结束 pod 的情况,无论是否有错误。并用一个新的 pod 来补偿失败的 pod,而不管原始 pod 故障的原因是什么。

标签: kubernetes openshift-3


【解决方案1】:

我要确认的一件事是,如果 Pod/Container 存在错误 - 那么复制控制器是否会关心错误代码并发现 pod 由于错误而失败,因此决定不再启动 pod . ??

错误可以通过多种不同的方式显示:

  • 应用程序日志中的错误代码
  • 消息负载中的错误代码
  • 响应中的 http 状态代码中的错误代码
  • 进程退出代码

只有 last - 进程退出代码对 ReplicationController(或在较新的 Kubernetes 中为 ReplicaSet 控制器)有用。如果进程退出,则终止 Pod,控制器将创建一个新的。

此外,为了缓解其他情况,您可以实现 LivenessProbe,这样 Pod 将在出现其他错误时被杀死。

【讨论】:

  • If the process exit, the Pod is terminated and a new will be created by the controller. - 我会把它当作 - 有错误或无错误退出 - 复制控制器将启动一个替换 pod。
  • 是的,没错。复制控制器关心“期望的状态”——运行副本的数量。
  • 谢谢。+1。在我的使用中,我并不担心 LivenessProbe 检查,检查失败意味着 POD 根据重启策略重启。你的回答解决了我的问题。
猜你喜欢
  • 2020-01-25
  • 1970-01-01
  • 1970-01-01
  • 2019-02-19
  • 1970-01-01
  • 1970-01-01
  • 2014-08-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多