首页 > 其他分享 >Deployment资源的升级过程

Deployment资源的升级过程

时间:2025-01-23 22:20:55浏览次数:1  
标签:回滚 滚动 升级 nginx Deployment Pod 资源

Kubernetes Deployment 升级过程

在 Kubernetes (K8S) 中,Deployment 的升级过程主要包括以下几个步骤:

1. 更新 Deployment 配置

当需要对应用程序进行升级时,首先需要更新 Deployment 的 YAML 配置文件。可以更改的内容包括但不限于:

  • 容器镜像版本(如从 v1.0 升级到 v2.0
  • 应用配置(环境变量、命令参数等)
  • 资源请求与限制
  • 更新策略和其他元数据

示例 YAML 文件:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.22.0  # 更新为新的版本
        ports:
        - containerPort: 80

2. 选择升级策略

默认情况下,Deployment 使用 滚动升级(Rolling Update) 策略:

  • 滚动升级会逐步替换旧版 Pod,确保整体服务保持可用。
  • 每次创建新 Pod 时,旧 Pod 继续提供服务,直到新 Pod 准备就绪。

另一种升级策略是 Recreate 策略

  • 先删除所有现有的 Pod,然后再创建新的 Pod。

滚动升级 是推荐策略,它最大程度地减少了服务中断。

3. 实施滚动升级

在滚动升级过程中:

  1. 创建新的 ReplicaSet:Deployment 控制器会基于新的 Pod 模板创建一个新的 ReplicaSet。
  2. Pod 的逐步创建和替换:新的 ReplicaSet 会创建新 Pod,同时确保始终有部分旧 Pod 在运行。可以使用 .spec.strategy.rollingUpdate.maxUnavailable 来控制最大不可用 Pod 数量(例如,设置为 1 表示每次最多允许一个 Pod 不可用)。
  3. 就绪探针检查:新 Pod 启动后,会通过就绪探针验证。如果 Pod 准备好,它将替换掉旧的 Pod。
  4. 替换持续进行:直到所有旧 Pod 被新 Pod 替换完毕。

4. 监控和确认升级

可以使用 kubectl 命令或 Kubernetes Dashboard 监控 Deployment 和 Pod 的状态。

  • 查看 Deployment 状态:

    kubectl rollout status deployment/my-nginx-deployment
    
  • 查看 Pod 健康状况:

    kubectl get pods
    

确认所有新 Pod 都已启动且应用程序正常运行后,表示升级完成。

5. 回滚机制

如果在升级过程中出现问题,可以通过回滚操作回到上一个稳定版本。Kubernetes 会自动维护每个 Deployment 的历史记录,并允许回滚。

  • 执行回滚命令:
    kubectl rollout undo deployment/my-nginx-deployment
    

该命令会将 Deployment 回滚到上一个稳定版本。


Kubernetes 的 Deployment 升级过程通过滚动升级策略,确保了最小的服务中断和最大程度的可恢复性。整个过程分为以下步骤:

  1. 更新 Deployment 配置文件。
  2. 选择适合的升级策略(默认是滚动升级)。
  3. 在滚动升级过程中逐步替换旧的 Pod,并监控 Pod 的健康状态。
  4. 确认升级完成后,回滚到旧版本的操作可以随时进行。

标签:回滚,滚动,升级,nginx,Deployment,Pod,资源
From: https://www.cnblogs.com/leojazz/p/18688705

相关文章

  • 创建一个deploy资源的yaml文件需要哪些内容
    在Kubernetes(K8s)中,编写一个Deployment的YAML文件通常包括以下几个关键部分:1.apiVersion这是你希望使用的KubernetesAPI版本。对于Deployment,一般使用apps/v1版本。apiVersion:apps/v12.kind这指定了资源的类型,Deployment类型是Deployment。kind:Deplo......
  • 蓝牙芯片HS6621CG-C丰富IO口资源集成红外编码语音采集功能超高性能已移植NFC例程支持
    2.4Ghz的soc蓝牙5.1芯片HS6621CC语音遥控/智能门锁M4F内核兼容NORDIC的2.4G私有协议超低功耗,丰富IO口资源集成红外编码语音采集功能超高性能已移植NFC例程支持语音蓝牙遥控智能门锁智能家居等应用简介:HS6621CxC是一种功耗优化的真正的片上系统(SOC)解决方案,既适用于蓝牙低能耗,也......
  • CloseMaxScript6 资源文件之 dll as mse
    概述将dll作为mse文件使用filein就能载入dll文件,简化交付、简化调用同时也是兼容3dmax2026新运行时的方案之一打包脚本fnbuild=( globalCmxs6Publisher,Cmxs6SettingsModel globalcmxs6_cli_mode=true localcurDir=getFilenamePath(getThisScriptFilename())......
  • 腾讯通停服后升级迁移路径,与RTX消息互联互通,可并行使用
    一、腾讯通RTX继续使用的主要挑战自腾讯通RTX停止更新并下架官网后,用户不仅无法获得更新和技术支持,还面临着许多重要的挑战:●不支持国产系统和移动端:腾讯通RTX仅兼容Windows和Mac系统,无法在国产操作系统及移动设备上正常运行。●组织架构同步存在缺陷:腾讯通RTX在组织架构同步......
  • 基于Springboot的前后端分离医院资源管理系统设计和实现
    ......
  • Linux升级rsync
    介绍:查看当前版本: rsync --version找到安装目录:whichrsync在管网处下载最新tar.gz包,解压后,进入目录,依次执行以下命令:第一步:######配置 sudo ./configure--prefix=/usr/local######升级新版本可能会报错:Configurefoundthefollowingissues:-Failedtofindxx......
  • 用户案例 | 某商业银行引入白鲸调度系统实现系统升级与业务场景深度支持
    导读某地方性股份制商业银行主要提供个人金融、公司金融、国际金融等方面的业务,承担着大量的金融数据处理与分析任务。这些任务对于确保银行的运营效率、风险管理和客户服务至关重要。过去,该银行一直依赖自建的调度系统来管理和协调这些数据任务,确保数据的准确性和及时性。然而,......
  • 升级内核
    好久不见啊亲们,小橘回来啦,最近加班实在太累,不知道有没有宝子在玩互联网的,我特别想学习视频剪辑类的知识,来记录我这苟延残喘的小日子。言归正传,今天咱们聊聊如何升级内核吧!环境准备:aptupdateaptsearchlinuximage|grep5.15aptinstalllinux-image-unsigned-5.15.0-94......
  • 腾讯通RTX停更后升级路径,兼容移动端和Linux系统
    一、腾讯通RTX继续使用的核心痛点随着腾讯通RTX停止更新并下架官网,用户无法再获得技术支持、版本更新和资源下载服务,日常办公面临诸多不便。以下几个问题尤为突出:●不兼容国产系统与移动端:腾讯通RTX仅支持Windows和Mac系统,无法运行在统信UOS、银河麒麟等国产操作系统和Android......
  • 桂云网络:助力流程管理的数字化升级
    桂云网络:助力流程管理的数字化升级在瞬息万变的数字时代,企业需要更高效、更灵活的流程管理解决方案。桂云网络(简称桂云或OSG)秉承"技术驱动创新"的使命,为国内企业量身定制了一款卓越的流程引擎产品——桂花流程引擎(Osmanthus)。该产品基于行业领先的Camunda7深度扩展而来......