当前位置: 首页 > news >正文

滚动升级回滚

滚动升级回滚

ReplicationController

资源文件

apiVersion: v1
kind: ReplicationController
metadata:name: kubia-v1labels:app: kubia
spec:replicas: 3template:metadata:name: kubialabels:app: kubiaspec:containers:- image: luksa/kubia:v1name: nodejes
---
apiVersion: v1
kind: Service
metadata:name: kubia
spec:type: LoadBalancerports:- port: 80targetPort: 8080selector:app: kubia

apply资源到K8S

kubectl create namespace update-rollbackkubectl 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: kubialabels:app: kubia
spec:replicas: 3selector:matchLabels:app: kubiatemplate:metadata:name: kubialabels:app: kubiaspec:containers:- image: luksa/kubia:v1name: nodejes
---
apiVersion: v1
kind: Service
metadata:name: kubia
spec:type: LoadBalancerports:- port: 80targetPort: 8080selector:app: kubia

apply资源到K8S

kubectl create namespace update-rollbackkubectl apply -f kubia.yaml -n update-rollback

通过暴露端口访问资源

curl http://暴露地址

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

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

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

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

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

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

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

apiVersion: apps/v1
kind: Deployment
metadata:name: kubialabels:app: kubia
spec:replicas: 3minReadySeconds: 10selector:matchLabels:app: kubiatemplate:metadata:name: kubialabels:app: kubiaspec:containers:- image: luksa/kubia:v3name: nodejes
---
apiVersion: v1
kind: Service
metadata:name: kubia
spec:type: LoadBalancerports:- port: 80targetPort: 8080selector:app: kubia

查看历史版本

kubectl rollout history deployment kubia -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: kubialabels:app: kubia
spec:replicas: 3minReadySeconds: 10strategy:rollingUpdate:maxSurge: 1maxUnavailable: 0type: RollingUpdateselector:matchLabels:app: kubiatemplate:metadata:name: kubialabels:app: kubiaspec:containers:- image: luksa/kubia:v3name: nodejesreadinessProbe:periodSeconds: 1httpGet:path: /port: 8080
---
apiVersion: v1
kind: Service
metadata:name: kubia
spec:type: LoadBalancerports:- port: 80targetPort: 8080selector: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
http://www.lryc.cn/news/31706.html

相关文章:

  • 2023/3/6 VUE - 组件传值【通信】方式
  • MedCalc v20.217 医学ROC曲线统计分析参考软件
  • 欢乐消除开心假日协议解密
  • Android Service知识
  • axios的get请求传入数组参数后端无法接收的问题
  • 奖金发放-课后程序(Python程序开发案例教程-黑马程序员编著-第3章-课后作业)
  • 第十四届蓝桥杯第三期模拟赛 【python】
  • Python——函数(重点内容)
  • 2023年如何在Google做外贸
  • Linux操作系统学习(线程池)
  • JVM运行时数据区—Java虚拟机栈
  • gitlab中文社区
  • 深度学习-第T2周——彩色图片分类
  • GNU C编译器扩展关键字:__attribute__
  • C++基础 | 从C到C++快速过渡
  • 【C++】仿函数 -- priority_queue
  • 盘一盘C++的类型描述符(一)
  • Peppol的发展史和基本框架
  • Linux-GCC介绍+入门级Makefile使用
  • iOS(一):Swift纯代码模式iOS开发入门教程
  • IDEA+Python+Selenium+360浏览器自动化测试
  • 运输层概述及web请求
  • python与pycharm从零安装
  • 叠氮试剂943858-70-6,Azidobutyric acid NHS ester,叠氮-C3-活性酯
  • pycharm激活虚拟环境时报错:无法加载文件activate.ps1,因为在此系统上禁止运行脚本,Windows10系统
  • 刷题小抄4-数组
  • Hbase安装
  • 面向对象设计模式:结构型模式之代理模式
  • CCF大数据专家委员会十周年纪念庆典纪实:拥抱数字时代,展望科技未来
  • Qt学习3-Qt Creator四则运算计算器(哔站视频学习记录)