[英]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.