我有一個用例,用于同時重啟 statefulset 中的所有 pod。
kubernetes statefulset 是否支持所有 pod 的并發重啟?
根據 statefulset 檔案,這可以通過將 pod 更新策略設定為并行來完成,如下例所示:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: mysql-db
spec:
podManagementPolicy: Parallel
replicas: 3
然而,這在實踐中似乎不起作用,正如在 EKS 上運行的這個 statefulset 所展示的那樣:
- 應用這個:
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: producer
namespace: ragnarok
spec:
selector:
matchLabels:
app: producer
replicas: 10
podManagementPolicy: "Parallel"
serviceName: producer-service
template:
metadata:
labels:
app: producer
spec:
containers:
- name: producer
image: archbungle/load-tester:pulsar-0.0.49
imagePullPolicy: IfNotPresent
轉出重啟按順序發生,就好像忽略了轉出策略設定:
(base) welcome@Traianos-MacBook-Pro eks-deploy % kubectl get pods -n ragnarok | egrep producer
producer-0 1/1 Running 0 3m58s
producer-1 1/1 Running 0 3m56s
producer-2 1/1 Running 0 3m53s
producer-3 1/1 Running 0 3m47s
producer-4 1/1 Running 0 3m45s
producer-5 1/1 Running 0 3m43s
producer-6 1/1 Running 1 3m34s
producer-7 0/1 ContainerCreating 0 1s
producer-8 1/1 Running 0 16s
producer-9 1/1 Running 0 19s
(base) welcome@Traianos-MacBook-Pro eks-deploy % kubectl get pods -n ragnarok | egrep producer
producer-0 1/1 Running 0 4m2s
producer-1 1/1 Running 0 4m
producer-2 1/1 Running 0 3m57s
producer-3 1/1 Running 0 3m51s
producer-4 1/1 Running 0 3m49s
producer-5 1/1 Running 0 3m47s
producer-6 0/1 Terminating 1 3m38s
producer-7 1/1 Running 0 5s
producer-8 1/1 Running 0 20s
producer-9 1/1 Running 0 23s
(base) welcome@Traianos-MacBook-Pro eks-deploy % kubectl get pods -n ragnarok | egrep producer
producer-0 1/1 Running 0 4m8s
producer-1 1/1 Running 0 4m6s
producer-2 1/1 Running 0 4m3s
producer-3 1/1 Running 0 3m57s
producer-4 1/1 Running 0 3m55s
producer-5 0/1 Terminating 0 3m53s
producer-6 1/1 Running 0 4s
producer-7 1/1 Running 0 11s
producer-8 1/1 Running 0 26s
producer-9 1/1 Running 0 29s
uj5u.com熱心網友回復:
正如檔案所指出的,并行 pod 管理僅在擴展操作中有效。This option only affects the behavior for scaling operations. Updates are not affected.
kubectl scale statefulset producer --replicas=0 -n ragnarok
也許你可以嘗試類似的
東西
kubectl scale statefulset producer --replicas=10 -n ragnarok
根據檔案,所有 pod 都應該通過使用 Parallel 策略擴展它們來洗掉和創建。
參考:https ://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#parallel-pod-management
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/430876.html
標籤:Kubernetes Kubernetes-statefulset
