介绍

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

ReplicationController的三部分

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

Tips:

1、ReplicationController 的副本个数、标签选择器,甚至是 pod模板都可以随时修改,但只有副本数目的变更会影响现有的 pod。
 
2、更改标签选择器和pod模板对现有 pod 没有影响。在创建 pod后,RC也不关心其 pod的实际 “ 内容 ”(容器镜像、 环境变量及其他)。因此更改模板仅影响由此RC 创建的新pod例如在模板中添加标签不会立马给现有Pod 添加,而是新建新的Pod 的时候会添加这个新的标签。
 
3、修改Pod 的标签,pod 就会脱离了RC控制,然后PC 会新建一个pod,给pod 添加新的标签不影响RC对pod 的管理。
 
4、修改了 ReplicationController 的标签选择器,那么原有的pod 脱离RC控制,然后RC会新创建几个新的 pod。

作用

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

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

相关操作

创建副本控制器

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

 编辑副本控制器

kubectl edit rc rc-name -n namespace
 将你的默认文本编辑器中打开RC的YAML配置。找到要配置的部分编辑完成后保存更改并退出编辑器后,kubectl将更新RC并打印以下消息:
replicationcontroller " kubsdf" edited

通过更改副本控制器可以完成以下任务:

1、扩缩Pod数量

2、更改pod 标签

3、更改副本编辑器的标签选择器

pod 扩容/缩容

方式一
kubectl scale rc kusdf   --replicas=8

方式二
kubectl edit re kubia          #找到 spec.replicas字段并将其值更改为8,保存该文件并关闭编辑器, ReplicationController会更新并立即将pod的数量增加到8
View Code

相关文章: