认识
2024年08月30日
一、认识
ReplicaSet
是 Kubernetes
中用于确保指定数量的 pod
副本在集群中始终运行的控制器。它确保在任何时候都有指定数量的 Pod
副本在 Kubernetes
集群中运行,并且可以自动创建和删除 Pod
,以保持所需的副本数。如果某个 Pod
停止运行,ReplicaSet
会自动启动新的 Pod
副本来替代。
1.1 核心作用
-
支持水平扩展: 可以通过修改
replicas
值轻松实现应用的扩缩容。 -
副本管理: 通过定义的
replicas
字段,ReplicaSet
确保集群中总有指定数量的Pod
在运行。 -
自动重建
Pod
: 如果Pod
因故被删除或失效,ReplicaSet
会立即检测到并重新创建新的Pod
。 -
自动扩缩容: 如果
Pod
副本数过少,ReplicaSet
会创建新的Pod
;如果Pod
副本数过多,它会删除多余的Pod
。
1.2 工作原理
-
目标副本数:
ReplicaSet
会监控当前运行的Pod
数量,并与目标副本数进行比较。 -
Pod
自动修复:如果有Pod
停止工作(例如Crash
或终止),ReplicaSet
会自动创建新的Pod
来替换它们,以维持副本数的稳定。 -
标签选择器:通过标签选择器(
Label Selector
)来选择属于该ReplicaSet
的Pod
。
1.3 ReplicaSet 与 Deployment
在实际使用中,Deployment
是常用的工作负载控制器,通常我们使用 Deployment
来管理 Pod
, 通过配置 replicas
内部会自动创建和管理一个 ReplicaSet
, 而且 Deployment
提供了更高级别的功能,如滚动更新、回滚等,而 ReplicaSet
主要负责保证 Pod
副本的数量。
二、语法
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: example-replicaset
spec:
replicas: 3 # 要保持的 Pod 副本数量
selector:
matchLabels:
app: my-app # 匹配的标签,ReplicaSet 会根据这些标签选择 Pod
template:
metadata:
labels:
app: my-app # 用于选择 Pod 的标签
spec:
containers:
- name: nginx
image: nginx:latest # Pod 中的容器镜像
ports:
- containerPort: 80