介绍
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
编辑副本控制器
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