当前位置: 首页 > ops >正文

Kubernetes 从入门到精通-ReplicaSet控制器

一、RS 核心概念

1.什么是 ReplicaSet?

  • Pod 副本管理器:确保指定数量的相同 Pod 副本始终运行;

  • 高可用保障:自动替换失败或被删除的 Pod;

  • 扩缩容基础:通过调整副本数实现水平伸缩;

  • Deployment 的底层组件:Deployment 通过管理 ReplicaSet 实现滚动更新。

2.核心功能

3.与 Deployment 的关系

特性ReplicaSetDeployment
主要职责维护 Pod 副本数管理应用生命周期
更新机制无滚动更新能力支持滚动更新和回滚
版本控制无版本管理通过 ReplicaSet 快照管理版本
直接使用频率低(通常由 Deployment 管理)高(生产环境首选)

4.工作原理

二、ReplicaSet案例详解

1.核心字段说明

  •        selector.matchLabels:必须与 Pod 模板的 metadata.labels 完全匹配。
  •        selector.matchExpressions:支持表达式匹配,根据匹配规则满足metadata.labels即可。
  •        replicas:整数,表示期望运行的 Pod 数量。
  •        template:与 Pod 定义相同,但不支持 apiVersion 和 kind。

2.案例

[root@master-1 yaml]# cat rs-nginx.yaml 
apiVersion: apps/v1
kind: ReplicaSet
metadata:name: nginx-rs-v1labels:apps: myweb    #rs的标签
spec:#必须存在的Pod副本数replicas: 3# 定义标签选择器,其会基于标签选择器关联Pod,控制pod数量3# 相比于rc资源,rs资源有以下优点:#    - 必须写selector;#    - 不仅支持标签选择器,还支持表达式匹配;#关键选择器(必须匹配template中的标签)selector:# 定义标签选择器# matchLabels:#   apps: v1# 基于表达式匹配matchExpressions:# 定义key的名称- key: apps# 定义valuevalues: - "v1"- "v2"# 定义key和value之间的关系,有以下几种关系:#    In:#      key的值,在vlaues列表中任意其一即可。#    NotIn:#      key的值,不能在values列表中。#    Exists:#      只有有key就行,value任意。如果是Exists,则不允许定义values字段。#    DoesNotExist:#      不能包含指定的key。其他的key和value任意。如果是DoesNotExist,则不允许定义values字段。operator: In#operator: NotIntemplate:metadata:labels:   #pod的标签apps: v1env: testspec:containers:- name: nginximage: nginx:1.22.1imagePullPolicy: IfNotPresentports:- containerPort: 80resources:requests:cpu: 100mmemory: 128Mi[root@master-1 yaml]# kubectl apply -f rs-nginx.yaml

        如下图所示,删除pod后,rs会自动又创建一个pod,以保障与定义的pod数量相同

3.基础操作

3.1 rs控制器基础操作
#查看rs、pod
[root@master-1 yaml]# kubectl get rs,pods --show-labels -o wide
NAME                          DESIRED   CURRENT   READY   AGE   CONTAINERS   IMAGES         SELECTOR          LABELS
replicaset.apps/nginx-rs-v1   3         3         3       15m   nginx        nginx:1.22.1   apps in (v1,v2)   apps=mywebNAME                    READY   STATUS    RESTARTS   AGE   IP           NODE     NOMINATED NODE   READINESS GATES   LABELS
pod/nginx-rs-v1-6l782   1/1     Running   0          15m   10.244.1.2   node-2   <none>           <none>            apps=v1,env=test
pod/nginx-rs-v1-bb8vq   1/1     Running   0          13m   10.244.1.3   node-2   <none>           <none>            apps=v1,env=test
pod/nginx-rs-v1-rqpvd   1/1     Running   0          15m   10.244.0.2   node-1   <none>           <none>            apps=v1,env=test#查看详细信息
[root@master-1 yaml]# kubectl describe rs nginx-rs-v1#删除rs,会删除所有pod
[root@master-1 yaml]# kubectl delete rs nginx-rs-v1
3.2 扩缩容操作
#手动扩容
[root@master-1 yaml]# kubectl scale rs nginx-rs-v1 --replicas=5#通过编辑文件扩容 修改spec.replicas值
[root@master-1 yaml]# kubectl edit rs nginx-rs-v1 

如下图,已成功扩缩容pod

3.3 常见问题排查
  • pod未被创建

检查点

       资源配额是否充足

       节点选择器/污点配置

       镜像拉取策略是否正确

       ReplicaSet 事件日志

  • 多余的 Pod 未被删除

可能原因:

       Pod 标签与选择器不匹配

       存在孤儿 Pod(手动创建或残留)

       多个控制器管理相同 Pod

[root@master-1 yaml]# kubectl describe rs nginx-rs-v1

三、总结

ReplicaSet 是 Kubernetes 中确保 Pod 副本数量的核心控制器:

  • 主要职责是维护指定数量的相同 Pod;
  • 通过标签选择器识别管理的 Pod;
  • Deployment 的底层实现依赖于 ReplicaSet;
  • 生产环境中通常不直接使用,而是通过 Deployment 管理;
  • 理解 ReplicaSet 工作原理是掌握 Kubernetes 编排的基础。

http://www.xdnf.cn/news/13519.html

相关文章:

  • 超级神冈探测器2025.6.11
  • Java多线程通信核心机制详解
  • 通过共享内存在多程序之间实现数据通信
  • Python实例题:Python计算泛函分析
  • Linux操作系统故障排查案例实战
  • 南京师范大学 AM:焦耳加热 “点亮” 高效析氢新路径
  • Amazon Linux 2023 系统上 Radius 部署文档
  • 三维自动光学检测-3D扫描扇叶尺寸检测设备-中科米堆
  • 运维之十个问题--6
  • URL末尾加“/“与不加“/“区别
  • 【Dv3Admin】系统视图消息中心API文件解析
  • 与算法相关的一些数学物理理论知识
  • mysql DQL(javaweb第七天)
  • 2025年春季学期《算法分析与设计》练习15
  • Docker快速构建并启动Springboot程序,快速发布和上线/
  • OM6629 是一款针对蓝牙低功耗和专有 2.4GHz 系统级芯片(SoC)解决方案
  • 汉诺塔 (easy)
  • 根据 LiDAR 株高数据计算植被生物量
  • Koji构建系统宏定义注入与Tag体系解析
  • GEO行业中的STREAM框架解析:内容一致性得分(A)如何实现全渠道品牌信息的协同与统一
  • LangGraph基础知识(Reducer/MessageGraph)(二)
  • 机器学习赋能的智能光子学器件系统研究与应用
  • 开疆智能ModbusTCP转Canopen网关连接AGV地标传感器
  • HGAdmin无法连接本地数据库解决方式(APP)
  • Linux操作系统基线检查与安全加固概述
  • ZYNQ学习记录FPGA(三)状态机
  • 梯度范数的作用
  • P1186 玛丽卡
  • Python编程基石:整型、浮点、字符串与布尔值完全解读
  • linux学习第20天(进程间通信,管道)