跳到主要内容

认识

2024年08月30日
柏拉文
越努力,越幸运

一、认识


ReplicaSetKubernetes 中用于确保指定数量的 pod 副本在集群中始终运行的控制器。它确保在任何时候都有指定数量的 Pod 副本在 Kubernetes 集群中运行,并且可以自动创建和删除 Pod,以保持所需的副本数。如果某个 Pod 停止运行,ReplicaSet 会自动启动新的 Pod 副本来替代。

1.1 核心作用

  1. 支持水平扩展: 可以通过修改 replicas 值轻松实现应用的扩缩容。

  2. 副本管理: 通过定义的 replicas 字段,ReplicaSet 确保集群中总有指定数量的 Pod 在运行。

  3. 自动重建 Pod: 如果 Pod 因故被删除或失效,ReplicaSet 会立即检测到并重新创建新的 Pod

  4. 自动扩缩容: 如果 Pod 副本数过少,ReplicaSet 会创建新的 Pod;如果 Pod 副本数过多,它会删除多余的 Pod

1.2 工作原理

  1. 目标副本数ReplicaSet 会监控当前运行的 Pod 数量,并与目标副本数进行比较。

  2. Pod 自动修复:如果有 Pod 停止工作(例如 Crash 或终止),ReplicaSet 会自动创建新的 Pod 来替换它们,以维持副本数的稳定。

  3. 标签选择器:通过标签选择器(Label Selector)来选择属于该 ReplicaSetPod

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