运行 同时执行多个 `kubectl rollout restart` 命令的预期行为是什么?
What is the expected behavior of running multiple `kubectl rollout restart` commands simultaneously?
上下文:我们有多个进程正在监视同一个功能标志以确定是否需要重新启动,并试图确定我们是否需要确保恰好有一个进程调用 kubectl rollout restart
.
假设 n
个进程在同一部署上同时调用 kubectl rollout restart
,用于 n > 3
。
预计会发生以下哪些行为?
- 部署完全停止,因为重叠的重新启动导致不同的 pods 被删除。
- 所有重新启动最终 运行,但它们 运行 连续。
- 重启 m 次,其中 m < n 将 运行 连续。
- 其他。
我四处搜索但没有找到关于此行为的文档,因此非常感谢您的指点。
我没有找到解释 Kubernetes 将如何按照您的问题呈现的行为的官方文档。
但是,我编写了一个脚本,它将并行生成 5 rollout 重启命令,并使用下面的 deployment.yaml 进行测试,使用 rollingUpdate 作为策略和 maxSurge = maxUnavailable = 1。
deployment.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
script.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 命令显示 Kubernetes 保持了 deployment.yaml 命令所要求的状态。从来没有少于 9 pods 处于 运行 状态。屏幕截图相隔几秒钟
因此,从这个实验中,我推断无论发生多少个并行 rollout-restarts,Kubernetes 控制器管理器都足够聪明,仍然可以保持所需的状态。
因此,预期的行为将如清单中所述。
上下文:我们有多个进程正在监视同一个功能标志以确定是否需要重新启动,并试图确定我们是否需要确保恰好有一个进程调用 kubectl rollout restart
.
假设 n
个进程在同一部署上同时调用 kubectl rollout restart
,用于 n > 3
。
预计会发生以下哪些行为?
- 部署完全停止,因为重叠的重新启动导致不同的 pods 被删除。
- 所有重新启动最终 运行,但它们 运行 连续。
- 重启 m 次,其中 m < n 将 运行 连续。
- 其他。
我四处搜索但没有找到关于此行为的文档,因此非常感谢您的指点。
我没有找到解释 Kubernetes 将如何按照您的问题呈现的行为的官方文档。
但是,我编写了一个脚本,它将并行生成 5 rollout 重启命令,并使用下面的 deployment.yaml 进行测试,使用 rollingUpdate 作为策略和 maxSurge = maxUnavailable = 1。
deployment.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
script.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 命令显示 Kubernetes 保持了 deployment.yaml 命令所要求的状态。从来没有少于 9 pods 处于 运行 状态。屏幕截图相隔几秒钟
因此,从这个实验中,我推断无论发生多少个并行 rollout-restarts,Kubernetes 控制器管理器都足够聪明,仍然可以保持所需的状态。
因此,预期的行为将如清单中所述。