K8S 之 創建ReplicationController與ReplicaSet控制器

一、使用ReplicationController的好處

1、確保一個pod(或多個pod副本)持續運行,方法是在現有pod丟失時啓動一個新的pod
2、集羣節點發生故障時,它將爲故障節點上運行的所有pod(即受ReplicationController控制的節點上的那些pod)創建替代副本。
3、它能輕鬆實現pod的水平伸縮,手動和自動都可以。

備註:ReplicationController 最終將被棄用,ReplicaSet代替,功能完全相同,而你通常不會直接創建它們,而是在創建更高層級的Deployment資源時創建。

apiVersion: v1
kind: ReplicationController
metadata:
  name: kubia-rc          #ReplicationController(RC)的名字
  namespace: test
spec:
  replicas: 3             #pod實例的目標數量
  selector:               #pod選擇器決定了RC的操作對象
    app: kubia
  template:               #創建新POD所用的pod模板
    metadata:
      labels:
        app: kubia
    spec:
      containers:
        - name: kubia
          image: luksa/kubia
          ports:
            - containerPort: 8080
[root@test-nodes1 k8s-yaml-file]# kubectl get all -n test
NAME                 READY   STATUS    RESTARTS   AGE
pod/kubia-rc-d2l6v   1/1     Running   0          2m11s
pod/kubia-rc-fmzjs   1/1     Running   0          2m11s
pod/kubia-rc-zdd28   1/1     Running   0          56s

NAME                             DESIRED   CURRENT   READY   AGE
replicationcontroller/kubia-rc   3         3         3       2m11s

二、水平縮放pod

[root@test-nodes1 k8s-yaml-file]# kubectl scale rc kubia-rc --replicas=2 -n test
replicationcontroller/kubia-rc scaled
[root@test-nodes1 k8s-yaml-file]# kubectl get all -n test
NAME                 READY   STATUS        RESTARTS   AGE
pod/kubia-rc-d2l6v   1/1     Running       0          23m
pod/kubia-rc-fmzjs   1/1     Running       0          23m
pod/kubia-rc-zdd28   1/1     Terminating   0          22m      #已經終止

NAME                             DESIRED   CURRENT   READY   AGE
replicationcontroller/kubia-rc   2         2         2       23m

或者可使用
[root@test-nodes1 k8s-yaml-file]# kubectl edit rc kubia-rc

三、創建ReplicaSet

apiVersion: apps/v1beta2       #不是v1版本API的一部分,但屬於apps API組的v1beta2版本
kind: ReplicaSet
metadata:
  name: kubia-rc          #ReplicationController(RC)的名字
  namespace: test
spec:
  replicas: 3             #pod實例的目標數量
  selector: 
    matchLabels:          #這裏使用了更簡單的matchLabels選擇器(只能用這個)
      app: kubia
  template:               #創建新POD所用的pod模板
    metadata:
      labels:
        app: kubia
    spec:
      containers:
        - name: kubia
          image: luksa/kubia
          ports:
            - containerPort: 8080
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章