pod 崩溃时 Kubernetes 的默认行为是什么?

What is default behavior of Kubernetes when pod crashes?

在具有 4 个静态 pods 且没有自动缩放的 Kubernetes 部署中,如果一个 pod 崩溃,默认情况下会发生什么情况?它会使用相同的 ID/different ID 自动重新创建,还是应用程序会在 3 pods 上继续 运行?

当一个pod崩溃时,它会自动重启。当您执行 kubectl get pods

时,您将通过 pod 的“Restarts”值的递增值看到这一点

来自文档:https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#pod-template

Only a .spec.template.spec.restartPolicy equal to Always is allowed, which is the default if not specified.

换句话说,无论如何,部署将总是 重启您的 pod,并且您无法更改该行为。

重新启动不会更改 pod 的名称(或您调用它的 ID)

pod 名称唯一会更改的情况是 pod 被删除。这可能发生在自动缩放过程中,或者如果 pod 从节点中被逐出。

您在部署中没有指定自动缩放,但如果您指定了 4 个副本的值,正如我怀疑的那样,那么驱逐将导致一个 pod 更改名称,因为它会被另一个 pod 重新创建节点,以满足您对4个副本的要求。

我所说的“更改名称”只是指 Pod 名称末尾的哈希值会发生变化。因此,您名为 my-test-g4gsv 的 pod 在转到新节点后可能会重命名为 my-test-4dsv4

有重新启动的退避政策。因此,如果 Kubernetes 检测到一个 pod 已被反复重启,它将开始延迟其重启尝试。您会注意到这是 pod 状态下的 CrashLoopBackoff 值(而不是 Running)。在此状态下,pod 未启动,因此在此期间,您的部署本质上是 运行 减少副本,直到 Kubernetes 启动它。