Kubernetes(简称K8S) 是Google开源的分布式的容器管理平台,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。本文主要介绍Kubernetes(K8s) Replica Set(RS)。

1、Kubernetes(K8s) Replica Set(RS)

Replica Set确保有多少个pod副本应该运行。可以考虑替换RCRSRC之间的关键区别是,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

apiVersionapiVersion: extensions/v1beta1表示API版本是Kubernetes的高级beta版本,它支持副本集的概念。

ReplicaSet kind: ReplicaSet表示文件是用来创建一个副本集的。

replicasreplicas: 3 表示需要在pod生命周期的任何时间点维护一个pod的三个副本。

Backendtier: 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

推荐文档