ReplicaSet是下一代Replication Controller。 现在,ReplicaSet和Replication Controller之间的唯一区别是selector支持。 ReplicaSet支持标签用户指南中描述的新的基于集合的选择器要求,而Replication Controller仅支持基于等级的选择器要求。
在开始之前,删除之前创建的RC
[root@k8s-01 ~]# kubectl delete rc nginx-rc
replicationcontroller "nginx-rc" deleted
编写RS的YAML文件
[root@k8s-01 ~]# cat nginx-rs.yaml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: nginx-rs
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
这是一个ReplicaSet
类型的。
创建RS
[root@k8s-01 ~]# kubectl create -f nginx-rs.yaml
replicaset.apps/nginx-rs created
查看RS
[root@k8s-01 ~]# kubectl get rs nginx-rs
NAME DESIRED CURRENT READY AGE
nginx-rs 3 3 3 29s
查看Pod
[root@k8s-01 ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-rs-g9chx 1/1 Running 0 59s
nginx-rs-h6f7k 1/1 Running 0 59s
nginx-rs-lwcbf 1/1 Running 0 59s
扩容和缩容
[root@k8s-01 ~]# kubectl scale rs nginx-rs --replicas=2
replicaset.apps/nginx-rs scaled
[root@k8s-01 ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-rs-g9chx 1/1 Running 0 10m
nginx-rs-h6f7k 1/1 Running 0 10m
[root@k8s-01 ~]# kubectl get rs
NAME DESIRED CURRENT READY AGE
nginx-rs 2 2 2 10m
[root@k8s-01 ~]# kubectl scale rs nginx-rs --replicas=4
replicaset.apps/nginx-rs scaled
[root@k8s-01 ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-rs-g9chx 1/1 Running 0 10m
nginx-rs-ghz7l 1/1 Running 0 7s
nginx-rs-h6f7k 1/1 Running 0 10m
nginx-rs-j5d4p 0/1 ContainerCreating 0 7s
[root@k8s-01 ~]# kubectl get rs
NAME DESIRED CURRENT READY AGE
nginx-rs 4 4 4 11m