我就是做这个的:
CrashLoopBackOff
的失败 pod。 :kubectl apply -f error.yaml
echo a
=> echo b
) 并重新部署有状态集:kubectl apply -f error.yaml
请求 pod 状态:
$ kubectl get pod errordemo-0
NAME READY STATUS RESTARTS AGE
errordemo-0 0/1 CrashLoopBackOff 15 59m
错误.yaml apiVersion: apps/v1
kind: StatefulSet
metadata:
name: errordemo
labels:
app.kubernetes.io/name: errordemo
spec:
serviceName: errordemo
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: errordemo
template:
metadata:
labels:
app.kubernetes.io/name: errordemo
spec:
containers:
- name: demox
image: busybox:1.28.2
command: ['sh', '-c', 'echo a; sleep 5; exit 1']
terminationGracePeriodSeconds: 1
问题 即使 pod 处于错误状态,我如何实现立即重新部署?
我找到了这些解决方案,但我想有一个命令来实现它(在现实生活中,我正在使用 helm,我只想为我的部署调用
helm upgrade
):为什么 kubernetes 不立即重新部署 pod?
echo a; sleep 10000;
)将立即重新启动。这就是为什么我设置 terminationGracePeriodSeconds: 1
最佳答案
您可以设置 spec.podManagementPolicy: "Parallel"
Parallel pod management tells the StatefulSet controller to launch or terminate all Pods in parallel, and not to wait for Pods to become Running and Ready or completely terminated prior to launching or terminating another Pod.
请记住,默认的 podManagementPolicy 是
OrderedReady
OrderedReady pod management is the default for StatefulSets. It tells the StatefulSet controller to respect the ordering guarantees demonstrated above
如果您的应用程序需要有序更新,那么您无能为力。
关于kubernetes - 在 kubernetes 中使用 CrashLoopBackOff 状态重新部署 statefulset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66612592/