如何使用持久卷声明重新启动 Kubernetes 部署?

Dav*_*ker 2 kubernetes

我有一个部署(starterservice),它部署具有持久卷声明的单个 Pod。这有效。但是重启失败:

kubectl rollout restart deploy starterservice
Run Code Online (Sandbox Code Playgroud)

新 pod 在旧 pod 终止之前启动,并且无法附加卷(卷“pvc-...”的多重附加错误)。我可以通过缩放到 0 然后返回到 1 来解决这个问题:

kubectl scale --replicas=0 deployment/starterservice
kubectl scale --replicas=1 deployment/starterservice
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一种方法可以kubectl rollout restart在启动新 Pod 之前等待旧 Pod 终止?德克萨斯州。

Luk*_*man 7

您需要设置部署策略=重新创建。

spec:
  strategy:
    type: Recreate
Run Code Online (Sandbox Code Playgroud)

Recreate该策略与RollingUpdate(默认)策略之间的区别在于,Recreate将在创建新 Pod 之前终止旧 Pod,而RollingUpdate在终止旧 Pod 之前创建新 Pod。

https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#recreate-deployment