一个大型的party只有一个服务员显然是不可能的,但是每一个黑奴都要本庄园主来操办也是件麻烦事。于是我又在市场找到了专业的商贩RepliacSet。只需要告诉他需要什么样的黑奴,需要多少即可。
ReplicaSet 的目的是维护一组在任何时候都处于运行状态的 Pod 副本的稳定集合。 因此,它通常用来保证给定数量的、完全相同的 Pod 的可用性。我们可以动态的调整副本的数量,但是对模板的修改是不可以的,所以往往使用deployment代替它。
部署一组Nginx服务
目标:
- 使用ReplicaSet部署一组nginx服务
- 进行动态完成动态扩缩容
构建
依旧是提前准备好了yaml描述文件。
# replicaSet.yaml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: nginx-rs
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template: # 黑奴模板 同上一节Pod中定义的内容一样
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
- apiVersion: ReplicaSet 对应的apiVersion是
apps/v1 metadata.name:指名ReplicaSet资源的名称,可以在查看时看到- spec:对ReplicaSet的规格描述
- replicas:副本数量
- selector:用来筛选Pod的规则,满足规则的Pod才被认为是下属副本
- matchLabels:通过
metadata.label进行匹配,拥有相同标签的Pod奖杯匹配,和template中的内容对应
- matchLabels:通过
- template:Pod模板,和上一节中Pod中的spec对应
kubectl apply -f replicaSet.yaml
查看结果
# 查看pod
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-rs-456hk 1/1 Running 0 65s
nginx-rs-flvh2 1/1 Running 0 65s
nginx-rs-gp92t 1/1 Running 0 65s
# 查看ReplicaSet
$ kubectl get rs
NAME DESIRED CURRENT READY AGE
nginx-rs 3 3 3 109s
扩缩容
使用kubectl scale命令设定副本数量
- 扩容
$ kubectl scale --replicas=5 -f replicaSet.yaml
replicaset.apps/nginx-rs scaled
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-rs-456hk 1/1 Running 0 18m
nginx-rs-9hrf8 1/1 Running 0 25s
nginx-rs-flvh2 1/1 Running 0 18m
nginx-rs-gp92t 1/1 Running 0 18m
nginx-rs-z2sm9 1/1 Running 0 25s
$ kubectl get rs
NAME DESIRED CURRENT READY AGE
nginx-rs 5 5 5 18m
- 缩容
kubectl scale --replicas=1 -f replicaSet.yaml
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-rs-456hk 1/1 Running 0 19m
至此本节就结束了,ReplicaSet更详细的内容请参考官方文档。