IaM*_*CuP 3 google-cloud-platform kubernetes
我正在玩这个: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
Run Code Online (Sandbox Code Playgroud)
如果我们再运行 kubectl create -f nginx-deployment.yaml
我们看到3个健康运行的复制品.
如果我们然后将上面的文件更改replicas: 3
为replicas: 1
并运行apply命令: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
Run Code Online (Sandbox Code Playgroud)
所以这里似乎发生的事情是部署已经运行,并创建了一个新的破坏的pod,并且破坏了旧的 - 上面链接的文档告诉我不应该发生的事情?
我的问题是 - 是否有一些设置我可以改变,以便即使有1个副本,部署仍然可以按预期工作,即如果部署创建的新pod是坏的,它将保持旧pod运行,或者是否存在在更新单个pod的图像时我应该做些什么?
注意 - 这一切似乎在2 +多个副本上正常工作,我试图将maxSurge值设置为5,看看是否有所作为,但事实并非如此.
我相信你想将maxUnavailable(默认值为1)设置为0.这可以防止Kubernetes在使健康状态升级之前删除任何现有的pod.maxSurge
仅指定在滚动升级期间您愿意看到多少个超过所需计数的pod.由于您只尝试在第三次部署中推出单个更新的pod,因此maxSurge
超出默认值1 的增加没有任何区别.
另请参阅文档中的滚动更新部署部分.
归档时间: |
|
查看次数: |
2525 次 |
最近记录: |