1. Kubernetes Pod控制器概述
在Kubernetes集群中,Pod是最小的部署单元,但直接管理裸Pod(称为自主式Pod)存在诸多问题。自主式Pod一旦被删除就彻底消失,不会自动重建,这显然无法满足生产环境的需求。Kubernetes通过一系列控制器(Controller)来解决这个问题,它们作为管理Pod的中间层,能够确保集群中的Pod始终按照用户期望的状态运行。
Pod控制器的主要职责包括:
- 确保指定数量的Pod副本在运行
- 监控Pod状态并在故障时自动恢复
- 支持Pod的滚动更新和版本回退
- 根据负载自动扩缩容
- 在特定节点上运行守护进程
- 执行一次性任务和定时任务
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. ReplicaSet控制器详解
2.1 ReplicaSet核心功能
ReplicaSet(RS)是Kubernetes中最基础的Pod控制器,它的核心功能是确保指定数量的Pod副本始终处于运行状态。当Pod数量不足时,RS会自动创建新的Pod;当Pod数量过多时,RS会自动删除多余的Pod。
RS通过以下机制实现这一功能:
- 标签选择器(Label Selector):识别它需要管理的Pod
- 副本数量(replicas):定义期望的Pod数量
- Pod模板(template):定义新Pod的创建规范
2.2 ReplicaSet配置详解
一个完整的RS定义包含以下几个关键部分:
yaml复制apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: nginx-rs
namespace: dev
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.17.1
ports:
- containerPort: 80
关键字段解析:
replicas: 定义期望的Pod数量selector.matchLabels: 定义RS如何识别它管理的Podtemplate: 定义新Pod的创建模板,必须与selector匹配
重要提示:RS的selector必须与template.metadata.labels匹配,否则控制器将无法正确管理Pod。
2.3 ReplicaSet操作实践
创建RS
bash复制kubectl apply -f nginx-rs.yaml
查看RS状态
bash复制kubectl get rs -n dev
输出示例:
code复制NAME DESIRED CURRENT READY AGE
nginx-rs 3 3 3 2m
扩缩容操作
手动调整副本数量:
bash复制kubectl scale rs nginx-rs --replicas=5 -n dev
或者直接编辑YAML文件:
bash复制kubectl edit rs nginx-rs -n dev
更新镜像版本
bash复制kubectl set image rs nginx-rs nginx=nginx:1.19.0 -n dev
删除RS
bash复制kubectl delete rs nginx-rs -n dev
