k8s中ReplicaSet控制器的作用


## ReplicaSet(RS)

?    ReplicaSet的主要作用是**保证一定数量的pod正常运行**,它会持续监听这些Pod的运行状态,一旦Pod发生故障,就会重启或重建。同时它还支持对pod数量的扩缩容和镜像版本的升降级。

![](assets/image-20200612005334159.png)

ReplicaSet的资源清单文件:

~~~yaml
apiVersion: apps/v1 # 版本号
kind: ReplicaSet # 类型       
metadata: # 元数据
  name: # rs名称 
  namespace: # 所属命名空间 
  labels: #标签
    controller: rs
spec: # 详情描述
  replicas: 3 # 副本数量
  selector: # 选择器,通过它指定该控制器管理哪些pod
    matchLabels:      # Labels匹配规则
      app: nginx-pod
    matchExpressions: # Expressions匹配规则
      - {key: app, operator: In, values: [nginx-pod]}
  template: # 模板,当副本数量不足时,会根据下面的模板创建pod副本
    metadata:
      labels:
        app: nginx-pod
    spec:
      containers:
      - name: nginx
        image: nginx:1.17.1
        ports:
        - containerPort: 80
~~~

在这里面,需要新了解的配置项就是`spec`下面几个选项:

- replicas:指定副本数量,其实就是当前rs创建出来的pod的数量,默认为1

- selector:选择器,它的作用是建立pod控制器和pod之间的关联关系,采用的Label Selector机制

  ?               在pod模板上定义label,在控制器上定义选择器,就可以表明当前控制器能管理哪些pod了

- template:模板,就是当前控制器创建pod所使用的模板板,里面其实就是前一章学过的pod的定义

**创建ReplicaSet**

创建pc-replicaset.yaml文件,内容如下:

~~~yaml
apiVersion: apps/v1
kind: ReplicaSet   
metadata:
  name: pc-replicaset
  namespace: dev
spec:
  replicas: 3
  selector: 
    matchLabels:
      app: nginx-pod
  template:
    metadata:
      labels:
        app: nginx-pod
    spec:
      containers:
      - name: nginx
        image: nginx:1.17.1
~~~

相关