1)升级
滚动升级:先创建容器,成功运行后将已打标的旧容器删除,以此类推平滑的从旧版本更新到新版本完成升级。
[root@k8s-master tomcat-java-demo-master]# kubectl create deployment web --image=nginx --dry-run -o yaml > web.yaml
[root@k8s-master tomcat-java-demo-master]# vim web.yaml
启动容器并查看pod
[root@k8s-master tomcat-java-demo-master]# kubectl apply -f web.yaml
deployment.apps/web created
[root@k8s-master tomcat-java-demo-master]# kubectl get pods
暴露端口后查看外部链接端口
[root@k8s-master tomcat-java-demo-master]# kubectl expose deployment web --port=80 --target-port=8080 --name=web --type=NodePort
[root@k8s-master tomcat-java-demo-master]# kubectl get pods,svc
360/Firefox浏览器中验证http://NodeIP:Port
升级镜像并查看升级状态
[root@k8s-master tomcat-java-demo-master]# kubectl set image deployment web java=nginx
[root@k8s-master tomcat-java-demo-master]# kubectl rollout status deployment web
deployment "web" successfully rolled out
修改svc中的端口号,否则会报错;将其中的端口将8080改为80
[root@k8s-master tomcat-java-demo-master]# kubectl edit svc/web
service/web edited
升级镜像后web验证:
2)回滚
[root@k8s-master tomcat-java-demo-master]# kubectl rollout history deployment web
deployment.apps/web
REVISION CHANGE-CAUSE
1 <none>
2 <none>
[root@k8s-master tomcat-java-demo-master]# kubectl rollout undo deployment web
deployment.apps/web rolled back
[root@k8s-master tomcat-java-demo-master]# kubectl get pods
访问失败,则需要修改svc中的端口号将80改为8080
[root@k8s-master tomcat-java-demo-master]# kubectl edit svc/web
service/web edited
#指定版本
[root@k8s-master tomcat-java-demo-master]# kubectl rollout undo deployment web --revision=2
3)扩容/缩容
扩容先修改yaml文件中的replicas值,再apply;也可以使用下面的命令直接执行
[root@k8s-master tomcat-java-demo-master]# kubectl scale deployment web --replicas=5
deployment.apps/web scaled
[root@k8s-master tomcat-java-demo-master]# kubectl get pods
缩容方法与扩容相似,只需要减少容器副本数即可。
[root@k8s-master tomcat-java-demo-master]# kubectl scale deployment web --replicas=2
deployment.apps/web scaled
[root@k8s-master tomcat-java-demo-master]# kubectl get podss
4)删除
删除deployment,则直接清除资源;而删除Pod则无法成功删除资源,因为deloyment会保证副本数,删除一个Pod后会接着拉取一个Pod,以保证副本数。
[root@k8s-master tomcat-java-demo-master]# kubectl delete deployment web
deployment.apps "web" deleted
[root@k8s-master tomcat-java-demo-master]# kubectl delete svc web
service "web" deleted