有什么方法可以停止在容器内部失败时一次又一次地重新启动Pod。
一种简单的检查方法是将[ "exit", "1" ]
传递给pod as-
enter code here
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
labels:
app: myapp
spec:
containers:
- name: myapp-container
image: alpine:latest
command: ['sh','-c','exit','1']
注意-
RestartPolicy : Never
不支持此选项。
答案 0 :(得分:1)
您将需要更改Pod的重启策略:
PodSpec的restartPolicy字段的值可能为Always,OnFailure和Never。默认值为始终。 restartPolicy适用于Pod中的所有容器。 restartPolicy仅指通过kubelet在同一节点上重新启动容器。由kubelet重新启动的已退出容器将以指数退避延迟(10s,20s,40s…)重新启动,上限为5分钟,并在成功执行十分钟后重置。如Pods文档中所述,一旦绑定到一个节点,一个Pod将永远不会反弹到另一个节点。
答案 1 :(得分:-1)
您使用的是StatefulSet,如果一个容器发生故障,则负责重启pod。如果您的容器是辅助工具,则不管是否失败,都可以在每次失败时包装容器的命令和exit 0
,然后StatefulSet不会检测到任何失败。例如,您可以使用以下命令:
exit 1 & # your container's command should be here
PID=$!
wait $PID
exit 0