kubernets之Replication Controller
阿新 • • 發佈:2020-12-22
一 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