更改副本会在暂停部署期间立即创建/删除POD,但kubernetes官方文档中没有指定
当我阅读kubernetes官方文档时,我发现我可以在暂停和恢复之间应用多个修复程序,而不会触发不必要的展开。更改副本会在暂停部署期间立即创建/删除POD,但kubernetes官方文档中没有指定,kubernetes,Kubernetes,当我阅读kubernetes官方文档时,我发现我可以在暂停和恢复之间应用多个修复程序,而不会触发不必要的展开。 现在,当我只更改部署的映像时,它可以正常工作,但当我更改部署清单中的副本数量并应用该数量时,pod会根据副本数量立即创建/删除,即使部署处于暂停状态 现在,我的问题是,为什么会这样?它不允许在暂停部署期间更改副本吗?还是只允许更改图像?文档没有指定它 另一件事是,如果我更改了副本的数量和映像,则在暂停部署期间仅应用副本,并使用上一个映像(而不是当前映像)创建POD 所使用的部署清单文件
现在,当我只更改部署的映像时,它可以正常工作,但当我更改部署清单中的副本数量并应用该数量时,pod会根据副本数量立即创建/删除,即使部署处于暂停状态 现在,我的问题是,为什么会这样?它不允许在暂停部署期间更改副本吗?还是只允许更改图像?文档没有指定它 另一件事是,如果我更改了副本的数量和映像,则在暂停部署期间仅应用副本,并使用上一个映像(而不是当前映像)创建POD 所使用的部署清单文件为:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.16.1
ports:
- containerPort: 80
更新的问题(提供了全部细节)
发生了什么事
当我读库伯内特官方文件的时候。我暂停了部署,并在部署期间更改了部署清单文件中副本的数量。之后,当我使用kubectl apply-f deployment.yaml应用这些更改时,根据立即创建/删除的POD(即使在暂停部署状态下)的新副本数量,这些POD也与以前的映像一起出现
首先,我使用命令kubectl apply-f deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.1
ports:
- containerPort: 80
之后,我打开了两个终端,使用以下命令监视POD和replicaset:
kubectl get pods -w
kubectl get rs -w
之后,我使用kubectl卷展栏pause deployment/nginx deployment
命令暂停了部署
kubectl rollout pause ...
然后我更改清单,如下所示:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 5 # <------ here changed the number of replicas
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.16.1 # <---- here changed the image
ports:
- containerPort: 80
我不认为这是个问题。我相信这是预期的行为
我会尽力解释我为什么这么认为
暂停功能是kubectl卷展栏
命令的一部分
kubectl rollout pause ...
它用于暂停滚动更新中的特定部署
但滚动更新实际上是什么?让我们试着定义它。
在这方面,我们可以阅读:
滚动更新允许部署的更新以零进行
通过使用新实例增量更新Pods实例实现停机
因此,我们可以看到,滚动更新被用于应用更改,而停机时间为零。
这包括对图像版本、容器限制等的更改,基本上是与应用程序运行和行为有关的任何更改
现在,副本数量的变化是否会影响正在运行的应用程序?它会改变它的行为方式吗?不它仅添加/删除同一应用程序的副本。用户仍然可以使用暂停部署之前可用的相同版本。未应用任何更改
恢复部署后,将应用暂停后提交的所有更改
总之,我相信这是预期的行为,因为副本数量的更改不会改变实际应用程序,同时实际更新确实会暂停
如果您仍然不相信,我建议您在上打开一个问题,并直接询问开发人员。@SahadatHossain这样做吗?@WytrzymałyWiktor感谢您的支持comment@Matt谢谢你的回答,我明白你的意思了。我打开了一个问题,让我们看看他们怎么说!在此处粘贴该问题的链接,供其他可能对@SahadatHossain主题感兴趣的人将来参考