一文掌握k8s的升级更新策略

简介: K8S中通过`spec.strategy`设置Pod替换策略,支持Recreate(重建)和RollingUpdate(滚动升级)。默认为滚动升级,可设`maxUnavailable`和`maxSurge`控制升级过程,实现无中断更新。可通过xkube平台可视化配置。

简介

K8S中通过spect.strategy来定义新的 Pod 替换为旧的Pod的策略。策略类型分为:重建策略(Recreate)或滚动升级策略(RollingUpdate),默认为 RollingUpdate

两种升级策略

1.Recreate策略

在这种策略中,旧的Pods被终止,然后新的Pods被创建。这种方式简单直接,但在升级过程中会导致服务不可用。

样例

apiVersion: apps/v1
kind: Deployment
metadata:
  name: example-deployment
spec:
  replicas: 3
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: example
    spec:
      containers:
      - name: example-container
        image: example-image:1.0

2. Rolling Update

用于在更新Deployment、StatefulSet、DaemonSet等资源时,逐步替换旧版本的Pod,而不是一次性全部替换。这样可以减少服务中断的风险,并允许在升级过程中监控应用的健康状况。

滚动升级的基本步骤:

  • 定义滚动升级策略‌:在Deployment的spec部分,你可以定义滚动升级的相关参数。

  • 触发滚动升级‌:通过更新Deployment的配置(如镜像版本),Kubernetes将开始执行滚动升级。

参数说明:

Col1 Col2
最大无效实例数(maxUnavailable) 与spec.replicas相比,可以有多少个Pod失效,也就是删除的个数或比例,建议值是0个。比如spec.replicas为3,那升级过程中就至少有3个可用的Pod存在。
最大浪涌(maxSurge) 与spec.replicas相比,可以有多少个Pod存在,建议值是10%。比如spec.replicas为 3,那升级过程中就不能超过4个Pod存在,即按10%(1个)的步长升级,实际升级过程中会换算成数字,且换算会向上取整。这个值也可以直接设置成个数。

样例

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deployment
spec:
  replicas: 3
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1       # 最大额外可以存在的副本数,可以为整数或百分比
      maxUnavailable: 1 # 最大不可用副本数,可以为整数或百分比
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-container
        image: my-image:latest

通过xkube进行设置

通过多集群k8s管理平台xkube的功能可以轻松的设置更新策略,xkube安装部署参考:https://blog.csdn.net/weixin_56364253/article/details/156390146

功能参考下图:
policy.png

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
4月前
|
资源调度 Kubernetes 监控
一文掌握k8s容器的资源限制
在Kubernetes中,合理设置容器的资源请求与限制可保障集群资源高效利用。通过定义CPU和内存的requests与limits,防止资源滥用,提升应用稳定性。结合命名空间配额与工具如xkube,可实现多集群统一管理与可视化配置,优化资源调度。
764 3
|
Kubernetes 负载均衡 算法
【K8S系列】深入解析Service
【K8S系列】深入解析Service
912 0
【K8S系列】深入解析Service
|
存储 Prometheus Kubernetes
k8s安装kube-promethues(超详细)
k8s安装kube-promethues(超详细)
7831 0
k8s安装kube-promethues(超详细)
|
网络协议 安全 Unix
centos7.9系统部署NFS详细流程—2023.04
centos7.9系统部署NFS详细流程—2023.04
1589 0
|
4月前
|
Kubernetes Cloud Native 安全
一文掌握k8s容器的生命周期
容器生命周期钩子是Kubernetes核心机制,支持在容器启动后(postStart)和终止前(preStop)执行自定义逻辑,实现服务注册、优雅停机等操作。结合启动命令,可精细控制应用生命周期,提升云原生应用稳定性与可靠性。
600 4
一文掌握k8s容器的生命周期
|
Java 测试技术 API
解决harbor上删除镜像不释放空间,无需停止harbor
解决harbor上删除镜像不释放空间 docker镜像仓库中镜像的清理,一直是个比较麻烦的事情。尤其是在测试环境当中,每天都会有大量的构建。由此会产生大量的历史镜像,而这些镜像,大多数都没有用。
3762 0
|
4月前
|
数据采集 人工智能 运维
AgentRun 实战:快速构建 AI 舆情实时分析专家
本方案基于函数计算AgentRun平台,打造自动化、可视化的实时舆情分析系统。通过流式架构与隔离浏览器沙箱,实现从数据采集到报告生成的全流程智能处理,解决传统系统滞后、低效、难扩展等痛点,助力企业精准洞察舆论动态。
AgentRun 实战:快速构建 AI 舆情实时分析专家
|
3月前
|
应用服务中间件 Shell nginx
最全的docker命令参数解释及命令用法
本文系统详解Docker核心命令,涵盖容器(run/exec/ps/start/stop等)、镜像(pull/build/push/rmi等)、网络、数据卷及全局参数,并配实操示例与可直接执行的命令,助初学者快速掌握Docker日常运维与开发应用。
1680 129
|
3月前
|
运维 Kubernetes 应用服务中间件
一文讲解kubernetes的gateway Api的功能、架构、部署、管理及使用
Gateway API是Kubernetes官方推出的下一代L4/L7网络网关标准,面向角色(基础设施商、运维、开发)、可移植、表达力强且高度可扩展。它通过GatewayClass、Gateway、HTTPRoute等资源实现权限分离与策略即代码,替代Ingress短板,已获Istio、Envoy、ASM等主流支持。
1396 119
|
4月前
|
存储 Kubernetes 安全
在 Kubernetes 中实现 NFS 动态存储供应:生产级实践指南
本文详解如何在Kubernetes生产环境中基于NFS实现动态存储供应,涵盖NFS服务器部署、`nfs-subdir-external-provisioner`集成、StorageClass优化配置及离线环境下的Harbor私有镜像管理方案,提供完整YAML模板与安全实践,助力构建稳定高效的共享存储体系。