1、Kubernetes(K8s) Replica Set(RS)
Replica Set确保有多少个pod副本应该运行。可以考虑替换RC。RS和RC之间的关键区别是,RC只支持基于等式的选择器,而RS支持基于集合的选择器。在旧版本的Kubernetes中,只有ReplicationController对象。它的主要作用是确保Pod以你指定的副本数运行,即如果有容器异常退出,会自动创建新的 Pod 来替代;而异常多出来的容器也会自动回收。相当于通过ReplicationController,Kubernetes实现了集群的高可用性。新版本的 Kubernetes 中建议使用 ReplicaSet(RS)来取代 Replication Controller(RC)。
2、RS常用操作
Kubernetes官方强烈建议避免直接使用ReplicaSet,而应该通过Deployment来创建RS和Pod。用法基本与Replication Controller(RC)相同,唯一的区别在于ReplicaSet支持集合式的selector。
1)配置文件
apiVersion: extensions/v1beta1 
kind: ReplicaSet 
metadata:
   name: Tomcat-ReplicaSet
spec:
   replicas: 3
   selector:
      matchLables:
         tier: Backend 
      matchExpression:
{ key: tier, operation: In, values: [Backend]} 
template:
   metadata:
      lables:
         app: Tomcat-ReplicaSet
         tier: Backend
      labels:
         app: App
         component: neo4j
   spec:
      containers:
      - name: Tomcat
      image: tomcat: 8.0
      ports:
      - containerPort: 7474apiVersion:apiVersion: extensions/v1beta1表示API版本是Kubernetes的高级beta版本,它支持副本集的概念。
ReplicaSet: kind: ReplicaSet表示文件是用来创建一个副本集的。
replicas:replicas: 3 表示需要在pod生命周期的任何时间点维护一个pod的三个副本。
Backend:tier: Backend是已经将标签层定义为后端,创建了一个匹配的选择器。
2)缩容Pod
kubectl scale rs nginx --replicas=2 kubectl get rs
3)扩容Pod
kubectl scale rs nginx --replicas=5 kubectl get pods -o wide
4)通过修改.spec.replicas的值可以实时修改RS运行的Pod数量。
5)判断及修改副本数量
判断当前副本数是否为3个,如果是,则更改为1个副本:
kubectl scale rs nginx --current-replicas=3 --replicas=1