企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
ReplicationController(RC)用来管理 Pod 副本,实现自动创建、补足、替换、删除 Pod 副本。 <br/> 当我们定义了一个 RC 并提交到 Kubernetes 集群中以后,Master 节点上的 ControllerManager 组件就得到通知,定期检查系统中存活的 Pod,并确保目标 Pod 实例的数量刚好等于 RC 的预期值。 <br/> 如果有过多或过少的 Pod 运行,系统就会停掉或创建一些 Pod。此外我们也可以通过修改 RC 的副本数量,来实现 Pod 的动态缩放功能。 ```shell kubectl scale rc nginx --replicas=5 ``` <br/> 在 Kubernetes v1.2 , RC 升级成了另外一个新的概念 ReplicaSets(RS)。 RS 是下一代的 RC,它与 RC 区别是:RS 支持基于集合的 Label selector,而 RC 只支持基于等式的 Label Selector。 ![](https://img.kancloud.cn/a4/55/a455d85da372890cb71161c362c1c674_1652x365.png) ![](https://img.kancloud.cn/31/0c/310c2cbe987818580c3a956dc4bec542_1700x381.png) >[info]RC 还是可以使用的,并不是说 RS 替换了 RC。 <br/> 我们很少单独使用 RS,它主要被 Deployment 这个更高层面的资源对象所使用,从而形成一整套 Pod 创建、删除、更新的编排机制。 <br/> 最好不要越过 RC 直接创建 Pod, 因为通过 RC 管理 Pod 副本,可以实现自动创建、补足、替换、删除 Pod 副本,这样就能提高应用的容灾能力,减少由于节点崩溃等意外状况造成的损失。即使应用程序只有一个 Pod 副本,也强烈建议使用 RC 来定义Pod。 ```shell /** 使用 RC 来部署 tomcat6 示例 */ 【1】定义 RC 资源 $ vim tomcat6-rc01.yaml apiVersion: v1 kind: ReplicationController metadata: labels: app: tomcat6-rc01 name: tomcat6-rc01 spec: replicas: 4 ##4个副本 selector: app: tomcat6-rc01 template: metadata: labels: app: tomcat6-rc01 spec: containers: - image: tomcat:6.0.53-jre8 name: tomcat 【2】部署 tomcat6 $ kubectl apply -f tomcat6-rc01.yaml 【3】查看已部署的 RC $ kubectl get rc -o wide NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR tomcat6-rc01 4 4 4 47s tomcat tomcat:6.0.53-jre8 app=tomcat6-rc01 【4】查看通过 RC 创建的 Pod $ kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES /** 部署了 4 个 pod */ tomcat6-rc01-9jq99 1/1 Running 0 62s 10.244.2.34 k8s-node2 <none> <none> tomcat6-rc01-df68n 1/1 Running 0 62s 10.244.1.38 k8s-node1 <none> <none> tomcat6-rc01-q496r 1/1 Running 0 62s 10.244.1.39 k8s-node1 <none> <none> tomcat6-rc01-tbwpw 1/1 Running 0 62s 10.244.2.35 k8s-node2 <none> <none> ``` **** 参考文档:https://feisky.xyz/kubernetes-handbook/concepts/replicaset.html