本课主题:Kubernetes ReplicaSet(RS)控制器详解
一、ReplicaSet(RS)基础特性
- 核心功能与RC(ReplicationController)一致:保证集群中运行的Pod副本数与RS的期望副本数保持一致,支持自动恢复异常Pod。
- 基础配置要素:
- Pod模板:可定义Pod元数据、标签、容器镜像、环境变量、端口等配置,本课示例使用myapp V1.0版(含Linux服务器)作为容器镜像,示例配置包含环境变量
GET_HOST_FROM=dns、端口80。 - 标签规则:RS的标签选择器支持子集匹配,即Pod的标签只需包含选择器要求的标签即可,无需完全一致,可额外自定义其他标签(如domain、版本号等)。
- 期望副本数:未指定时默认值为1。
- Pod模板:可定义Pod元数据、标签、容器镜像、环境变量、端口等配置,本课示例使用myapp V1.0版(含Linux服务器)作为容器镜像,示例配置包含环境变量
- 自动恢复验证:删除RS管理的Pod后,RS会自动创建新的Pod补足副本数,保证副本数符合期望。示例:删除ID为5S9F6的Pod后,RS自动创建了ID为NCX6S8的新Pod,副本数仍维持在期望值3。
二、RS相比RC的核心优势:增强型标签选择器
RC仅支持标签子集匹配,RS额外支持通过matchExpressions配置匹配运算符,满足更复杂的标签匹配场景,支持的运算符包括:
- Exists:Pod存在指定key的标签即可,不限制标签value
- DoesNotExist:Pod不存在指定key的标签
- In:Pod的指定标签value在给定的value列表中
- NotIn:Pod的指定标签value不在给定的value列表中
官方推荐优先使用RS替代RC,满足后续可能的灵活标签匹配需求。
三、标签选择器运算符实验验证
1. Exists运算符验证
- 配置规则:
matchExpressions中key为app,operator为Exists,即只要Pod存在app标签,无论value是什么,均属于该RS管理。 - 验证逻辑:
- 修改RS管理的Pod的
app标签值为任意内容(如“薪享宏福”),RS不会创建新Pod,说明标签value不影响匹配结果。 - 删除Pod的
app标签后,RS会自动创建新的符合要求的Pod,验证Exists规则生效。
- 修改RS管理的Pod的
- 匹配逻辑补充:RS仅管理由自身创建的Pod,且Pod标签符合选择器规则才会被纳入管理,避免误匹配其他同名Pod。
2. In运算符验证
- 配置规则:
matchExpressions中key为app,operator为In,values列表包含spring-k8s、哈哈哈两个值,即Pod的app标签value必须为列表中任一值才符合要求。 - 验证逻辑:
- 若Pod模板的
app标签值不在给定列表中,RS创建时会直接报错(新版本K8s会在创建时自动校验模板标签是否符合选择器规则,避免无效资源创建)。 - 修改Pod的
app标签值为列表内的值(如spring-k8s或哈哈哈),RS不会创建新Pod,符合预期。 - 若修改Pod的
app标签值为列表外的值,RS会自动创建新的符合要求的Pod,验证In规则生效。
- 若Pod模板的
四、RS标签灵活性的实际应用场景
同一个RS创建的Pod可通过修改标签,被不同的Service(SVC)匹配,实现一套Pod资源供给多场景使用:
- 示例:RS创建的Pod初始标签为
app=星享宏福、env=stable,默认被标签选择器为app=星享宏福、env=stable的SVC匹配,通过负载均衡供给公网用户访问。 - 若需要供给开发测试使用,可直接修改Pod的
env标签为test,即可被标签选择器为env=test的SVC匹配,无需重新创建Pod或RS,灵活性远高于RC。
五、RS资源清理注意事项
- 直接删除RS管理的Pod无意义,RS会自动重建被删除的Pod。
- 清理RS创建的Pod需要从源头操作:删除对应的RS控制器,由该RS创建的所有Pod会被自动删除。
AI 总结
本课详细讲解Kubernetes ReplicaSet(RS)控制器的核心特性,对比了其与RC的差异,重点演示了Exists、In两类标签选择器运算符的用法与验证逻辑,同时说明了RS的资源清理规则。RS相比RC具备更强的标签匹配灵活性,可满足更复杂的业务场景需求,是Kubernetes集群中管理Pod副本的主流控制器。