码迷,mamicode.com
首页 > 其他好文 > 详细

K8S 之 Deployment声明式地升级应用

时间:2020-05-13 09:40:26      阅读:95      评论:0      收藏:0      [点我收藏+]

标签:直接   change   nodejs   tin   replica   select   images   nat   data   

作用:通过Deployment声明式平滑升级POD

一、创建Deployment文件

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: kubia
  namespace: test
spec:
  replicas: 3
  template:
    metadata:
      name: kubia
      labels:
        app: kubia
    spec:
      containers:
        - name: nodejs
          image: luksa/kubia:v1       #镜像为v1版本

二、创建service提供负载服务

apiVersion: v1
kind: Service
metadata:
  name: kubia
  namespace: test
spec:
  ports:
    - name: http
      port: 80
      targetPort: 8080
  selector:
    app: kubia              #标签匹配到kubia

三、创建delplyment与service

[root@test-nodes1 k8s-yaml-file]# kubectl create -f kubia-deployment-v1.yaml --record
deployment.apps/kubia created
[root@test-nodes1 k8s-yaml-file]# kubectl get all -n test
NAME                         READY   STATUS    RESTARTS   AGE
pod/kubia-66b4657d7b-77t4k   1/1     Running   0          9m5s
pod/kubia-66b4657d7b-ggdft   1/1     Running   0          9m5s
pod/kubia-66b4657d7b-qtckn   1/1     Running   0          9m5s

NAME                    READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/kubia   3/3     3            3           9m6s

NAME                               DESIRED   CURRENT   READY   AGE
replicaset.apps/kubia-66b4657d7b   3         3         3       9m5s

四、采用deployment对pod进行升级(变更POD版本)

[root@test-nodes1 k8s-yaml-file]# kubectl set image deployment kubia nodejs=luksa/kubia:v2 -n test
deployment.extensions/kubia image updated

[root@test-nodes1 k8s-yaml-file]# kubectl get all -n test
NAME                         READY   STATUS        RESTARTS   AGE
pod/kubia-66b4657d7b-77t4k   0/1     Terminating   0          16m    #终止
pod/kubia-66b4657d7b-ggdft   1/1     Terminating   0          16m     #终止
pod/kubia-66b4657d7b-qtckn   1/1     Terminating   0          16m    #终止
pod/kubia-75974f96b5-b7rhd   1/1     Running       0          27s
pod/kubia-75974f96b5-q4txq   1/1     Running       0          34s
pod/kubia-75974f96b5-tdpbf   1/1     Running       0          43s

NAME            TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
service/kubia   ClusterIP   192.168.253.59   <none>        80/TCP    4m26s

NAME                    READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/kubia   3/3     3            3           16m

NAME                               DESIRED   CURRENT   READY   AGE
replicaset.apps/kubia-66b4657d7b   0         0         0       16m
replicaset.apps/kubia-75974f96b5   3         3         3       43s

[root@test-nodes1 k8s-yaml-file]# kubectl get deployment kubia -o wide -n test
NAME    READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS   IMAGES           SELECTOR
kubia   3/3     3            3           20m   nodejs       luksa/kubia:v2   app=kubia

四、deployment回滚升级(当升级失败时)

$kubectl rollout undo deployment kubia -n test

提示:undo命令也可以在滚动升级过程中运行,并直接停止滚动升级。
在升级过程中已创建的pod会被删除,并被老版本的pod替代。

五、查看deployment滚动升级历史

[root@test-nodes1 k8s-yaml-file]# kubectl rollout history deployment kubia -n test
deployment.extensions/kubia 
REVISION  CHANGE-CAUSE
1         kubectl create --filename=kubia-deployment-v1.yaml --record=true
3         kubectl create --filename=kubia-deployment-v1.yaml --record=true
4         kubectl create --filename=kubia-deployment-v1.yaml --record=true

六、将deployment 回滚到相应的版本(如版本1)

[root@test-nodes1 k8s-yaml-file]# kubectl rollout undo deployment kubia --to-revision=1 -n test
deployment.extensions/kubia rolled back
[root@test-nodes1 k8s-yaml-file]# kubectl get deployment kubia -o wide -n test
NAME    READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS   IMAGES           SELECTOR
kubia   3/3     3            3           14m   nodejs       luksa/kubia:v1   app=kubia

K8S 之 Deployment声明式地升级应用

标签:直接   change   nodejs   tin   replica   select   images   nat   data   

原文地址:https://blog.51cto.com/12965094/2494715

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!