介绍

Replication Controller 会持续监控正在运行的pod列表, 并保证相应 ” 类型” 的 pod的数目与期望相符(多了删除,少了新增)。所谓的类型就是通过标签选择器监控模板中指定标签的pod的数量。
 
注意:在新版本的k8s中的副本控制器为Replica Set 替代了Replication Controller。

ReplicationController的三部分

• label selector ( 标签选择器), 用于确定ReplicationController作用域中有哪些pod
• replica count (副本个数), 指定应运行的pod 数量
• pod template (pod模板), 用于创建新的pod 副本

Tips:

1、ReplicationController 的副本个数、标签选择器,甚至是 pod模板都可以随时修改,但只有副本数目的变更会影响现有的 pod。
 
2、更改标签选择器和 pod模板对现有 pod 没有影响。 更改标签选择器会使现有的pod 脱离 ReplicationController的范围, 因此控制器会停止关注它们。 在创建 pod后,ReplicationController 也不关心其 pod的实际 “ 内容 ”(容器镜像、 环境变量及其他)。因此更改模板仅影响由此ReplicationController 创建的新 pod。

作用

1、人为删除、增加pod后,副本控制器就会根据模板中定义的数量通过创建/删除来维持应有的数量,或者pod 异常丢失停止都会根据模板创建新的pod 

 
2、集群节点发生故障时, 它将为故障节 点 上运行的所有 pod (即受ReplicationController 控制的节点上的那些 pod) 创建替代副本。
 
3、根据使用需求它能轻松实现 pod的水平伸缩,手动和自动都可以。

创建一个副本控制器

vi rs.yaml
    apiVersion: extensions/v1beta1
    kind: ReplicaSet                    #资源类型为rc
    metadata:
      name: asdf
    spec:
      replicas: 2
      selector:                            # pod 选择器决定了 RC 的操作对象
        matchLabels:
          app: pay
      template:                            #创建新 pod 所用的pod 模板
        metadata:
          labels:
            app: pay
            pod-template-hash: c6f6fdd
      spec:
        containers:
        - name: app1
        image: luksa/asdf
       ports: 8090
View Code
12-18 06:08