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
- K8s是什么
- K8s特点
- K8s功能
- 为什么用容器
- K8s集群搭建
- 1. 集群架构
- 2. 机器初始化
- 3. 安装Docker
- 4. 配置k8s镜像仓库
- 5. 安装k8s核心工具
- 6. 初始化主节点
- 7. node节点加入集群
- 8. 安装Pod网络插件
- 9. 测试k8s集群
- yaml资源文件
- yaml文件作用
- yaml文件编辑语法
- 资源清单描述方法
- 命令行工具kubectl
- kubectl是什么
- kubectl命令语法
- Pod
- Pod是什么
- Pod特征
- Pod定义
- Pod基本操作
- Pod分类
- Pod生命周期
- Pod重启策略
- 镜像拉取策略
- 资源限制
- 健康检查
- Label
- Namespace
- ReplicationController
- ReplicaSet
- Deployment
- HorizontalPodAutoscaler
- Service
- Service是什么
- 应用Service
- Ingress
- Ingress是什么
- 部署ingress-nginx
- Helm
- Helm是什么
- Volume
- Volume是什么
- NFS的使用
- PV与PVC
- PV与PVC是什么
- PV与PVC的使用
- ConfigMap
- ConfigMap是什么
- ConfigMap创建
- ConfigMap使用
- ConfigMap热更新
- 滚动更新Pod
- Secret
- Secret作用
- Secret类型