簡體   English   中英

同時運行多個“kubectl rollout restart”命令的預期行為是什么?

[英]What is the expected behavior of running multiple `kubectl rollout restart` commands simultaneously?

上下文:我們有多個進程正在監視相同的功能標志以確定是否需要重啟,並嘗試確定我們是否需要確保只有一個進程調用kubectl rollout restart

假設n進程在同一部署上同時調用kubectl rollout restartn > 3 預計會發生以下哪些行為?

  1. 由於重疊重啟導致不同的 pod 被刪除,部署完全停止。
  2. 所有重新啟動最終都會運行,但它們是串行運行的。
  3. 一定數量的重新啟動 m,其中 m < n 將連續運行。
  4. 別的東西。

我四處搜索但沒有找到有關此行為的文檔,因此非常感謝您提供指針。

我沒有找到解釋 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM