一看必會系列:k8s 練習4 pod滾動升級

來源:本站原創 Kubernetes 超過244 views圍觀 0條評論

Pod滾動升級

rolling-update 可用在 滾動升級,回滾,POD重啟等操作

正式配置文件在最下面

[[email protected] redis_rolling]#  kubectl rolling-update redis-master-rc-v2 -f redis-master-rc-v4.yaml
Command "rolling-update" is deprecated, use "rollout" instead

第一階段
Created redis-master-rc-v4  #開始創建 redis-master-rc-v4
第二階段
Scaling up redis-master-rc-v4 from 0 to 4,  #將 redis-master-rc-v4 加到4個副本
scaling down redis-master-rc-v2 from 2 to 0  #將 redis-master-rc-v2 從2減到0
(keep 4 pods available, don’t exceed 5 pods)
第三階段
Scaling redis-master-rc-v4 up to 3  # redis-master-rc-v4 加到3
Scaling redis-master-rc-v2 down to 1 #V2 減到1
Scaling redis-master-rc-v4 up to 4  #V4 加到4
Scaling redis-master-rc-v2 down to 0 #V2 減到0
第4階段
Update succeeded.
Deleting old controller: redis-master-rc-v2 #更新成功刪除掉的rc-v2
Renaming redis-master-rc-v4 to redis-master-rc-v2  #將V4改名為V2
replicationcontroller/redis-master-rc-v2 rolling updated #升級完成
完成

驗證
[[email protected] ~]# kubectl get rc,pod
NAME                                       DESIRED   CURRENT   READY   AGE
replicationcontroller/redis-master-rc-v2   2         2         2       11m
#剛執行,第1-2階段,兩個RC同時存在
replicationcontroller/redis-master-rc-v4   3         3         3       50s

NAME                           READY   STATUS    RESTARTS   AGE
#剛執行,第1-2階段,兩個RC同時存在
pod/redis-master-rc-v3-69rjr   1/1     Running   0          12m
pod/redis-master-rc-v3-vhnbs   1/1     Running   0          12m
pod/redis-master-rc-v4-cp9h8   1/1     Running   0          50s
pod/redis-master-rc-v4-jfhcx   1/1     Running   0          50s
pod/redis-master-rc-v4-nqqkp   1/1     Running   0          50s

過段時間之后 #第3-4階段
[[email protected] ~]# kubectl get rc,pod
NAME                                       DESIRED   CURRENT   READY   AGE
#只剩一個了
replicationcontroller/redis-master-rc-v2   4         4         4       11m

NAME                           READY   STATUS      RESTARTS   AGE
只剩一個了
pod/redis-master-rc-v4-cp9h8   1/1     Running     0          14m
pod/redis-master-rc-v4-h5f6r   1/1     Running     0          13m
pod/redis-master-rc-v4-jfhcx   1/1     Running     0          14m
pod/redis-master-rc-v4-nqqkp   1/1     Running     0          14m
[[email protected] ~]# kubectl get rc,pod

使用命令進行 rolling-update 正常升級的結果是 原來的pod和rc會被替換掉,
新rc-v4會重命名為原來的rc-v2,保持服務正常

 

下面是直接用命令升級 kubectl rolling-update  現在的RC –image=要升級的鏡像
[[email protected] ~]# kubectl rolling-update redis-master-rc  –image=kubeguide/redis-master:1.0
Command "rolling-update" is deprecated, use "rollout" instead
Found existing update in progress (redis-master-rc-v2), resuming.
Continuing update with existing controller redis-master-rc-v2.
Scaling up redis-master-rc-v2 from 1 to 1, scaling down redis-master-rc from 1 to 0 (keep 1 pods available, don’t exceed 2 pods)
Scaling redis-master-rc down to 0
Update succeeded. Deleting redis-master-rc
replicationcontroller/redis-master-rc-v2 rolling updated to "redis-master-rc-v2"

驗證
[[email protected] yaml]# kubectl get rc,pod
NAME                                       DESIRED   CURRENT   READY   AGE

replicationcontroller/redis-master-rc-v2   1         1         1       19m 

NAME                           READY   STATUS    RESTARTS   AGE
pod/redis-master-rc-v2-2rc4x   1/1     Running   0          19m  #

[[email protected] yaml]# kubectl describe pod/redis-master-rc-v2-2rc4x
Name:               redis-master-rc-v2-2rc4x
Namespace:          default
Node:               k8s-node1/192.168.10.69
Labels:             deployment=4e423afb21f081b285503ab911a2c748
                    name=redis-master-lb
Containers:
  master:
    Image:          kubeguide/redis-master:1.0

Events:
  Type    Reason     Age   From                Message
  —-    ——     —-  —-                ——-
  Normal  Scheduled  28m   default-scheduler   Successfully assigned default/redis-master-rc-v2-2rc4x to k8s-node1
  Normal  Pulling    28m   kubelet, k8s-node1  pulling image "kubeguide/redis-master:1.0"
  Normal  Pulled     28m   kubelet, k8s-node1  Successfully pulled image "kubeguide/redis-master:1.0"
  Normal  Created    28m   kubelet, k8s-node1  Created container
  Normal  Started    28m   kubelet, k8s-node1  Started container
[[email protected] yaml]#

———–配置方式1------------
配置文件v2
redis-master-rc-v2.yaml
apiVersion: v1
kind: ReplicationController
metadata:
  name: redis-master-rc-v2  #升級的不能一樣
  labels:
    names: redis-master-lb-2   #升級的不能一樣
spec:
  replicas: 2
  selector:
    name: redis-master-lb-2 #升級的不能一樣
  template:
    metadata:
      labels:
        name: redis-master-lb-2  #升級的不能一樣
    spec:
     containers:
     – name: master
       image: kubeguide/redis-master:1.0  #升級的不能一樣
       ports:
       – containerPort: 6379
      
配置v4
redis-master-rc-v4.yaml
apiVersion: v1
kind: ReplicationController
metadata:
  name: redis-master-rc-v4  #升級的不能和v2一樣
  labels:
    names: redis-master-lb-4 #升級的不能和v2一樣
spec:
  replicas: 4
  selector:
    name: redis-master-lb-4 #升級的不能和v2一樣
  template:
    metadata:
      labels:
        name: redis-master-lb-4  #升級的不能和v2一樣
    spec:
     containers:
     – name: master
       image: kubeguide/redis-master:latest  #升級的不能和v2一樣
       ports:
       – containerPort: 6379

———–配置方式2------------
配置文件v2
redis-master-rc-v2.yaml
apiVersion: v1
kind: ReplicationController
metadata:
  name: redis-master-rc-v2  #升級的不能一樣
  labels:
    names: redis-master-lb  
    ver: v1                 #建rc的時候這個就要存在,否則后面升級會報錯
spec:
  replicas: 2
  selector:
    name: redis-master-lb
    ver: v1                #建rc的時候這個就要存在,否則后面升級會報錯

  template:
    metadata:
      labels:
        name: redis-master-lb-2
        ver: v1            #建rc的時候這個就要存在,否則后面升級會報錯

    spec:
     containers:
     – name: master
       image: kubeguide/redis-master:1.0  #升級的不能一樣
       ports:
       – containerPort: 6379
      
配置v4
redis-master-rc-v4.yaml
apiVersion: v1
kind: ReplicationController
metadata:
  name: redis-master-rc-v4 
  labels:
    names: redis-master-lb-4
    ver: v2                #這個原來的版本就要存在,本次要不一樣,否則升級會報錯
spec:
  replicas: 4
  selector:
    name: redis-master-lb
    ver: v2                #這個原來的版本就要存在,本次要不一樣,否則升級會報錯

  template:
    metadata:
      labels:
        name: redis-master-lb
        ver: v2                #這個原來的版本就要存在,本次要不一樣,否則升級會報錯
    spec:
     containers:
     – name: master
       image: kubeguide/redis-master:latest  #升級的不能和v2一樣
       ports:
       – containerPort: 6379

 

————-升級有誤 進行回滾 kubectl rolling-update RC名 –image=鏡像 –rollback
[[email protected] redis_rolling]# kubectl rolling-update redis-master-rc-v2 –image=kubeguide/redis-master:1.0 –rollback
Command "rolling-update" is deprecated, use "rollout" instead
error: Don’t specify –filename or –image on rollback
See ‘kubectl rolling-update -h’ for help and examples.
[[email protected] redis_rolling]#

升級正常就不能用這種方式進行回滾

———–報錯
[[email protected] yaml]# kubectl rolling-update redis-master-rc -f redis-master-rc-v2.yaml
Command "rolling-update" is deprecated, use "rollout" instead
error: redis-master-rc-v2.yaml contains a /v1, Kind=ReplicationController not a ReplicationController
問題和解決方法看 配置方式2------------

報錯2
[[email protected] redis_rolling]# kubectl rolling-update redis-master-rc-v2 -f redis-master-rc-v3.yaml
Command "rolling-update" is deprecated, use "rollout" instead
error: redis-master-rc-v3.yaml must specify a matching key with non-equal value in Selector for redis-master-rc-v2
[[email protected] redis_rolling]# !v
說明
must specify a matching key with non-equal value in Selector for redis-master-rc-v2
這里報錯說明是配置文件的問題,
 
問題和解決方法看 配置方式2------------

文章出自:CCIE那點事 http://www.qdxgqk.live/ 版權所有。本站文章除注明出處外,皆為作者原創文章,可自由引用,但請注明來源。 禁止全文轉載。
本文鏈接:http://www.qdxgqk.live/?p=4124轉載請注明轉自CCIE那點事
如果喜歡:點此訂閱本站
  • 相關文章
  • 為您推薦
  • 各種觀點
?
暫時還木有人評論,坐等沙發!
發表評論

您必須 [ 登錄 ] 才能發表留言!

?
?
萌宠夺宝游戏