介绍
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