一、使用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