kubernetes pod升级与回滚扩容与缩容

运行一个容器:

apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    deployment.kubernetes.io/revision: "1"
  creationTimestamp: "2020-09-19T02:41:11Z"
  generation: 1
  labels:
    app: nginx
  name: nginx
  namespace: default
spec:
  progressDeadlineSeconds: 600
  replicas: 3              # 副本数
  revisionHistoryLimit: 10 # 历史记录保留的个数
  selector:
    matchLabels:
      app: nginx
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: nginx
    spec:
      containers:
      - image: nginx:1.15.4
        imagePullPolicy: IfNotPresent
        name: nginx
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30
# 保存为deployment.yaml 并创建nginx pod:
[root@k8s-master01 yaml]# kubectl create -f  deployment-nginx.yaml
deployment.apps/nginx created


#检查:
[root@k8s-master01 yaml]# kubectl get pod
NAME                     READY   STATUS    RESTARTS   AGE
nginx-6cdd5dd489-d7kll   1/1     Running   0          17s
nginx-6cdd5dd489-dblw2   1/1     Running   0          17s
nginx-6cdd5dd489-zc8fl   1/1     Running   0          17s



#检查nginx版本:
[root@k8s-master01 yaml]# kubectl exec -it nginx-6cdd5dd489-d7kll -- sh
# nginx -v
nginx version: nginx/1.15.4

pod升级与回滚

#升级:
root@k8s-master01[11:10:24]:~/yaml$ kubectl set image deploy nginx nginx=nginx:1.15.5 --record=true
deployment.apps/nginx image updated

#检查升级过程:
kubectl describe  pod nginx-7c4b6d99fd-csh5s

Events:
  Type    Reason     Age   From               Message
  ----    ------     ----  ----               -------
  Normal  Scheduled  76s   default-scheduler  Successfully assigned default/nginx-df9789dc8-6h7p7 to k8s-node02
  Normal  Pulling    76s   kubelet            Pulling image "nginx:1.15.5"
  Normal  Pulled     51s   kubelet            Successfully pulled image "nginx:1.15.5" in 24.828362289s
  Normal  Created    51s   kubelet            Created container nginx
  Normal  Started    51s   kubelet            Started container nginx



#检查现在的版本:
[root@k8s-master01 yaml]# kubectl exec -it nginx-df9789dc8-trtwq -- sh 


# nginx -v
nginx version: nginx/1.15.5


#检查更新过程
kubectl rollout status deploy nginx

[root@k8s-master01 yaml]# kubectl rollout status deploy nginx
Waiting for deployment "nginx" rollout to finish: 1 out of 2 new replicas have been updated...
Waiting for deployment "nginx" rollout to finish: 1 out of 2 new replicas have been updated...
Waiting for deployment "nginx" rollout to finish: 1 out of 2 new replicas have been updated...
Waiting for deployment "nginx" rollout to finish: 1 old replicas are pending termination...
Waiting for deployment "nginx" rollout to finish: 1 old replicas are pending termination...
deployment "nginx" successfully rolled out

[root@k8s-master01 yaml]# kubectl exec -it nginx-6cdd5dd489-bsb7f -- sh
# nginx -v
nginx version: nginx/1.15.5

#为了实验效果 在升级一次
[root@k8s-master01 yaml]# kubectl set image deploy nginx nginx=nginx:1.15.6 --record=true

[root@k8s-master01 yaml]# kubectl get pod
NAME                     READY   STATUS    RESTARTS   AGE
nginx-5455fbc855-64brv   1/1     Running   0          2m48s
nginx-5455fbc855-nblks   1/1     Running   0          3m16s
nginx-5455fbc855-ns4kz   1/1     Running   0          2m47s
[root@k8s-master01 yaml]# kubectl exec -it nginx-5455fbc855-64brv -- sh
# nginx -v
nginx version: nginx/1.15.6


#回滚:
1. 查看历史更新
kubectl rollout history deploy nginx

[root@k8s-master01 yaml]# kubectl rollout history deploy nginx
deployment.apps/nginx 
REVISION  CHANGE-CAUSE
1         <none>
2         kubectl set image deploy nginx nginx=nginx:1.15.5 --record=true
3         kubectl set image deploy nginx nginx=nginx:1.15.6 --record=true

2. 回滚到上一个版本[kubectl rollout undo deploy {name} ]
[root@k8s-master01 yaml]# kubectl rollout undo deploy nginx
deployment.apps/nginx rolled back

3. 检查回滚状态:
[root@k8s-master01 yaml]# kubectl get pod
NAME                     READY   STATUS    RESTARTS   AGE
nginx-6cdd5dd489-bzdgd   1/1     Running   0          21s
nginx-6cdd5dd489-cwxv5   1/1     Running   0          22s
nginx-6cdd5dd489-xb6xj   1/1     Running   0          20s

3.1 进入容器检查:
[root@k8s-master01 yaml]# kubectl exec -it nginx-6cdd5dd489-bzdgd -- sh
# nginx -v
nginx version: nginx/1.15.4


4. 回滚到指定版本
[root@k8s-master01 yaml]# kubectl rollout history deploy nginx
deployment.apps/nginx 
REVISION  CHANGE-CAUSE
1       kubectl set image deploy nginx nginx=nginx:1.15.5 --record=true
2       kubectl set image deploy nginx nginx=nginx:1.15.6 --record=true


# 查看指定版本信息
kubectl rollout history deploy nginx --revision=1


#回滚到指定版本
 kubectl rollout undo deploy nginx --to-revision=1


 [root@k8s-master01 yaml]# kubectl exec -it nginx-6cdd5dd489-q44cr -- sh
 # nginx -v 
 nginx version: nginx/1.15.5

pod扩容,缩容

[root@k8s-master01 yaml]# kubectl get pod
NAME                    READY   STATUS    RESTARTS   AGE
nginx-df9789dc8-gqk5j   1/1     Running   0          11m
nginx-df9789dc8-vhqkd   1/1     Running   0          11m


#修改资源:
[root@k8s-master01 yaml]# kubectl edit deploy nginx
deployment.apps/nginx edited

找到: replicas: 2 
改为: replicas: 3

#检查状态:
[root@k8s-master01 yaml]# kubectl get pod
NAME                    READY   STATUS    RESTARTS   AGE
nginx-df9789dc8-c47mc   1/1     Running   0          3s
nginx-df9789dc8-gqk5j   1/1     Running   0          11m
nginx-df9789dc8-vhqkd   1/1     Running   0          11m


#缩容就是继续把 replicas: 3 改为: replicas: 2即可:
[root@k8s-master01 yaml]# kubectl get pod
NAME                    READY   STATUS    RESTARTS   AGE
nginx-df9789dc8-gqk5j   1/1     Running   0          13m
nginx-df9789dc8-vhqkd   1/1     Running   0          13m
上一篇:Kubeadm构建高可用k8s集群 v1.21.2


下一篇:kubeadm安装k8s-1.18.18