1. 程式人生 > 其它 >|NO.Z.00144|——————————|CloudNative|——|KuberNetes&資源排程.V14|-------------------------------------------------------|statefulset.v06|更新.V03|分段更新|

|NO.Z.00144|——————————|CloudNative|——|KuberNetes&資源排程.V14|-------------------------------------------------------|statefulset.v06|更新.V03|分段更新|



[CloudNative:KuberNetes&資源排程.V14]                                                               [Applications.KuberNetes] [StatefulSet應用|容器中匯出映象匯入映象StatefulSet擴容縮容StatefulSet建立pod縮減pod的流程|] [StatefulSet更新策略|StatefulSet灰度釋出|StatefulSet級聯刪除和非級聯刪除|]








一、StatefulSet分段更新:StatefulSet分段更新架構

二、StatefulSet分段更新說明
### --- StatefulSet分段更新說明

~~~     假設我們啟動了5個Pod
~~~     假設Partition設定為2,那麼他就只會更新web-2,web-3,web-4,而web-0和web-1他就不會更新
~~~     這個就可以實現灰度釋出,先更新一部分,切一部分流量過來,看看效果。等待效驗沒有問題,把這個partition捨得再小一點,最終實現我們的預期。
~~~     若是partition為0的話,它不更新小於0的,沒有小於0的,說明他就全部更新。
### --- StatefulSet分段更新實驗

~~~     partition: 0 :在使用StatefulSet的時候我們啟動了5個副本,
~~~     而把這個partition設定為3,它就會更新大於3的這個pod,不大於3的他就不更新。
~~~     所以說可以利用這個機制來實現簡單的分段更新灰度釋出。
三、StatefulSet分段更新partition資源準備
### --- 更改partition引數

[root@k8s-master01 ~]# kubectl edit sts web
spec:
  podManagementPolicy: OrderedReady
  replicas: 4                           // 副本數量設定為4個,
  updateStrategy:
    type: RollingUpdate
    rollingUpdate:
       partition: 2                     // 保留小於2的pod不更新。
### --- 檢視啟動的所有pod

[root@k8s-master01 ~]# kubectl get po   // 所有pod全部或啟動
NAME    READY   STATUS    RESTARTS   AGE
web-0   1/1     Running   0          16m
web-1   1/1     Running   0          15m
web-2   1/1     Running   0          20m
web-3   1/1     Running   0          18s 
四、新增觸發條件,觸發更新
### --- 新增更新條件觸發更新

[root@k8s-master01 ~]# kubectl edit sts web                 // 把它的版本設定為1.15.2
    spec:
      containers:
      - image: nginx:1.15.2 
### --- 檢視更新後鏡像的版本

[root@k8s-master01 ~]# kubectl get po -oyaml |grep image    // 檢視映象更新結果,更新的是web-2和web-3,而web-0和web-1是不會更新的。
              f:image: {}
              f:imagePullPolicy: {}
    - image: nginx:1.15.3
      imagePullPolicy: IfNotPresent
      image: nginx:1.15.3
      imageID: docker-pullable://nginx@sha256:24a0c4b4a4c0eb97a1aabb8e29f18e917d05abfe1b7a7c07857230879ce7d3d3
              f:image: {}
              f:imagePullPolicy: {}
    - image: nginx:1.15.3
      imagePullPolicy: IfNotPresent
      image: nginx:1.15.3
      imageID: docker-pullable://nginx@sha256:24a0c4b4a4c0eb97a1aabb8e29f18e917d05abfe1b7a7c07857230879ce7d3d3
              f:image: {}
              f:imagePullPolicy: {}
    - image: nginx:1.15.2
      imagePullPolicy: IfNotPresent
    - image: nginx:1.15.2
      imageID: ""
              f:image: {}
              f:imagePullPolicy: {}
    - image: nginx:1.15.2
      imagePullPolicy: IfNotPresent
      image: nginx:1.15.2
      imageID: docker-pullable://nginx@sha256:d85914d547a6c92faa39ce7058bd7529baacab7e0cd4255442b04577c4d1f424 
五、檢視更新流程
### --- 檢視更新流程

[root@k8s-master01 ~]# kubectl get po -l app=nginx -w
NAME    READY   STATUS    RESTARTS   AGE
web-3   1/1     Terminating   0          3m33s
web-3   0/1     Pending       0          0s
web-3   0/1     ContainerCreating   0          1s
web-3   1/1     Running             0          3s
web-2   1/1     Terminating         0          23m
web-2   0/1     Pending             0          0s
web-2   0/1     ContainerCreating   0          0s
web-2   1/1     Running             0          53s








===============================END===============================


Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart                                                                                                                                                    ——W.S.Landor



來自為知筆記(Wiz)