博客园  :: 首页  :: 管理

还是先说明一下当前k8s集群中 deployment , rs  , pods 的情况

[root@k8s-master ~]# kubectl get deploy
NAME           READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deploy   3/3     3            3           25h
[root@k8s-master ~]# kubectl get rs
NAME                      DESIRED   CURRENT   READY   AGE
nginx-deploy-754898b577   3         3         3       25h
nginx-deploy-78d8bf4fd7   0         0         0       25h
nginx-deploy-8d945596c    0         0         0       49m
[root@k8s-master ~]# kubectl get pods
NAME                            READY   STATUS    RESTARTS   AGE
nginx-deploy-754898b577-d6kmr   1/1     Running   0          36m
nginx-deploy-754898b577-qd25d   1/1     Running   0          36m
nginx-deploy-754898b577-sk9pc   1/1     Running   0          36m

先将deployment中的pod扩容到6个,使用edit命令是可以的

今天笔者将使用另外一种方式,就是基于命令的方式扩容,缩容效果也是一样的,只是改一下数字即可

[root@k8s-master qq-5201351]# kubectl scale --replicas=6 deploy nginx-deploy
deployment.apps/nginx-deploy scaled

再次观察deployment , rs , pods 相关的信息 ,都发生了相应的变化 

[root@k8s-master ~]# kubectl get deploy
NAME           READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deploy   6/6     6            6           25h
[root@k8s-master ~]# kubectl get rs
NAME                      DESIRED   CURRENT   READY   AGE
nginx-deploy-754898b577   6         6         6       25h
nginx-deploy-78d8bf4fd7   0         0         0       25h
nginx-deploy-8d945596c    0         0         0       51m
[root@k8s-master ~]# kubectl get pods
NAME                            READY   STATUS    RESTARTS   AGE
nginx-deploy-754898b577-2rnvs   1/1     Running   0          47s
nginx-deploy-754898b577-d6kmr   1/1     Running   0          37m
nginx-deploy-754898b577-hndjz   1/1     Running   0          47s
nginx-deploy-754898b577-mrt77   1/1     Running   0          47s
nginx-deploy-754898b577-qd25d   1/1     Running   0          37m
nginx-deploy-754898b577-sk9pc   1/1     Running   0          37m
[root@k8s-master ~]#

由于每次对 pod template 中的信息发生修改后,都会触发更新 deployment 操作,那么此时如果频繁修改信息,就会产生多次更新

而实际上只需要执行最后一次更新即可,当出现此类情况时我们就可以暂停 deployment 的 rollout

通过 kubectl rollout pause deployment <name> 就可以实现暂停,直到你下次恢复后才会继续进行滚动更新

如果我们再恢复 rollout,通过命令 kubectl rollout deploy <name>

恢复后,我们再次查看 rs 和 po 信息,我们可以看到就开始进行滚动更新操作了

如下记录一下核心的操作,先是暂停 deployment 的 rollout

[root@k8s-master ~]# kubectl rollout pause deploy nginx-deploy
deployment.apps/nginx-deploy paused

此时再修改deployment,如修改image的版本或者资源限制等,保存后,就不会立即更新了

更新后,我们也可以通过如下的命令,查看历史版本,即指定版本的更新的内容

kubectl rollout history deploy nginx-deploy

kubectl rollout history deploy nginx-deploy --revision=6

最后,我们恢复deployment 的 rollout

[root@k8s-master ~]# kubectl rollout history deploy nginx-deploy
deployment.apps/nginx-deploy

一恢复,就会立即开始,暂停后做的所有更新,生成新的版本

 

 

 

尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/17718704.html