gpt4 book ai didi

kubernetes - 如果部署中的副本数为 1,并且部署不好,则无论如何都会进行部署,我可以更改此行为吗?

转载 作者:行者123 更新时间:2023-12-01 11:25:38 25 4
gpt4 key购买 nike

我在玩这个:http://kubernetes.io/docs/user-guide/deployments/在我的基础设施中。我有一些需要副本的部署 - 但我有几个部署中我只想要一个副本 - 但是有一种简单的方法来更改镜像版本是非常好的并且是必需的。

因此,我试图看看如果您在只有 1 个副本的部署上运行损坏的更新会发生什么 - 如果我们执行以下操作(来自上面的文档):

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80

如果我们然后运行 ​​ kubectl create -f nginx-deployment.yaml
我们看到 3 个健康运行的副本。

如果我们将上述文件从 replicas: 3 更改为至 replicas: 1并运行应用命令: kubectl apply -f nginx-deployment.yaml - 我们看到 1 个健康的复制品。

现在 - 如果我们改变 image: nginx:1.7.9类似于 image: nginx:1.7.9broken - 并运行 kubectl apply -f nginx-deployment.yaml我们看到这样的事情:
$ kubectl get rs
NAME DESIRED CURRENT AGE
nginx-deployment-2035384211 0 0 11m <- this is the first one we created with 3 replicas
nginx-deployment-3257237551 1 1 8m <- this is the broken one we made with 1 replica and a bad image name
nginx-deployment-3412426736 0 0 10m <- this is the 2nd one we created with 1 replica

$ kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-deployment-3257237551-od22j 0/1 ImagePullBackOff 0 19s

那么这里似乎发生的事情是部署已经运行,并创建了一个新的损坏的 pod,并删除了旧的 pod - 上面链接的文档告诉我不应该发生的事情?

我的问题是 - 是否有一些我可以更改的设置,以便即使有 1 个副本,部署仍将按预期工作,即如果部署创建的新 Pod 不好,它会保持旧 Pod 运行,或者还有什么我应该做的更新单个 Pod 的图像时在做什么?

注意 - 这一切似乎在 2+ 多个副本上都可以正常工作,我尝试将 maxSurge 值设置为 5 以查看是否有所不同,但没有。

最佳答案

相信你想设置maxUnavailable (默认为 1)到 0。这应该可以防止 Kubernetes 在启动一个健康的 pod 之前删除任何现有的 pod。 maxSurge only 指定在滚动升级期间您愿意看到部署的超过所需数量的 Pod 数量。由于您仅尝试在第三次部署中推出单个更新的 pod,maxSurge 的增加超过默认值 1 没有任何区别。

另见 Rolling Update Deployment文档中的部分。

关于kubernetes - 如果部署中的副本数为 1,并且部署不好,则无论如何都会进行部署,我可以更改此行为吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37435540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com