[英]What is the expected behavior of running multiple `kubectl rollout restart` commands simultaneously?
上下文:我們有多個進程正在監視相同的功能標志以確定是否需要重啟,並嘗試確定我們是否需要確保只有一個進程調用kubectl rollout restart
。
假設n
進程在同一部署上同時調用kubectl rollout restart
, n > 3
。 預計會發生以下哪些行為?
我四處搜索但沒有找到有關此行為的文檔,因此非常感謝您提供指針。
我沒有找到解釋 Kube.netes 將如何按照您的問題提出的行為的官方文檔。
但是,我編寫了一個腳本,它將並行生成 5 rollout restart 命令,並使用下面的 deployment.yaml 進行測試,其中 rollingUpdate 作為策略,maxSurge = maxUnavailable = 1。
部署.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: webapp1
spec:
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
type: RollingUpdate
replicas: 10
selector:
matchLabels:
app: webapp1
template:
metadata:
labels:
app: webapp1
spec:
containers:
- name: webapp1
image: katacoda/docker-http-server:latest
ports:
- containerPort: 80
腳本.sh
for var in 1..5; do
kubectl rollout restart deployment webapp1 > /dev/null 2>&1 &
done
然后執行腳本並觀察行為
. script.sh; watch -n .5 kubectl get po
watch 命令顯示,Kube.netes 按照 deployment.yaml 的命令維護了所需的 state。 在任何時候,Running state 中的 pod 都少於 9 個。屏幕截圖間隔幾秒鍾
因此,從這個實驗中,我推斷無論發生多少次並行 rollout-restarts,Kube.netes controller 管理器都足夠聰明,仍然可以保持所需的 state。
因此,預期的行為將如您的清單中所述。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.