繁体   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