前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >云原生容器实战(三)-Kubernetes工作负载资源PodReplicaSet

云原生容器实战(三)-Kubernetes工作负载资源PodReplicaSet

作者头像
JavaEdge
修改2025-06-12 14:00:28
修改2025-06-12 14:00:28
2360
举报
文章被收录于专栏:JavaEdgeJavaEdge

本文已收录在Github关注我,紧跟本系列专栏文章,咱们下篇再续!

  • 🚀 魔都架构师 | 全网30W技术追随者
  • 🔧 大厂分布式系统/数据中台实战专家
  • 🏆 主导交易系统百万级流量调优 & 车联网平台架构
  • 🧠 AIGC应用开发先行者 | 区块链落地实践者
  • 🌍 以技术驱动创新,我们的征途是改变世界!
  • 👉 实战干货:编程严选网

0 前言

ReplicaSet目的:维护一组在任何时候都处运行态的 Pod 副本的稳定集。 因此,它通常用来保证给定数量的、完全相同的 Pod 的可用性。

1 ReplicaSet 的工作原理

RepicaSet,通过一组字段来定义,包括:

  • 一个用来识别可获得的 Pod 的集合的选择算符
  • 一个用来标明应该维护的副本个数的数值
  • 一个用来指定应该创建新 Pod 以满足副本个数条件时要使用的 Pod 模板
  • ...

每个 ReplicaSet 都通过根据需要创建和 删除 Pod 以使得副本个数达到期望值。当 ReplicaSet 需要创建新Pod时,会用所提供的 Pod 模板。

ReplicaSet 通过 Pod 的 metadata.ownerReferences 字段连接到附属 Pod,该字段给出当前对象的属主资源。 ReplicaSet 所获得的 Pod 都在其 ownerReferences 字段中包含了属主 ReplicaSet 的标识信息。正是通过这一连接,ReplicaSet 知道它所维护的 Pod 集合的状态, 并据此计划其操作行为。

ReplicaSet用其选择算符来辨识要获得的 Pod 集合。若某Pod没有 OwnerReference 或者其 OwnerReference 不是一个 控制器,且其匹配到 某 ReplicaSet 的选择算符,则该 Pod 立即被此 ReplicaSet 获得。

2 何时用ReplicaSet

ReplicaSet 确保任何时间都有指定数量的 Pod 副本在运行。 然而,Deployment 是一个更高级的概念,它管理 ReplicaSet,并向 Pod 提供声明式的更新以及许多其他有用的功能。 因此,我们建议使用 Deployment 而不是直接使用 ReplicaSet,除非 你需要自定义更新业务流程或根本不需要更新。

你可能永远无需操作 ReplicaSet 对象:而是用 Deployment,并在 spec 定义你的应用:

代码语言:yml
复制
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: nginx
  labels:
    tier: frontend
# see!!!
spec:
  replicas: 3
  selector:
    matchLabels:
      tier: frontend
  template:
    metadata:
      name: nginx
      labels:
        tier: frontend
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80

创建该 pod

代码语言:bash
复制
kubectl create -f rs_nginx.yml
代码语言:java
复制
replicas-set kubectl create -f rs_nginx.yml

replicaset.apps/nginx created
代码语言:bash
复制
NAME           READY   STATUS    RESTARTS   AGE
nginx-5f8ng    1/1     Running   0          8m12s
nginx-7vmzf    1/1     Running   0          8m12s
nginx-vr2gb    1/1     Running   0          8m12s

删除第一个 image 后,发现还是三个,说明他自己又补了一个。

代码语言:bash
复制
$ replicas-set kubectl delete pods nginx-5f8ng
pod "nginx-5f8ng" deleted

$ replicas-set kubectl get pods
NAME         READY   STATUS    RESTARTS   AGE
nginx-7vmzf  1/1     Running   0          14m
nginx-vr2gb  1/1     Running   0          14m
nginx-wkr-fm 1/1     Running   0          12s

所以推荐使用该种方式创建 pod,保证都会起来。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/12/30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0 前言
  • 1 ReplicaSet 的工作原理
  • 2 何时用ReplicaSet
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档