0

Kubernetes 的默认设置是什么CrashLoopBackOff

说,我有一个豆荚:

kubectl run mynginx --image nginx -- echo hello

我检查了它的状态:

kubectl get pods -w
NAME      READY   STATUS    RESTARTS   AGE
mynginx   0/1     Pending   0          0s
mynginx   0/1     Pending   0          0s
mynginx   0/1     ContainerCreating   0          0s
mynginx   0/1     Completed           0          2s
mynginx   0/1     Completed           1          4s
mynginx   0/1     CrashLoopBackOff    1          5s
mynginx   0/1     Completed           2          20s
mynginx   0/1     CrashLoopBackOff    2          33s
mynginx   0/1     Completed           3          47s
mynginx   0/1     CrashLoopBackOff    3          59s
mynginx   0/1     Completed           4          97s
mynginx   0/1     CrashLoopBackOff    4          109s

这是“预期的”。Kubernetes 启动一个 pod,它“太快”退出,Kubernetes 再次调度它,然后 Kubernetes 将状态设置为CrashLoopBackOff.

现在,如果我以稍微不同的方式启动一个 pod:

kubectl run mynginx3 --image nginx -- /bin/bash -c "sleep 10; echo hello"

我得到以下

kubectl get pods -w
NAME       READY   STATUS    RESTARTS   AGE
mynginx3   0/1     Pending   0          0s
mynginx3   0/1     Pending   0          0s
mynginx3   0/1     ContainerCreating   0          0s
mynginx3   1/1     Running             0          2s
mynginx3   0/1     Completed           0          12s
mynginx3   1/1     Running             1          14s
mynginx3   0/1     Completed           1          24s
mynginx3   0/1     CrashLoopBackOff    1          36s
mynginx3   1/1     Running             2          38s
mynginx3   0/1     Completed           2          48s
mynginx3   0/1     CrashLoopBackOff    2          62s
mynginx3   1/1     Running             3          75s
mynginx3   0/1     Completed           3          85s
mynginx3   0/1     CrashLoopBackOff    3          96s
mynginx3   1/1     Running             4          2m14s
mynginx3   0/1     Completed           4          2m24s
mynginx3   0/1     CrashLoopBackOff    4          2m38s

这也是意料之中的。

但是假设我设置了 24 小时,在最初两个 pod 退出之后,然后在每个下一个 pod 退出之后sleep,我仍然会得到相同的结果吗?CrashLoopBackOff

4

1 回答 1

2

基于这些文档

restartPolicy 适用于 Pod 中的所有容器。restartPolicy 仅指 kubelet 在同一节点上重新启动容器。在 Pod 中的容器退出后,kubelet 以指数回退延迟(10 秒、20 秒、40 秒……)重新启动它们,上限为 5 分钟。一旦容器执行了 10 分钟而没有任何问题,kubelet 会重置该容器的重启退避计时器。

我认为这意味着在退出前执行超过 10 分钟的任何操作都不会触发CrashLoopBackOff状态。

于 2022-01-14T23:33:31.900 回答