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: 7474
apiVersion: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