kubernetes资源与对象入门-2

81 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 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个容器

图片.png 查看我们的service里面是否添加上了新增的

图片.png 怎么才能把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

已经有三个在删除了

图片.png

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

图片.png

检查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

图片.png