首页 > 其他分享 >在K8S中,deploy升级过程包括什么?

在K8S中,deploy升级过程包括什么?

时间:2024-01-29 09:14:46浏览次数:24  
标签:回滚 Kubernetes deploy 升级 Deployment Pod K8S 过程

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

  1. 更新Deployment配置

    • 当需要对应用程序进行升级时,通常会更新Deployment的YAML配置文件,可以更改的内容包括但不限于:
      • 容器镜像版本(从v1.0升级到v2.0)
      • 应用配置(环境变量、命令参数等)
      • 资源请求与限制
      • 更新策略和其他元数据
  2. 选择升级策略

    • 默认情况下,Deployment使用滚动升级(Rolling Update)策略。
    • 滚动升级会在保持整体服务可用的前提下逐步替换旧Pod,即首先创建新的Pod实例运行新版本应用,然后删除旧版本Pod实例。
    • 另一种策略是Recreate策略,它会先删除所有现有的Pod,然后再创建全部新的Pod。
  3. 实施滚动升级

    • 在滚动升级过程中:
      • Deployment控制器根据新的Pod模板创建一个新的ReplicaSet。
      • 新的ReplicaSet开始创建并启动指定数量的新Pod,同时确保任何时候集群中至少有一部分旧Pod仍在提供服务(可以通过设置.spec.strategy.rollingUpdate.maxUnavailable来控制最大不可用Pod数量)。
      • 当新Pod变为Ready状态且通过就绪探针验证后,才会继续替换下一个旧Pod。
      • 这个过程会持续进行,直到所有旧Pod都被新Pod替换完毕。
  4. 监控和确认升级

    • 在升级过程中,可以通过kubectl或Kubernetes Dashboard监控Deployment的状态以及Pod的健康状况。
    • 确认所有新Pod都成功启动并且应用程序正常响应后,升级过程完成。
  5. 回滚机制

    • 如果在升级过程中发现问题,可以立即执行回滚操作回到上一个已知稳定版本。
    • Kubernetes自动维护着每个Deployment的历史记录,允许用户轻松地基于修订历史(revision history)回滚到之前任何一个版本。

综上所述,整个升级流程旨在实现最小的服务中断和最大程度的可恢复性。

标签:回滚,Kubernetes,deploy,升级,Deployment,Pod,K8S,过程
From: https://www.cnblogs.com/huangjiabobk/p/17993765

相关文章

  • 在K8S中,deploy和Statefulset有何区别?
    在Kubernetes(K8s)中,Deployment和StatefulSet是两种不同类型的控制器对象,它们设计用于管理Pod的生命周期,但在管理和部署的应用程序类型、持久性保证以及Pod标识等方面存在显著区别:Deployment:无状态应用:Deployment主要用于部署无状态服务,即服务实例之间可以相互替换且不需要保留......
  • 在K8S中,Service类型有哪些?
    在Kubernetes(简称K8s)中,Service是定义访问Pod的一种抽象方法,它提供了负载均衡和网络代理功能。以下是KubernetesService的几种主要类型:ClusterIP(默认类型)创建一个仅集群内部可以访问的虚拟IP。通过这个IP地址,Kubernetes会将流量路由到与Service关联的一组Pod。这种类型......
  • 在K8S中,怎样实现数据持久化?
    在Kubernetes(简称K8s)中,数据持久化是通过Volume机制来实现的。Volume是一个抽象概念,它代表了Pod能够访问的存储资源,这些资源可以是本地磁盘、网络文件系统(NFS)、云提供商提供的块存储或对象存储等。以下是Kubernetes实现数据持久化的关键组件和过程:Volume:Volume为Pod提供了一......
  • 离线部署K8s V1.29.1版本
    准备私用的系统ISO镜像为:CentOS-7-x86_64-Everything-1908.iso安装方式为带GUI的服务器架构说明K8s集群规划VIP:192.168.24.2        通过keepalived提供harbor:镜像仓库、nfs、ntp        连接外网;        内网地址:192.168.24.5k8s-master0:......
  • k8s笔记17(组播测试代码)
    摘要:mc_svcttl;mc_clittl;mcjoin;smcrouted;ompingk8s笔记13(SMCRoute)_ATCtoK8s空管智能运维的技术博客_51CTO博客(第2项)k8s笔记14_ATCtoK8s空管智能运维的技术博客_51CTO博客(第2、8项)测试OK:(前提k8s-node07和k8s-node08运行smcrouted)--->k8s-node07smcroute.confmgroupfromen......
  • grafana版本升级
    将grafana从8.0升级到8.0.7#下载新版本wgethttps://mirrors.tuna.tsinghua.edu.cn/grafana/yum/rpm/Packages/grafana-8.0.7-1.x86_64.rpm--no-check-certificate#停止grafana服务,并进行备份systemctlstopgrafana-servercp-rp/var/lib/grafana/var/lib/grafana_2024012......
  • k8s之helm部署mysql集群
    一、简介HelmHelm是Kubernetes的包管理器。ChartHelm使用的包格式称为chart。chart存储在ChartRepository。chart就是一个描述Kubernetes相关资源的文件集合。单个chart可以用来部署一些简单的,类似于memcachepod,或者某些复杂的HTTP服务器以及web全栈应用、数据库、缓......
  • OpenIM (Open-Source Instant Messaging) Mac Deployment Guide
    Thisguideprovidesstep-by-stepinstructionsfordeployingOpenIMonaMac,includingbothsourcecodeandDockerdeploymentmethods.##PreliminaryEnvironmentSetupEnsureacleanworkingenvironment:1.**CreateaNewDirectory**:Startinanewdirec......
  • 在K8S中,deploy的yaml如何编写?
    在Kubernetes(简称K8s)中,编写一个Deployment的YAML文件通常包括以下几个关键部分:点击查看代码apiVersion:apps/v1#KubernetesAPI版本,根据你的集群版本选择合适的API版本kind:Deployment#资源类型为Deploymentmetadata:name:my-deployment#部署的名称namesp......
  • 在K8S中,api-server究竟是如何实现高可用?
    在Kubernetes(K8S)中,实现APIServer(kube-apiserver)的高可用性是构建稳定和可靠的集群架构的关键部分。以下是KubernetesAPIServer实现高可用的主要方法:冗余部署:通常会部署多个APIServer实例,并且它们之间是无状态的,这样任何一个实例崩溃或维护时,其他实例可以继续处理请求。......