开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第9天,点击查看活动详情
3.3.Scale应用
方法1:1.命令扩容
[root@k8s-master /k8s/deploy]# kubectl scale deployment -n dev first-deploy --replicas=5
deployment.apps/first-deploy scaled
方法2:2.修改文件扩容
[root@k8s-master /k8s/deploy]# kubectl edit deployments.apps -n dev first-deploy
......
replicas: 3 #修改为我们想要的
.....
保存退出
deployment.apps/first-deploy edited
方法3:直接修改first-pod-deploy.yaml配置文件
replicas: 3
3.3.1.扩容
已多运行2个容器
查看我们的service里面是否添加上了新增的
怎么才能把IP显示完整
查看endpoints
[root@k8s-master /k8s/deploy]# kubectl get endpoints -n dev
NAME ENDPOINTS AGE
first-svc 10.19.1.12:80,10.19.1.13:80,10.19.3.10:80 + 2 more... 17m
#总结:创建一个service,也会创建一个endpoints(同名),它主要记录的后端是谁
#前端是service,后端是endpoints
[root@k8s-master /k8s/deploy]# kubectl describe endpoints first-svc -n dev
Name: first-svc
Namespace: dev
Labels: <none>
Annotations: endpoints.kubernetes.io/last-change-trigger-time: 2022-11-15T08:04:18Z
Subsets:
Addresses: 10.19.1.12,10.19.1.13,10.19.3.10,10.19.3.8,10.19.3.9
NotReadyAddresses: <none>
Ports:
Name Port Protocol
---- ---- --------
first-http 80 TCP
Events: <none>
3.3.2.缩容
方法1:1.命令扩容
[root@k8s-master /k8s/deploy]# kubectl scale deployment -n dev first-deploy --replicas=2
deployment.apps/first-deploy scaled
方法2:2.修改文件扩容
[root@k8s-master /k8s/deploy]# kubectl edit deployments.apps -n dev first-deploy #相当于之间打开yaml文件
......
replicas: 2 #修改为我们想要的
.....
保存退出
deployment.apps/first-deploy edited
方法3:直接修改first-pod-deploy.yaml配置文件
replicas: 3
已经有三个在删除了
3.4.滚动更新
所谓滚动更新,更新的是镜像,使用新的镜像逐步更新pod,回退也是一样的。但对于用户而言是无感知的
3.4.1.应用升级:nginx:latest 升级为nginx:1.21
#set image 设定容器的镜像属性,deploy/demoapp针对哪个部署的名字进行设定
#--record记录更新的变化详细内容,便于后续的回退
[root@k8s-master ~]# kubectl set image deployment first-deploy -n dev *=nginx:1.21 --record
deployment.apps/first-deploy image updated
[root@k8s-master ~]# kubectl describe deployments.apps -n dev first-deploy
检查rs
[root@k8s-master ~]# kubectl get rs -n dev
NAME DESIRED CURRENT READY AGE
first-deploy-598c44c757 0 0 0 18h
first-deploy-7cc884895 3 3 3 16h
nginx-6799fc88d8 3 3 3 41h
检查Pod
[root@k8s-master ~]# kubectl get pod -n dev
NAME READY STATUS RESTARTS AGE
first-deploy-7cc884895-49nwq 1/1 Running 0 16h
first-deploy-7cc884895-6zqsk 1/1 Running 0 16h
first-deploy-7cc884895-fzhh4 1/1 Running 0 16h
3.5.应用回滚
1.查看升级历史记录
[root@k8s-master ~]# kubectl rollout history deployment -n dev
deployment.apps/first-deploy
REVISION CHANGE-CAUSE
1 kubectl set image deployment first-deploy nginx=nginx:1.21 --namespace=dev --record=true
2 kubectl set image deployment first-deploy *=nginx:1.21 --namespace=dev --record=true
deployment.apps/nginx
REVISION CHANGE-CAUSE
1 <none>
2.回滚到指定的版本
[root@k8s-master ~]# kubectl rollout undo deployment -n dev first-deploy --to-revision=1
deployment.apps/first-deploy rolled back
查看pod和rs
[root@k8s-master ~]# kubectl get pod -n dev
[root@k8s-master ~]# kubectl get rs -n dev