滚动升级回滚

Kubernetes云平台管理实战:滚动升级与秒级回滚 Kubernetes Deployment 提供两种核心更新策略:重建更新(Recreate)与滚动更新(RollingUpdate)[Recreate 策略通过先终止所有旧版本 Pod 再创建新版本实现更新,会导致服务瞬时不可用;而滚动更新(RollingUpdate)通过,确保升级过程中服务持续可用,是生产环境的主流选择[][][其核心原理是通过 Deployment 控制器创建新 ReplicaSet(RS),按比例启动新版本 Pod 并销毁旧版本,同时通过maxSurge和。 阅读详情

滚动升级回滚

ReplicationController

资源文件

apiVersion: v1
kind: ReplicationController
metadata:
  name: kubia-v1
  labels:
    app: kubia
spec:
  replicas: 3
  template:
    metadata:
      name: kubia
      labels:
        app: kubia
    spec:
      containers:
        - image: luksa/kubia:v1
          name: nodejes
---
apiVersion: v1
kind: Service
metadata:
  name: kubia
spec:
  type: LoadBalancer
  ports:
    - port: 80
      targetPort: 8080
  selector:
    app: kubia

apply资源到K8S

kubectl create namespace update-rollback

kubectl apply -f kubia-v1.yaml -n update-rollback

通过暴露端口访问资源

curl http://暴露地址

执行滚动升级指令

kubectl rolling-update kubia-v1 kubia-v2 --image=luksa/kubia:v2 -n update-rollback

Deployment

资源文件

apiVersion: apps/v1
kind: Deployment
metadata:
  name: kubia
  labels:
    app: kubia
spec:
  replicas: 3
  selector:
    matchLabels:
      app: kubia
  template:
    metadata:
      name: kubia
      labels:
        app: kubia
    spec:
      containers:
        - image: luksa/kubia:v1
          name: nodejes
---
apiVersion: v1
kind: Service
metadata:
  name: kubia
spec:
  type: LoadBalancer
  ports:
    - port: 80
      targetPort: 8080
  selector:
    app: kubia

apply资源到K8S

kubectl create namespace update-rollback

kubectl apply -f kubia.yaml -n update-rollback

通过暴露端口访问资源

curl http://暴露地址

修改镜像版本触发滚动升级到v2

apiVersion: apps/v1
kind: Deployment
metadata:
  name: kubia
  labels:
    app: kubia
spec:
  replicas: 3
  minReadySeconds: 10
  selector:
    matchLabels:
      app: kubia
  template:
    metadata:
      name: kubia
      labels:
        app: kubia
    spec:
      containers:
        - image: luksa/kubia:v2
          name: nodejes
---
apiVersion: v1
kind: Service
metadata:
  name: kubia
spec:
  type: LoadBalancer
  ports:
    - port: 80
      targetPort: 8080
  selector:
    app: kubia
  • minReadySeconds:表示新创建pod至少要成功运行多久之后才能视为可用

  • 通过strategy属性可以设置升级的方式。默认为滚动升级(RollingUpdate),另一种为删除所有旧Pod再创建新pod(Recreate)

    • maxSurge:允许超出期望副本数的百分比的pod数量。也可以直接指定个数,默认值为1

    • maxUnavailable:允许不可用pod占期望副本数的百分比。也可以直接指定个数,默认值为1

spec:
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
    type: RollingUpdate

修改镜像版本触发滚动升级到v3

apiVersion: apps/v1
kind: Deployment
metadata:
  name: kubia
  labels:
    app: kubia
spec:
  replicas: 3
  minReadySeconds: 10
  selector:
    matchLabels:
      app: kubia
  template:
    metadata:
      name: kubia
      labels:
        app: kubia
    spec:
      containers:
        - image: luksa/kubia:v3
          name: nodejes
---
apiVersion: v1
kind: Service
metadata:
  name: kubia
spec:
  type: LoadBalancer
  ports:
    - port: 80
      targetPort: 8080
  selector:
    app: kubia

查看历史版本

kubectl rollout history deployment kubia -n update-rollback

查历史版本指定版本pod template信息

kubectl rollout history deployment kubia --revision=2 -n update-rollback

回滚到上一个版本

kubectl rollout undo deployment kubia -n update-rollback
  • rollout命令适用于deployments、daemonsets、statefulsets

回滚到指定版本

kubectl rollout undo deployment kubia --to-revision=1 -n update-rollback

限制历史版本数量

通过revisionHistoryLimit可以限制历史版本的数量,默认为10

spec:
  revisionHistoryLimit: 10

暂停滚动升级

kubectl rollout pause deployment kubia -n update-rollback

恢复滚动升级

kubectl rollout resume deployment kubia -n update-rollback

使用就绪探针阻止问题版本滚动升级

apiVersion: apps/v1
kind: Deployment
metadata:
  name: kubia
  labels:
    app: kubia
spec:
  replicas: 3
  minReadySeconds: 10
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
    type: RollingUpdate
  selector:
    matchLabels:
      app: kubia
  template:
    metadata:
      name: kubia
      labels:
        app: kubia
    spec:
      containers:
        - image: luksa/kubia:v3
          name: nodejes
          readinessProbe:
            periodSeconds: 1
            httpGet:
              path: /
              port: 8080
---
apiVersion: v1
kind: Service
metadata:
  name: kubia
spec:
  type: LoadBalancer
  ports:
    - port: 80
      targetPort: 8080
  selector:
    app: kubia
  • maxUnavailable为0,maxSurge为1:保证pod一个一个被替换
  • 就绪探针检测pod是否正真可访问

查看升级状态

查看升级状态可以发现升级流程一直没有继续下去

kubectl rollout status deployment kubia -n update-rollback

查看pod情况

查看pod情况可以看到pod一直没到就绪状态,应该就绪探针检测到异常

kubectl get pods -n update-rollback

取消出错版本滚动升级

kubectl rollout undo deployment kubia -n update-rollback

Helm

查看Release列表

helm list -n aim-upgrade-test2

查看Release历史版本

helm history devops-wuvreb-register -n aim-upgrade-test2

回滚Release到历史版本

回滚到指定版本

helm rollback devops-wuvreb-register 2 -n aim-upgrade-test2

在这里插入图片描述

查看release状态

helm status devops-wuvreb-register --show-desc -n aim-upgrade-test2
Kubernetes 滚动升级与回滚:生产级实践终极指南 发布成功不等于rollout 完成错误率无明显上升延迟无明显回退SLO 在可接受范围内如果发布是否成功,仍然靠人工“看一眼 Pod 状态”,那发布体系本身就是不完整的。rollout 完成核心业务指标稳定错误率、延迟无明显回退SLO 在可接受区间发布必须和强绑定回滚必须有明确、自动化的触发条件没有监控参与的发布,本质上都是“盲飞”。Kubernetes 滚动升级解决的是如何不停机换 Pod, 回滚机制解决的是如何快速止损, 而真正成熟的发布体系,解决的是—— 阅读详情

相关推荐

PFC中pb模型实战:从胶结参数设置到破坏模拟全流程解析

本文详细解析了PFC软件中平行胶结模型(PB模型)的实战应用全流程。从胶结参数(pb_kn, pb_ks, pb_ten等)的物理意义与精准赋值入手,深入探讨了模型构建、胶结施加以避免初始损伤的技巧,并系统介绍了破坏过程的监测、阈值判定方法以及高级可视化与常见问题诊断。旨在帮助岩土工程与颗粒材料研究者掌握从参数调试到破坏模拟的核心操作,提升数值模拟的准确性与效率。

php55的博客 1075

helm滚动更新mysql_《每天5分钟玩转 Kubernetes》11 Helm 升级、回滚 release

已经通过 helm 安装了 mysql,其中的 mysql 版本是 5.7.14,现在想升级到 5.7.15,执行命令:helm upgrade --set imageTag=5.7.15 mydb stable/mysql// 返回Release "mydb" has been upgraded. Happy Helming!LAST DEPLOYED: Fri Dec 14 07:04:14 ...

weixin_29356575的博客 621

基于labview实现MYSQL数据库查询功能

基于labview实现MYSQL数据库查询功能 前言: labview是一款功能强大的图形化编程软件,也就是俗称的G语言。 本篇将介绍如何利用labview对MYSQL进行列表分页,范围查询及模糊查询等几个可广泛应用的简易功能,但事实上labview并不擅长处理数据库,下面详细代码可体现。 数据库的环境配置方面的问题这里就不赘述了。 我们直接进入主题。 1.以下为查询界面 2.分页实现细节: ...

qq470783138的博客 7558

helm 自动滚动部署

通常 ConfigMaps 或 Secrets 作为配置文件注入到容器中,或者有其他需要滚动 pod 的外部依赖项更改。根据应用程序的不同,如果使用后续helm upgrade的 . 如果另一个文件发生更改,该sha256sum函数可用于确保更新部署的注释部分: kind: Deployment spec: template: metadata: annotations: checksum/config: {{ include (print $.Template.Ba

爱死亡机器人 1006

【图文步骤】EC-Engineer部分操作详细步骤

EC-Engineer部分功能详细使用手册

weixin_42212468的博客 6177

简单搭建 可视化日志+链路追踪

JAVA 可视化日志、链路追踪、plumeLog、Tlog、Logback

qq_39535439的博客 1206

Helm应用以及服务升级与回滚

Helm应用以及服务升级与回滚 helm:包管理工具 官方提提供的仓库:https://hub.helm.sh/ Charts:是一个Helm的程序包,它包含了运行一个kubernetes应用程序所需要的镜像、依赖关系和资源定义等 Release:应用程序运行charts后,得到的一个实例 部署一个实例: helm install + charts -n release名称 根据以一个包运行一个实...

weixin_45636702的博客 6932

ADC学习(3)——采样电路

第三章 采样电路

夏风喃喃的博客 3万+

helm使用

文章目录helm概念更新常用命令helm安装方式helm 调试chart目录结构更新 helm upgrade版本回滚参考 helm概念 Helm 有两个重要的概念:chart 和 release。 ​ chart 是创建一个应用的信息集合,包括各种 Kubernetes 对象的配置模板、参数定义、依赖关系、文档说明等。chart 是应用部署的自包含逻辑单元。可以将 chart 想...

lisai14789的博客 1501

固态变压器SST 1.1 课程整体框架与学习路径

本课程围绕固态变压器(SST)全生命周期工程化流程设计,构建"规范要求-理论基础-设计方法-仿真验证-工程落地"的闭环学习体系,完整覆盖GB/T 40429-2021标准要求。课程分为基础认知、核心设计、合规验证、工程落地和前沿拓展五大模块,采用理论讲解与工程实践深度融合的教学路径,通过规范条款拆解、仿真预验证、硬件实现、试验检测等环节,培养学员从设计到落地的完整能力。课程强调标准合规性,每个设计环节均有明确规范约束,并提供标准化工程模板,确保学习成果可直接应用于实际项目开发。

技术工作者 999

数仓建模—维度建模之维度表

首先要学会识别维度,维度是相对稳定的、可抽象具有共性的、固有的(天然的)描述度量或事实的上下文属性信息,失去维度信息的度量信息是没有意义的或者说是失去维度信息的事实表是没有意义的。其次要掌握维度表的设计原则和设计流程,从而更加科学的设计维度表,其实这些东西都是术,我们一直都说一句话大道至简,其实如果你掌握了精髓,抛开这些术也可以做到得心应手,这就像张无忌练太极剑一样,忘记了才能达到道的境界,也就是无我,如果做不到就记住这些原则加以应用从而达到术的境界。

2401_84052244的博客 4364

helm常用命令

kubectl get all -n ns //查看ns下所有的控制器信息(deployment\pv\service\pod\stafullset\daemonset\replicaset等)kubectl exec -it podname -n ns bash //进去pod里面 (docker exec -it containderid bash)kubectl logs -f --tail=200 podname -n ns //打印pod的日志。

qq_21305943的专栏 2140

如何使用支付宝订阅cursor会员?

Cursor被X收购后,订阅流程已更新,现支持国内支付宝支付。用户需在官网注册账号,选择套餐并填写中国地区信息,支付时扫码支付宝完成订阅。注意:订阅为自动续费,若仅试用一个月,务必在支付宝中关闭自动续费,避免扣费。新账号首月半价,建议注册新号以节省费用。

猿小白的博客 397

K8S 滚动升级与回滚

Kubernetes 中采用ReplicaSet(简称RS)来管理Pod。 环境及K8S部署见上篇: centos7 Kubeadm安装配置K8S 及Dashboard外部服务 https://blog.youkuaiyun.com/oToyix/article/details/117963839 一、准备工作 1、镜像两个 镜像名 curl nginx:latest Welcome to nginx! nginx:v6 Thank you for otoyix. 2、yaml文件 te

oToyix的博客 2095

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Kafka与ZooKeeper滚动升级及回滚实施方案

本文详细介绍了 Kafka 和 ZooKeeper 集群的滚动升级及回滚实施方案。升级目标包括将 Kafka 从 2.2.0 升级至 3.7.0,ZooKeeper 升级至 3.8.4,并确保服务连续性和数据完整性。方案分为升级前准备、ZooKeeper 滚动升级、Kafka 滚动升级三部分。升级前准备包括全量数据备份、版本兼容性验证和回滚工具链准备。ZooKeeper 和 Kafka 的升级均采用单节点逐步升级的方式,确保集群整体稳定。回滚流程针对升级过程中可能出现的异常情况,提供了详细的回滚步骤和触发条

memory23的博客 1730

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

k8s滚动升级_kubernetes(k8s)Deployment滚动升级和回滚

滚动升级示例yamlapiVersion: apps/v1kind: Deploymentmetadata:name: nginx-deploylabels:k8s-app: nginx-demospec:selector:matchLabels:app: nginxreplicas: 3template:metadata:labels:app: nginxspec:containers:- na...

weixin_39534780的博客 816

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

k8s入门-使用deployment部署nginx进行滚动升级和回滚操作

文章目录一、Deployment简介二、使用Deployment部署nginx1.编写yaml文件使用Deployment2、使用Service暴露nginx端口三、滚动升级和回滚版本1、滚动升级 一、Deployment简介 Deployment为Pod和ReplicaSet提供了一个声明式定义方法,在Kubernets中是一种资源控制器,用来替代以前的ReplicationController来方便管理应用,典型的应用场景包括: 定义Deployment来创建Pod和ReplicaSet 滚动升级和

qq_43647217的博客 5039

kubernetes 的 滚动升级和回滚(rollout)

产品部署完成上线之后,经常遇到需要升级服务的要求(只考虑更新镜像),以往操作流程大致如下: # 方式一:找到 master具体调度到的所有目标node,删除其对应的镜像文件 # 方式二:修改 file.yaml中镜像拉取策略为Always # 删掉旧pod,并重新创建 kubectl delete -f /path/file.yaml kubectl create -f /path/file...

nickDaDa的博客 3078

Kubernetes基础:滚动升级回滚:rolling-update之rollback

上篇文章介绍了在RC中的滚动升级,这篇继续介绍RC中回滚的方式。

知行合一 止于至善 4988

HDFS集群滚动升级以及回滚相关

在hadoop v2中,HDFS支持namenode高可用(HA),使得不停机升级HDFS变的可行。注:从hadoop2.4.0开始才支持滚动升级因此为了在不停机的情况下升级hdfs集群,必须使用HA设置集群在HA集群中,有两个或多个namenode,许多DataNode,一下journalnode和一下zookeepernodeJN相对稳定,在大多数情况下,升级HDFS时不需要升级滚动升级过程中,仅针对NNS和DNS,JNS和ZKNS都没有,升级JN和ZKN可能会导致集群停机。

weixin_49750432的博客 1665

HDFS集群滚动升级和降级回滚

HDFS集群滚动升级和降级回滚

GG Bond 的博客 1064

在Kubernetes中,如何实现滚动升级和回滚

在这些过程中,Kubernetes会根据Pod的状态和所需的副本数量进行自动调度和平衡。通过这种方式,滚动升级和回滚可以在不影响应用程序服务的情况下进行。

越努力越幸运。 605

HDFS 滚动升级,降级,回滚

介绍 HDFS滚动升级可以升级单独的HDFS守护进程. 例如, datanode们可以独立于namenode来升级. 一个namenode也可以独立于其他的namenode们来升级. namenode们也可以独立于datanode们和journal node们升级. 升级 在Hadoop版本2中, HDFS支持高可用(HA)namenode服务并结合兼容性. 这两项能力使其可以在避免停机时间...

大数据训练营 8028

k8s滚动升级_k8s 滚动升级及回滚

k8s 滚动升级一 准备1.编写一个简单的http服务,返回版本号package mainimport ("fmt""log""net/http")var Version = "library-import"func VersionHandle(w http.ResponseWriter, r *http.Request) {fmt.Fprintf(w, "Version: %s", Versio...

weixin_39644146的博客 506

Kubernetes - Deployment创建Pod及滚动升级,回滚命令 示例

我们先看看deployment的官方解释: Deployment为 Pod 和 ReplicaSet 提供了一个声明式定义(declarative)方法,用来替代以前的ReplicationController 来方便的管理应用。典型的应用场景包括: 定义Deployment来创建Pod和ReplicaSet 滚动升级和回滚应用 扩容和缩容 暂停和继续Deployment 看起来说的是...

Daopin Blog 3070
上一篇: Kubernates简介
下一篇: 删除命名空间一直处于Terminating并且自己开发的客户端无法连接K8s集群
炒栗子不加糖
博客等级 码龄10年 68粉丝 123原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值