首页 > 其他分享 >在K8S中,Deployment升级策略有哪些?

在K8S中,Deployment升级策略有哪些?

时间:2024-10-09 13:33:20浏览次数:8  
标签:副本 策略 哪些 升级 Deployment Pod K8S spec

在Kubernetes(K8s)中,Deployment的升级策略主要用于控制Pod副本的更新过程,以确保应用程序的平滑过渡和最小化的服务中断。以下是Kubernetes中Deployment升级策略的详细说明:

1. 滚动更新(RollingUpdate)
  1. 概述:
    • 滚动更新是Deployment的默认升级策略。
    • 它通过逐步替换旧的Pod副本,以批次的方式实现平滑的升级过程。
  2. 工作原理:
    • Deployment控制器会根据新的Pod模板创建一个新的ReplicaSet。
    • 新的ReplicaSet开始创建并启动指定数量的新Pod,同时确保集群中至少有一部分旧的Pod仍在提供服务。
    • 当新Pod通过就绪探针(Readiness Probe)验证并标记为就绪状态后,Deployment控制器会继续替换下一个旧的Pod。
    • 这个过程会持续进行,直到所有旧Pod都被新Pod替换完毕。
  3. 配置参数:
    • .spec.strategy.rollingUpdate.maxUnavailable:指定升级过程中允许的最大不可用Pod副本数。
    • .spec.strategy.rollingUpdate.maxSurge:指定在升级过程中允许的额外副本数。
  4. 优势:
    • 实现了不间断服务的目标,在升级过程中应用程序仍然可以提供服务。
    • 提供了灵活的配置参数,可以控制升级的速度和可用性。
2. 删除式更新(Recreate)
  1. 概述:
    • 删除式更新是一种非默认的升级策略,也称为单批次更新。
    • 它通过先删除所有旧的Pod副本,然后再创建新的Pod副本来实现升级。
  2. 工作原理:
    • 当更新策略设定为Recreate时,Deployment控制器会先停止所有旧的Pod副本。
    • 等到所有旧副本都终止后,Deployment控制器会一次性创建出新的Pod副本。
  3. 适用场景:
    • 适用于对短暂停机容忍的环境或无状态应用程序。
    • 因为在删除旧副本和创建新副本之间存在时间差,所以会导致应用程序的短暂中断。
3. 暂停升级(Pause)
  1. 概述:
    • 暂停升级策略用于临时停止Deployment的升级过程。
  2. 工作原理:
    • 可以通过修改Deployment的定义,将.spec.paused设置为true,来停止新副本的创建和旧副本的替换。
    • 当需要恢复升级过程时,可以将.spec.paused设置为false,然后继续完成后续的升级步骤。
  3. 适用场景:
    • 适用于在特定条件下需要暂停升级过程,等待条件满足后再恢复升级的场景。
4. 自定义升级策略

虽然Kubernetes主要提供了滚动更新和删除式更新两种内置的升级策略,但用户还可以通过配置相关参数来自定义升级策略的行为。例如:

  • 通过调整.spec.strategy.rollingUpdate.maxUnavailable.spec.strategy.rollingUpdate.maxSurge参数来控制滚动更新的速度和可用性。
  • 在升级过程中使用预发布期(preference)来允许新旧Pod副本同时存在一段时间,以便进行测试和验证新版本的稳定性。

综上所述,Kubernetes中的Deployment升级策略提供了多种选择,以满足不同应用程序和服务的需求。开发人员和运维人员可以根据实际需求选择合适的策略,并确保在升级过程中实现平滑的过渡和最小化的服务中断。

标签:副本,策略,哪些,升级,Deployment,Pod,K8S,spec
From: https://www.cnblogs.com/huangjiabobk/p/18454028

相关文章

  • 在K8S中,Pod常见调度方式有哪些?
    在Kubernetes(K8s)中,Pod的调度是一个关键过程,它决定了Pod在集群中的哪个节点上运行。K8s提供了多种调度方式,以满足不同应用的需求。以下是Pod常见的调度方式:1.默认调度(自由调度)功能:Kubernetes的默认调度器(kube-scheduler)会根据一系列内置的调度策略自动选择适合的节点。考虑因......
  • 在K8S中,Deployment 升级过程有哪些?
    在Kubernetes(K8s)中,Deployment的升级过程是一个受控且平滑的过程,用于将应用的新版本无缝地替换旧版本。以下是Deployment升级过程的详细步骤:1.更新Deployment配置准备新版本镜像或配置:确定新版本的应用程序镜像或需要更改的配置。更新Deployment的YAML配置文件,例如更改镜像......
  • 在K8S中,初始化容器(initcontainer)作用是什么?
    在Kubernetes(K8s)中,初始化容器(InitContainer)是一种特殊的容器,它在Pod的主容器启动之前运行,并执行一系列初始化任务。以下是关于初始化容器作用的详细解释:1.定义与特性定义:初始化容器是定义在Pod规格中的一个或多个容器,它们在Pod中的任何应用程序容器(即普通的容器)启动之前执行。......
  • 股市里有哪些事儿,是几乎每个人都要经历的?
    Python股票接口实现查询账户,提交订单,自动交易(1)Python股票程序交易接口查账,提交订单,自动交易(2)股票量化,Python炒股,CSDN交流社区>>>初入股市:梦想与残酷现实的碰撞初入股市的美好憧憬初入股市的投资者,就像踏入了一个充满无限可能的新世界。股市在他们眼中,仿佛是一座取之......
  • 企业文件防止外发软件有哪些
    以下是一些常见的企业文件防止外发软件:数据加密软件:可以对文件进行加密,只有授权用户才能解密和访问文件。数据丢失防护软件:可以监控文件的复制、粘贴、移动等操作,并阻止未经授权的文件外发。信息安全管理软件:可以对企业文件进行分类、标记和控制访问权限,防止文件被非授......
  • Kubernetes(K8S)介绍
    官网:Kubernetes应用部署方式演变传统部署:互联网早期,会直接将应用程序部署在物理机上;优点:简单,不需要其他技术的参与。缺点:不能为应用程序定义资源使用边界,很难合理地分配计算资源,而且程序之间容器产生影响。虚拟化部署:可以在一台物理机上运行多个虚拟机,每个虚拟机都是独......
  • 性能测试的类型有哪些
    目录1.基准测试2.负载测试3.压力测试4.峰值测试5.并发测试6.容积测试7.稳定性测试8.可扩展性测试9.配置测试性能测试是为测量或评估被测软件系统与性能效率相关的特性而实施的一类测试,它关注被测系统在不同负载下的各种性能效率。软件系统的性能效率相关特性的覆盖......
  • k8s 修改 pod 时区
    将时区文件挂载到Pod中在定义pod上层控制器的时候,添加一个用于挂载时区的卷,挂载宿主机的时区文件...containers:-name:xxx...volumeMounts:-name:timezonemountPath:/etc/localtimevolumes:-name:timezonehostPath:......
  • java中对比两个对象哪些字段不同(反射获取对象的字段和value值)
    场景:当需要对比两个对象的哪些字段的value值不同时,使用原理:通过反射来获取对象中每个字段的value值,进行对比1.获取需要比对对象的Class对象 比对的是obpPurQualityCheckTaskItem和obpPurQualityTaskItemExportDto对象,但因为他们是两个不同的类,所以都需要获取2.获取需要比......
  • kubekey 快速构建重构测试k8s 环境 allinone单机 or cluster 集群
    exportKKZONE=cncurl-sfLhttps://get-kk.kubesphere.io|VERSION=v3.0.13sh-生成配置k8s集群yml指定k8s版本及管理面板./kkcreateconfig--with-kubernetesv1.23.10--with-kubespherev3.4.1apiVersion:kubekey.kubesphere.io/v1alpha2kind:Clustermetada......