首页 > 其他分享 >在k8S中,deployment升级过程是什么?

在k8S中,deployment升级过程是什么?

时间:2024-02-09 18:22:06浏览次数:24  
标签:滚动 deployment 更新 升级 Deployment 旧版本 Pod k8S

在Kubernetes (k8s) 中,Deployment升级过程是一个受控且平滑的过程,用于将应用的新版本无缝地替换旧版本。以下是Deployment进行滚动升级的基本步骤:

  1. 更新Deployment配置
    • 首先,你需要更新Deployment的yaml配置文件,例如更改镜像标签到新版本的应用程序镜像。
  2. 提交变更
    • 应用这些更改,通过kubectl apply命令或API调用将新的配置应用到集群中。
  3. 启动滚动更新
    • Kubernetes Deployment控制器检测到配置变化后,会开始执行滚动更新策略。默认情况下,它采用滚动更新(RollingUpdate)策略。
  4. 逐步替换Pod
    • 滚动更新策略会按照ReplicaSet中的Pod副本数量和指定的.spec.strategy.rollingUpdate.maxUnavailable.spec.strategy.rollingUpdate.maxSurge 参数来逐步创建新版本Pod,并同时删除旧版本Pod。
      • maxUnavailable 定义了可以有多少个Pod不可用(未就绪)而不会影响服务的整体可用性。
      • maxSurge 则指定了可以比期望副本数多创建多少个Pod,以加速升级过程。
  5. 健康检查
    • 在每个新Pod被创建之后,Kubernetes会根据定义的livenessProbe和readinessProbe来检查新Pod是否已经启动并准备好接收流量。
  6. 流量转移
    • 当新Pod通过健康检查并标记为“就绪”时,Service会逐渐将流量从旧Pod转移到新Pod。
  7. 完成升级
    • 一旦所有旧Pod都被新Pod替换并且新版本的所有Pod都已准备就绪,则升级过程结束。
  8. 回滚机制
    • 如果在升级过程中出现问题,可以通过回滚Deployment到之前的修订版来恢复到之前的工作状态。
  9. 清理旧版本
    • 一旦验证新版本的应用程序正常工作,可以逐步删除旧版本的Pod副本,以释放资源。

综上所述,在整个过程中,Deployment控制器确保满足用户定义的可用性和升级速率限制,从而实现对应用程序无中断或最小化中断的服务更新。

标签:滚动,deployment,更新,升级,Deployment,旧版本,Pod,k8S
From: https://www.cnblogs.com/huangjiabobk/p/18012569

相关文章

  • 在k8S中,Pod的常见调度方式有哪些?
    在Kubernetes(k8s)中,Pod的调度可以通过多种方式来实现其在集群中的节点分配。以下是Pod常见的调度方式:默认调度:默认情况下,Kubernetes调度器会自动根据资源需求(CPU、内存等)、节点标签选择器、污点和容忍度(TaintsandTolerations)、亲和性和反亲和性规则等因素为Pod分......
  • k8s 常用命令
    pod:1、查看所有工作空间的podkubectlgetpods-A2、查看所有pod的标签kubectlgetpods--show-labels3、查看pod的详细信息(如ip)kubectlgetpods-owide4、查看某个pod的报错和详细信息(如查看pod为什么Pending)kubectldescribepoddb-mysql-f7fbfdd68-nf2jk......
  • 打包部署运行web项目:No artifacts marked for deployment
     早期的web项目是没有内置tomcat或者jetty服务器的。不像springboot内置了tomcat服务器,所以可以直接运行。早期的web项目还没有使用springboot框架,故没有内置的服务器,故需要手动拷贝到tomcat/jetty服务器下才能运行。参考:IDEA中运行Tomcat的时候报出:Noartifactsmarkedfor......
  • 解决kubeadm部署的k8s 集群证书过期
    目录一、查看证书过期时间1.1方式一1.2方式二二、通过命令续期2.1修改集群内所有机器的时间,模拟证书在过期的边缘2.2查看证书有效期2.3备份原有数据2.4备份证书2.5更新证书2.6确认证书有效期2.7更新kubeconfig文件2.8更新客户端证书2.9重启相关的po......
  • GCC版本升级
    GCC版本升级因ubuntu版本比较旧,而项目需要更高版本的gcc,故需升级。这里记录源码升级gcc的过程。由于直接下载gcc源码后编译会出现依赖报错,这里直接先记录编译依赖的过程,具体有以下三个依赖:gmpmpfrmpc笔者的编译目录为/home/ubuntu/gcc,故编译指令中的路径,请读者自行替换。......
  • 在K8S中,Pod可能位于的状态有什么?
    在Kubernetes(K8s)中,Pod可能处于以下几种状态:Pending:Pod已经被集群接受,但至少有一个容器镜像尚未创建。这个阶段包括调度Pod到节点的时间、下载容器镜像时间以及等待其他初始化条件满足的过程。ContainerCreating:这是一个过渡状态,表示kubelet正在为Pod创建容器,这包括从镜......
  • 在K8S中,创建一个Pod的主要流程是什么?
    在Kubernetes(简称K8s)中创建一个Pod的主要流程如下:用户请求:用户通过kubectl命令行工具或API接口提交一个Pod的定义,通常是通过YAML或JSON格式的配置文件来描述Pod的详细信息,包括容器镜像、环境变量、资源需求、卷挂载等。APIServer接收入口:用户的请求首先到达Kubernetes......
  • 在K8S中,Pod的重启策略是什么?
    在Kubernetes(K8S)中,Pod的重启策略是通过restartPolicy字段指定的,用于定义当Pod中的容器终止时kubelet应如何处理这些容器。以下是三种主要的重启策略:Always:这是默认的重启策略。如果一个容器终止(无论退出码是什么),kubelet都会自动重启该容器。这意味着只要Pod没有被删除或者节......
  • 在K8S中,Pod的健康检查方式有哪些?
    在Kubernetes(K8s)中,Pod的健康检查主要通过两种类型的探针实现:LivenessProbe和ReadinessProbe。LivenessProbe(存活探针):用于检测容器是否处于正常运行状态。如果LivenessProbe失败,则表明容器已不再健康,并且kubelet会采取相应行动,通常是重启容器。LivenessProbe可......
  • 在k8S中,Pod中的LivenessProbe探针常见方式有哪些?
    在Kubernetes(k8s)中,Pod的LivenessProbe探针常见的方式有以下三种:Exec:通过在容器内部执行一个命令来检查应用是否正常运行。如果命令的退出状态码为0,则认为应用程序是健康的;非0状态码则视为不健康。例如:livenessProbe:exec:command:-cat-/t......