1. 程式人生 > 實用技巧 >kubernets之Replication Controller

kubernets之Replication Controller

一 Replication Controller的介紹

   pod可能會由於各種原因消失和多出來,例如node節點去除叢集或者人為的手工建立,所以為了方便和管理pod的數量,k8s裡面

  的另外一種資源就應運而生,Replication Controller,它能夠管理特定的pod的標籤,使其動態保持一個數量,少了就會去建立,多了就會刪除叢集中的pod

  始終保持叢集中pod數量是一個自己定義的數量

二 Replication Controller的組成(後面部分都簡稱RC)

   RC由三部分組成

    • label selector 用於確定RC能夠控制的pod的標籤的範圍
    • replica count
      副本個數,指定執行容器的數量
    • pod template pod的模板,用於建立新的pod副本

  

三 以yaml的形式建立一個RC 

  3.1 配置檔案內容如下 

[root@node01 Chapter04]# cat kubia-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
  name: kubia
spec:
  replicas: 3
  selector:
    app: kubia
  template:
    metadata:
      labels:
        app: kubia
    spec:
      containers:
        
- name: kubia image: luksa/kubia ports: - containerPort: 8080

 

 3.2 建立RC

[root@node01 Chapter04]# k create -f kubia-rc.yaml
  replicationcontroller/kubia created
[root@node01 Chapter04]# k get rc NAME DESIRED CURRENT READY AGE kubia
3 3 2 9s
[root@node01 Chapter04]# k get po NAME READY STATUS RESTARTS AGE kubia
-cc6dg 1/1 Running 0 27s kubia-dsc2x 1/1 Running 0 27s kubia-liveness 1/1 Running 24 94m kubia-liveness-delay 1/1 Running 17 64m kubia-vz52m 1/1 Running 0 27s

 

 3.3 經由RC管控的pod在被刪除某個副本之後,RC會感知到數量已經不符合預期,會重新去拉取映象建立pod,紅色的是剛剛由RC最新建立的

[root@node01 Chapter04]#  k get po
NAME          READY   STATUS    RESTARTS   AGE
kubia-cc6dg   1/1     Running   0          6m55s
kubia-dsc2x   1/1     Running   0          6m55s
kubia-vz52m   1/1     Running   0          6m55s


[root@node01 Chapter04]# k delete po kubia-cc6dg
pod "kubia-cc6dg" deleted


[root@node01 Chapter04]# k get po
NAME          READY   STATUS    RESTARTS   AGE
kubia-dsc2x   1/1     Running   0          8m22s
kubia-qgxvw   1/1     Running   0          80s
kubia-vz52m   1/1     Running   0          8m22s

 3.4 RC完成通過標籤來管控pod,也可以通過修改pod裡面的標籤,從而脫離RC的管控,甚至將pod從一個RC移動至另一個RC

[root@node01 Chapter04]# k get po --show-labels
NAME          READY   STATUS    RESTARTS   AGE     LABELS
kubia-dsc2x   1/1     Running   0          11m     app=kubia
kubia-qgxvw   1/1     Running   0          4m49s   app=kubia
kubia-vz52m   1/1     Running   0          11m     app=kubia
[root@node01 Chapter04]# k label po kubia
-qgxvw type=docker pod/kubia-qgxvw labeled
[root@node01 Chapter04]# k get po
--show-labels NAME READY STATUS RESTARTS AGE LABELS kubia-dsc2x 1/1 Running 0 12m app=kubia kubia-qgxvw 1/1 Running 0 5m39s app=kubia,type=docker kubia-vz52m 1/1 Running 0 12m app=kubia
[root@node01 Chapter04]# k label po kubia
-vz52m app=k8s --overwrite pod/kubia-vz52m labeled
[root@node01 Chapter04]# k get po NAME READY STATUS RESTARTS AGE kubia
-dsc2x 1/1 Running 0 13m kubia-jqr8m 0/1 ContainerCreating 0 5s kubia-qgxvw 1/1 Running 0 6m9s kubia-vz52m 1/1 Running 0 13m

  注意:可以使用k edit rc rc_name來編輯rc的配置

3.5 修改pod的模板之後,原來的pod將不受到管控,並且刪除之後RC將會產生新的pod裡面也會和修改過後的模板保持一致

[root@node01 Chapter04]# k delete po --all
pod "kubia-dsc2x" deleted
pod "kubia-jqr8m" deleted
pod "kubia-qgxvw" deleted
pod "kubia-vz52m" deleted
[root@node01 Chapter04]# k get po
--show-labels NAME READY STATUS RESTARTS AGE LABELS kubia-27g4j 1/1 Running 0 99s app=kubia,version=v1.0 kubia-k7964 1/1 Running 0 99s app=kubia,version=v1.0 kubia-wn8wz 1/1 Running 0 99s app=kubia,version=v1.0