当前位置: 首页 > 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

相关文章:

滚动升级回滚

滚动升级回滚 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 --- apiVer…...

2023/3/6 VUE - 组件传值【通信】方式

1 父亲传子代传值【子代使用父代的数据】 1.1 props传值 父亲给儿子传值: 爷爷给孙子传值: 这个props传值的方式,只能一代一代的往下传,不能跨代传值。 有一个问题:子组件不能修改父组件的值: 1.2 …...

MedCalc v20.217 医学ROC曲线统计分析参考软件

MedCalc是一款医学 ROC 曲线统计软件,用于ROC曲线分析的参考软件,医学工作者设计的医学计算器,功能齐全。它可以帮助医生快速作出普通的医学计算,从而对症下药。提供超过76种常用的规则和方法,包括:病人数据、单位参数、费用计算等等。甚至可以将图形另存为BMP,PNG,GIF…...

欢乐消除开心假日协议解密

欢乐消除开心假日协议解密协/议/流/量/解/密分析欢乐消除开心假日这款游戏流量的协议加密方式。序欢乐消除开心假日是一款合成模拟家装的游戏,在这个游戏中,你将成为一位充满热情的设计师,与好友一起经营工作室。你需要根据客户的需求重新设计…...

Android Service知识

一. 概览 Service 是一种可在后台执行长时间运行操作而不提供界面的应用组件。服务可由其他应用组件启动,而且即使用户切换到其他应用,服务仍将在后台继续运行。此外,组件可通过绑定到服务与之进行交互,甚至是执行进程间通信 (IPC…...

axios的get请求传入数组参数后端无法接收的问题

问题描述 在做项目时,需要把前端的数组通过axios的get请求发送到后端处理,于是像这样直接发送: axios.get(url,{params:{arr: update_arr}})这时在后端接收后报错说:没有 ‘arr’ 这个key: arr request.GET[arr] pr…...

奖金发放-课后程序(Python程序开发案例教程-黑马程序员编著-第3章-课后作业)

实例2:奖金发放 某企业发放的奖金是根据利润和提成计算的,其规则如表1所示。 表1 奖金发放规则 利润(万元) 奖金提成(%) I≤10 10% 10<I≤20 7.5% 20<I≤20 5% 10&#xf…...

第十四届蓝桥杯第三期模拟赛 【python】

第十四届蓝桥杯第三期模拟赛 【python】 文章目录第十四届蓝桥杯第三期模拟赛 【python】✨最小的十六进制(python的16进制)❓️问题描述答案提交🧠思路🖥︎参考答案✨Excel的列(进制转化)❓️问题描述答案…...

Python——函数(重点内容)

函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。 函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫…...

2023年如何在Google做外贸

2023年如何在Google做外贸 答案是:利用谷歌SEO获取自然流量促进成交。 随着全球化和数字化的发展,外贸行业越来越重视互联网的渠道拓展。 在Google搜索引擎上做好SEO优化,是吸引国际客户和提高品牌知名度的关键。 本文将探讨2023年如何在…...

Linux操作系统学习(线程池)

文章目录线程池线程池原理代码示例单例模式饿汉模式懒汉模式饿汉懒汉对比其他的锁线程池 线程池原理 ​ 线程池是一种线程使用模式。在多线程应用中,若每有一个任务,线程就去调度相应的函数去创建,当任务过多时,每次都去调度且每…...

JVM运行时数据区—Java虚拟机栈

虚拟机栈的背景 由于跨平台性的设计,java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。 根据栈设计的优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功…...

gitlab中文社区

1、获取gitlab中文社区项目 中文社区版项目:https://gitlab.com/xhang/gitlab 2、克隆中文仓库 git clone https://gitlab.com/xhang/gitlab.git 3、查看gitlab版本 diff 获取对应版本的中文 head -1 /opt/gitlab/version-manifest.txt #安装的是gitlab-ce…...

深度学习-第T2周——彩色图片分类

深度学习-第T2周——彩色图片分类深度学习-第P1周——实现mnist手写数字识别一、前言二、我的环境三、前期工作1、导入依赖项并设置GPU2、导入数据集3、归一化4、可视化图片四、构建简单的CNN网络五、编译并训练模型1、设置超参数2、编写训练函数六、预测七、模型评估深度学习-…...

GNU C编译器扩展关键字:__attribute__

目录 一、section 二、aligned 三、packed 四、format 五、weak 六、alias 七、noinline和always_inline GNU C增加了一个__attribute__关键字用来声明一个函数、变量或类型的特殊属性,可以知道编译器在编译过程中进行特定方面的优化或代码检查。 目前&…...

C++基础 | 从C到C++快速过渡

一、开发环境 c使用的编译器是g。 vim或者vscodeclionVS 二、C版本的Hello World /*** brief c版本helloworld示例* author Mculover666* date 2023/2/26*/#include <iostream> using namespace std;int main() {int a 1;double b 3.14;char c[] "str…...

【C++】仿函数 -- priority_queue

文章目录一、priority_queue 的介绍和使用1、priority_queue 的介绍2、priority_queue 的使用3、priority_queue 相关 OJ 题二、仿函数1、什么是仿函数2、仿函数的作用三、priority_queue 的模拟实现一、priority_queue 的介绍和使用 1、priority_queue 的介绍 priority_queu…...

盘一盘C++的类型描述符(一)

前言 C的类型描述方式是从C语言继承来的&#xff0c;并且进行了扩充&#xff08;例如引用、非静态成员函数、模板实参等&#xff09;。但由于C语言中的类型描述方式就略微有点「反人类」&#xff0c;再经C扩展后就有点「反碳基生物」了~ 是的&#xff0c;当我第一次看到这种描…...

Peppol的发展史和基本框架

Peppol&#xff08;Pan-European Public Procurement Online&#xff09;是欧洲区域内的一个跨境公共采购电子商务平台试点项目&#xff0c;由欧盟委员会和Peppol联盟成员国共同资助建立&#xff0c;旨在通过制定标准化框架&#xff0c;推动欧盟成员国在公共采购相关的电子目录…...

Linux-GCC介绍+入门级Makefile使用

前言&#xff08;1&#xff09;我们都知道&#xff0c;在Linux中编译.c文件需要使用gcc -o .c文件的指令来将C文件变成可执行文件。但是我们有没有发现&#xff0c;如果我们需要编译大一点的工程&#xff0c;后面需要加上的.c文件是不是太多了&#xff1f;感觉非常的麻烦。&…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能&#xff0c;包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点&#xff1a;传参类型必须是类对象 一、BigInteger 1. 作用&#xff1a;适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

算法:模拟

1.替换所有的问号 1576. 替换所有的问号 - 力扣&#xff08;LeetCode&#xff09; ​遍历字符串​&#xff1a;通过外层循环逐一检查每个字符。​遇到 ? 时处理​&#xff1a; 内层循环遍历小写字母&#xff08;a 到 z&#xff09;。对每个字母检查是否满足&#xff1a; ​与…...

STM32HAL库USART源代码解析及应用

STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...