我正在开始使用Kubernetes,并且我正在尝试了解有关活动性探针的更多信息。
某些文档和文章将failureThreshold
的默认值设为3倍。并且当您不指定failureThreshold时,Kubernetes将在重新启动容器之前进行3次探测。
我的问题是,kubelet会重新启动pod容器多少次?
这是一个示例livenessprobe-execaction.yaml:
apiVersion: v1
kind: Pod
metadata:
labels:
test: liveness
name: liveness-exec
spec:
containers:
- name: liveness
image: k8s.gcr.io/busybox
args: # command to be executed when the container starts
- /bin/sh
- -c
- touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600 # during first 30 seconds there will be a file and cat will return success, when removed, a failure
livenessProbe:
exec:
command: # in the first probe there will be a file within 30 seconds, and no errors
# and after 35 seconds a nex probe is done but the file is gone, and error will show up and machine will be restarted
# several restarts should happen or restarts only 3 times?
- cat
- /tmp/healthy
initialDelaySeconds: 5 # kubelet waits 5 seconds before first probe
periodSeconds: 5 # kubelet checks every 5 seconds
#failureThreshold: 3 is the default number of times, after the 3rd liveness probe the container is restarted? forever?
创建广告连播后:
$ kubectl apply -f livenessprobe-execaction.yaml
运行手表:
$ kubectl get pod liveness-exec --watch
输出为:
NAME READY STATUS RESTARTS AGE
liveness-exec 1/1 Running 0 4s
liveness-exec 1/1 Running 1 75s
liveness-exec 1/1 Running 2 2m29s
liveness-exec 1/1 Running 3 3m44s
liveness-exec 1/1 Running 4 5m
liveness-exec 1/1 Running 5 6m14s
liveness-exec 0/1 CrashLoopBackOff 5 7m29s
liveness-exec 1/1 Running 6 8m57s
liveness-exec 1/1 Running 7 10m
liveness-exec 0/1 CrashLoopBackOff 7 11m
liveness-exec 1/1 Running 8 16m
liveness-exec 1/1 Running 9 17m
liveness-exec 0/1 CrashLoopBackOff 9 18m
答案 0 :(得分:0)
这取决于PodSpec中的restartPolicy。
PodSpec具有一个restartPolicy
字段,其可能值为Always
,OnFailure
和Never
。默认值为Always
。 restartPolicy
适用于Pod中的所有容器。 restartPolicy
仅指通过kubelet在同一节点上重新启动容器。通过kubelet重新启动的退出容器将以指数退避延迟(10s,20s,40s…)重新启动,上限为五分钟,并在成功执行十分钟后重置
答案 1 :(得分:0)
感谢您的回复。我已经看到了一些类似的答案,但这并不能很好地解释将Pod重新启动多少次。答案是,从今天开始,它将以默认模式“始终”永远重启。
似乎无法设置最大重新启动次数。
您可以“总是”,“失败”或“从不重启”。在始终和失败模式下,这5分钟只是重试启动容器之间的最长等待时间。
“从不”不会重新启动容器。
因此,尚无选项可以帮助我们设置最大重试次数。
引用Dan Wahlin的课程为主题,该课程:
首先,5分钟是重新启动之间的最大上限时间。 如果再次运行它,您肯定会发现它肯定开始变慢 重新启动的次数很多(请参见下文),并且只会重新启动 每5分钟尝试一次。它坚持那个数字,除非容器 是健康的(在这种情况下,它将重置事物)。
关于最大重新启动次数(这是您的问题是什么 我现在才意识到),看起来他们仍在努力 我可以在github网站上看到的功能。我不正常 必须处理这种情况(通常是集群管理员) 但是,如果我遇到其他任何问题,我会通知您。
https://github.com/kubernetes/kubernetes/issues/49466 https://github.com/kubernetes/kubernetes/pull/79334
看起来像是将解决该请求的特定拉取请求: