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

k8s --- resource: Pod, ReplicaSet and Deployment

k8s --- resource: Pod, ReplicaSet and Deployment

  • Pod
  • ReplicaSet
  • Deployment
  • Example

Pod

Pod 是 Kubernetes 中能够被创建和管理的最小、最简单的可部署单元。

角色:

  • 就像公司里的单个员工,是具体干活的人。
    功能:
  • 一个 Pod 封装了一个或多个应用容器、存储资源、唯一的网络 IP 以及运行选项。

特点:

  • 生命短暂:Pod 是“易逝的”。它可能因为节点故障、资源不足或被更新而随时被销毁。就像员工可能会离职一样。
  • IP 可变:Pod 重启或重建后,会获得一个新的 IP 地址。
  • 最小单元:你很少会直接直接创建独立的 Pod,因为它的生命周期太不稳定了

在这里插入图片描述

声明一个Nginx pod的Yaml文件:

apiVersion: v1
kind: Pod
metadata:name: nginx-pod
spec:containers:- name: nginximage: nginx:1.19

ReplicaSet

ReplicaSet 的核心作用是确保指定数量的、完全相同的 Pod 副本始终处于运行状态。

角色:

  • 就像公司里的部门经理,他不亲自干活,但他负责确保他这个岗位(比如“前端开发工程师”)始终有足够数量的员工在岗。

功能:

  • 维持副本数:它通过一个标签选择器来识别它管理的 Pod。你告诉它 replicas: 3,它就会不断地检查,确保任何时候都有恰好 3 个匹配的 Pod 在运行。
  • 故障恢复:如果一个 Pod 崩溃了(员工生病了),ReplicaSet 会检测到并立即创建一个新的 Pod 来替代它(招聘新员工)。

特点:

  • 只负责数量:它只关心 Pod 的数量,不关心 Pod 的版本更新等复杂操作。
  • 通常不直接使用:就像你不会直接去跟经理沟通,你通常不直接创建 ReplicaSet,而是通过它的上司——Deployment。

声明一个确保始终有 3 个 Nginx Pod 的 ReplicaSet的Yaml文件:

apiVersion: apps/v1
kind: ReplicaSet
metadata:name: nginx-replicaset
spec:replicas: 3 # 经理的目标:维持3个员工selector: # 经理的识别标准:身上有标签 `app: nginx`matchLabels:app: nginxtemplate: # 经理的招聘模板:新员工长这样metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.19

Deployment

Deployment 为 Pod 和 ReplicaSet 提供声明式更新,是管理无状态应用的首选对象。

角色:

  • 就像公司里的总监,他负责一个完整的业务应用(比如“电商网站前端”)。

功能:

  • 管理 ReplicaSet:他手下管理着经理(ReplicaSet)。
  • 提供滚动更新:当需要升级应用版本时(比如从 Nginx 1.19 升级到 1.20),Deployment 会创建一个新的 ReplicaSet(新经理),并逐步增加新 Pod 的数量、减少旧 Pod 的数量,实现零停机部署。
  • 轻松回滚:如果新版本有问题,总监可以一键将应用回滚到之前的版本。
  • 版本记录:每次更新都会留下记录,方便追踪。

特点:

  • 最常用:这是我们部署无状态应用时最常用、最推荐的资源对象

一个部署 Nginx 的 Deployment,ReplicaSet数量为3,支持滚动更新

apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deployment
spec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.19 # 更新这个镜像版本,Deployment就会触发滚动更新ports:- containerPort: 80

Example

通常情况下,部署一个服务是通过定义Deployment的方式来部署

在这里插入图片描述
场景演绎:

初始状态:你创建一个 Deployment,指定 replicas: 3,镜像为 nginx:1.19

  • Deployment 开始工作,他创建了一个 ReplicaSet A来管理这 3 个 Pod
  • ReplicaSet A根据模板创建了 3 个 nginx:1.19 的 Pod

进行滚动更新:你将 Deployment 的镜像改为 nginx:1.20 (replicas: 3依然为3)

  • Deployment 创建了一个新的 ReplicaSet B,并设定其目标副本为 1
  • ReplicaSet B创建了 1 个新的 nginx:1.20 的 Pod
  • Depolyement 逐步将ReplicaSet A的副本数减至 2,将ReplicaSet B的副本数增至 2,直到最后ReplicaSet A 的副本数为 0,ReplicaSet B 的副本数为 3
  • 最终结果:所有 Pod 都升级到了新版本,整个过程服务不中断

Pod 发生故障:

  • 其中一个 Pod 员工崩溃了
  • ReplicaSet B检测到管理的 Pod 数量只有 2 个,与期望的 3 个不符
  • ReplicaSet B立即创建一个新的 Pod,使总数恢复为 3
http://www.dtcms.com/a/568722.html

相关文章:

  • App 上架需要什么?从开发者账号到开心上架(Appuploader)免 Mac 上传的完整流程指南
  • 高端定制网站网站建设建设多少钱
  • 写SCI论文需要用到的工具这了
  • WebFlux 执行流程与背压机制剖析
  • wordpress4.9+多站点WordPress购物按钮
  • 深入解析Kubernetes中的Ephemeral Containers:故障诊断的“急救针”
  • 安卓二次打包技术深度拆解:从逆向篡改到防护逻辑
  • 蚱蜢算法原理,公式,应用案例GOA-BP
  • Android 开发问题:resource style/Theme.Material3.DayNight.NoActionBar not found.
  • 基于有限差分法的二维边值问题数值分析
  • 简单的网站维护资阳全搜索app
  • 微服务 - 网关统一鉴权
  • 八股已死、场景当立(场景篇-微服务保护篇)
  • 视觉差的网站长沙企业网站排名优化
  • 【代码随想录算法训练营——Day58】图论——117.软件构建、47. 参加科学大会
  • TDengine 字符串函数 CHAR_LENGTH 用户手册
  • Jupyter选择内核时如何找到虚拟环境
  • 【深度强化学习】#6 TRPOPPO:策略优化算法
  • 微雪ESP32-S3-Touch-LCD-2.8-Test编译成功方法esp-idf vscode
  • ASP.NET Core Blazor 核心功能二:Blazor表单和验证
  • 基于大数据的全国降水可视化分析预测系统
  • 阳山网站seo西安官网seo技巧
  • Clip Studio Paint EX v2.0.6 For MacOS – 官方版本+逆向补丁下载,M4芯片Mac实机测试好用
  • 商户查询更新缓存(opsForHash、opsForList、ObjectMapper、@Transactional、@PutMapping)
  • 河北省建设机械会网站首页衡水做网站报价
  • Java 实现 Word 文档文本框操作:添加与删除详解 (使用 Spire.Doc for Java)
  • PDF或Word转图片(多线程+aspose+函数式接口)
  • .docx 和 .doc 是 Microsoft Word 文档的两种主要文件格式
  • RabbitMQ 实战:理解“不公平分发(Unfair Dispatching)”机制
  • 前端缓存技术和使用场景