k8s中的RC/RS
·
RC/RS 在 Kubernetes 中的角色类比
假设你开了一家奶茶店,需要始终保持 3 个店员在岗。如果有人请假(Pod 崩溃),就得立刻叫替补来;如果人多了,就得让多余的人下班。这个管理店员数量的角色,就是 RC/RS 在 K8s 里的作用。
- 店员 → K8s 里的 Pod(比如运行 Nginx 的容器)
- 你(店长) → RC/RS 控制器
- 始终保持 3 个店员 → RC/RS 里的
replicas: 3(期望副本数)
理解 RS 的工作流程
定义招聘标准
你需要告诉店员统一穿红色工服(标签),方便识别哪些人是自己店的。对应到 K8s 中,RS 会通过标签选择器定义要管理哪些 Pod。
- 所有店员必须穿红色工服(Pod 必须带
app: milktea标签) - 只能是全职(排除带
type: parttime标签的人)
维持店员数量
- 一开始没人 → 按招聘标准招 3 个穿红工服的店员(创建 3 个 Pod)
- 有人请假(Pod 崩溃)→ 发现只有 2 人在岗,立刻招 1 个补上(RS 自动新建 1 个 Pod)
- 突然来了 5 人(Pod 多了)→ 让多余的 2 人下班(RS 自动删除 2 个 Pod)
- 店铺扩张(需要 5 个店员)→ 修改招聘计划(
replicas: 5),RS 会自动多招 2 人
核心工作逻辑
RS 会每秒循环做两件事:
- 统计当前带
app: milktea标签的 Pod 数量 - 对比期望数量(
replicas: 3),多了就删,少了就按模板新建
部署 RS 实例
创建 YAML 配置文件
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: nginx-rs
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
执行部署命令
kubectl apply -f nginx-rs.yaml
验证部署结果
kubectl get rs
kubectl get pods -l app=nginx
测试 RS 功能
模拟 Pod 故障
kubectl delete pod nginx-rs-abc123
RS 会自动检测到 Pod 数量不足,并创建新的 Pod 替代。
扩展服务规模
kubectl scale rs nginx-rs --replicas=5
RS 会自动创建 2 个新的 Pod 以满足扩展需求。
RC 与 RS 的区别
- RC(老店长):只能按简单规则管理 Pod(如
app=nginx) - RS(新店长):支持更复杂的标签选择规则(如
app in (nginx, apache))
为什么推荐使用 Deployment
Deployment 是更高层次的抽象,它:
- 自动创建和管理 RS
- 支持滚动更新和版本回滚
- 提供更完善的应用生命周期管理
就像区域经理管理多个店长,Deployment 管理多个 RS,而 RS 管理具体的 Pod。
更多推荐


所有评论(0)