zoukankan      html  css  js  c++  java
  • 20--Deployment常规操作

    一、Deployment滚动更新

    1、更新配置清单

    # 滚动更新:先生成新pod,后删除旧pod
    [root@k8s-m-01 k8s]# vim deploy-nginx.yml
    kind: Deployment
    apiVersion: apps/v1
    metadata:
      name: test1-deploy
    spec:
      selector:
        matchLabels:
          app: deployment
      template:
        metadata:
          labels:
            app: deployment
        spec:
          containers:
            - name: nginx
              image: nginx
              
    [root@k8s-m-01 k8s]# kubectl get pods
    NAME                               READY   STATUS    RESTARTS   AGE
    test1-deploy-549486578f-xntvw      1/1     Running   0          5m36s
    
    [root@k8s-m-01 k8s]# vim deploy-nginx.yml
    ... ...
          containers:
            - name: nginx
              image: nginx:1.18      #修改版本1.18
    
    [root@k8s-m-01 k8s]# kubectl apply -f deploy-nginx.yml 
    deployment.apps/test1-deploy unchanged
    
    [root@k8s-m-01 k8s]# kubectl get pods
    NAME                               READY   STATUS    RESTARTS   AGE
    test1-deploy-c7779f765-gxgp5       1/1     Running   0          8m13s
    

    2、设置镜像 kubectl set image

    [root@k8s-m-01 k8s]# kubectl set image deployment/test1-deploy nginx=nginx:latest
    
    [root@k8s-m-01 k8s]# kubectl set image deployment/test1-deploy nginx=nginx:latest
    deployment.apps/test1-deploy image updated
    
    [root@k8s-m-01 k8s]# kubectl get pods -o wide
    NAME                               READY   STATUS    RESTARTS   AGE   IP             NODE 
    test1-deploy-76684b764-htc9n       1/1     Running   0          26s   10.244.2.100   k8s-n-02   <none>           <none>     #名字不一样了,已更新
    

    3、打标签 kubectl patch

    [root@k8s-m-01 k8s]# kubectl patch deployments.apps test1-deploy -p '{"spec":{"template":{"spec":{"containers":[{"name":"nginx","image":"nginx:1.18"}]}}}}'
    deployment.apps/test1-deploy patched
    
    [root@k8s-m-01 k8s]# kubectl get pods -o wide
    NAME                               READY   STATUS        RESTARTS   AGE    IP             
    test1-deploy-76684b764-htc9n       0/1     Terminating   0          9m1s   10.244.2.100   k8s-n-02   <none>           <none>     #旧的即将删除
    test1-deploy-c7779f765-xsbf8       1/1     Running       0          24s    10.244.2.101   k8s-n-02   <none>           <none>
    
    

    4、修改资源 kubectl edit

    [root@k8s-m-01 k8s]# kubectl edit deployments.apps test1-deploy
    ... ...template:
        metadata:
          creationTimestamp: null
          labels:
            app: deployment
        spec:
          containers:
          - image: nginx:latest #修改成需要的版本
            imagePullPolicy: Always
            name: nginx
            resources: {}
            terminationMessagePath: /dev/termination-log
            terminationMessagePolicy: File
          dnsPolicy: ClusterFirst
    [root@k8s-m-01 k8s]# kubectl edit deployments.apps test1-deploy
    deployment.apps/test1-deploy edited
    
    [root@k8s-m-01 k8s]# kubectl get pods -o wide
    NAME                               READY   STATUS    RESTARTS   AGE     IP             
    test1-deploy-76684b764-zwmx2       1/1     Running   0          2m49s   10.244.2.102   k8s-n-02   <none>           <none>
    

    二、Deployment应用回滚

    1、查看更新的版本

    #为了实验清楚,先删掉
    [root@k8s-m-01 k8s]# kubectl delete -f /k8s/deploy-nginx.yml 
    deployment.apps "test1-deploy" deleted
    
    #再去创建,当前是1.18版本
    [root@k8s-m-01 k8s]# kubectl apply -f deploy-nginx.yml 
    deployment.apps/test1-deploy created
    
    #去更新版本
    [root@k8s-m-01 k8s]# kubectl patch deployments.apps test1-deploy -p '{"spec":{"template":{"spec":{"containers":[{"name":"nginx","image":"nginx:latest"}]}}}}'
    deployment.apps/test1-deploy patched
    
    #再进行更新
    [root@k8s-m-01 k8s]# kubectl patch deployments.apps test1-deploy -p '{"spec":{"template":{"spec":{"containers":[{"name":"nginx","image":"nginx:1.19"}]}}}}'
    deployment.apps/test1-deploy patched
    
    #查看更新的版本
    [root@k8s-m-01 k8s]# kubectl rollout history deployment test1-deploy
    deployment.apps/test1-deploy 
    REVISION  CHANGE-CAUSE
    1         <none>
    2         <none>
    3         <none>      #共3个版本
    

    2、根据版本回滚

    2种方式

    1、回滚到上一个版本
    [root@k8s-m-01 k8s]# kubectl rollout undo deployment test1-deploy
    deployment.apps/test1-deploy rolled back
    [root@k8s-m-01 k8s]# kubectl rollout history deployment test1-deploy
    deployment.apps/test1-deploy 
    REVISION  CHANGE-CAUSE
    1         <none>
    3         <none>
    4         <none> #回滚后,会变成上面的2版本,而重新生成一个4版本
    
    #再来回滚一次
    [root@k8s-m-01 k8s]# kubectl rollout undo deployment test1-deploy
    deployment.apps/test1-deploy rolled back
    [root@k8s-m-01 k8s]# kubectl rollout history deployment test1-deploy
    deployment.apps/test1-deploy 
    REVISION  CHANGE-CAUSE
    1         <none>
    4         <none>
    5         <none>
    
    2、回滚到指定版本
    [root@k8s-m-01 k8s]# kubectl rollout undo deployment test1-deploy --to-revision=1
    deployment.apps/test1-deploy rolled back
    
    [root@k8s-m-01 k8s]# kubectl rollout history deployment test1-deploy
    deployment.apps/test1-deploy 
    REVISION  CHANGE-CAUSE
    4         <none>
    5         <none>
    6         <none>	#6=1	 
    

    三、Deployment弹性扩容

    1、编辑资源

    [root@k8s-m-01 k8s]# kubectl edit deployments.apps test1-deploy
    ... ...spec:
      progressDeadlineSeconds: 600
      replicas: 1   #修改成2
      revisionHistoryLimit: 10
      selector:
        matchLabels:
          app: deployment
      strategy:
        rollingUpdate:
          maxSurge: 25%
          maxUnavailable: 25%
        type: RollingUpdate
    ... ...
    [root@k8s-m-01 k8s]# kubectl edit deployments.apps test1-deploy
    deployment.apps/test1-deploy edited
    
    [root@k8s-m-01 k8s]# kubectl get pods
    NAME                               READY   STATUS    RESTARTS 
    test1-deploy-776d6f99f5-87fvz      1/1     Running   0          3m59s
    test1-deploy-776d6f99f5-fjq5k      1/1     Running   0          36s  
    

    2、打标签

    [root@k8s-m-01 k8s]# kubectl patch deployments.apps test1-deploy -p '{"spec":{"replicas":1}}'
    deployment.apps/test1-deploy patched
    
    [root@k8s-m-01 k8s]# kubectl get pods
    NAME                               READY   STATUS    RESTARTS 
    test1-deploy-776d6f99f5-87fvz      1/1     Running   0          8m3s   #此时缩容成1个
    

    3、scale

    [root@k8s-m-01 k8s]# kubectl scale deployment test1-deploy --replicas=3
    deployment.apps/test1-deploy scaled
    [root@k8s-m-01 k8s]# kubectl get pods
    NAME                               READY   STATUS    RESTARTS 
    test1-deploy-776d6f99f5-669qf      1/1     Running   0          7s
    test1-deploy-776d6f99f5-87fvz      1/1     Running   0          10m
    test1-deploy-776d6f99f5-fg72r      1/1     Running   0          7s
    
  • 相关阅读:
    arcgis pro加载其他数据
    ArcGIS Pro运行Python脚本
    获得ArcGIS Pro的版本
    ArcGIS Pro使用键盘控制地图平移
    ArcGIS Pro添加注记工具
    ArcGIS Pro二次开发添加网络图层
    ArcGIS Pro放大缩小按钮
    ArcGIS Pro做一个矩形选择按钮
    ArcGIS Pro获得一个图层的样式
    ArcGIS Pro二次开发闪烁对象
  • 原文地址:https://www.cnblogs.com/caodan01/p/15309966.html
Copyright © 2011-2022 走看看