灰度发布及声明式资源管理(yaml文件)

一、三种常见的项目发布方式

1)蓝绿发布

2)灰度发布【常用】

3)滚动发布

应用程序升级,面临最大的问题是新旧业务之间的切换

立项-定稿-需求发布-开发-测试-发布,测试上线后,再完美也会有问题,为了不影响所有用户,产生上述三种发布方式

1)蓝绿发布

定义:把应用服务集群标记为两个组,认为分成蓝组和绿组。先升级蓝组,要把蓝组从负载均衡中移除,绿组继续提供服务,蓝组升级完毕,将蓝组加入到负载均衡中。再把绿组从负载均衡中移除,升级绿组,再将绿组加入到负载均衡中,完成对外服务

②特点

 一旦出现问题,影响范围很大

 发布策略较简单

 基于现在的云计算和微服务,成本大大降低,用户无感知

 升级和回滚都比较方便

③缺点:对硬件资源要求很高,在发布升级过程中,只有一部分集群对外服务,集群的负载能力可能会下降,响应变慢,需要给集群增加负载能力,短时间内可能会浪费一定的资源(一般是半夜升级,没有特殊需要可以不加)

2)灰度发布【常用】

必须基于deployment控制器创建的服务才可以使用灰度发布方式,在滚动更新的基础上,加入暂停功能。发布过程中,暂时停止,只有一部分pod先升级,其他pod还是旧版本,只有一部分用户可以访问新版本,绝大多数用户还是旧版本,确定完全没问题后,全部升级成新版本,取消暂停,继续发布,若有问题可以立即回滚(暂停不是回滚,一旦取消暂停,只能全部升级完毕后,才能回滚)

先更新一个pod版本

kubectl set image deployment nginx nginx=nginx:1.24 --record && kubectl rollout pause deployment nginx

继续更新剩下的pod版本

kubectl rollout resume deployment nginx

特点

 自动化要求比较高,对运维人员要求较高

 方便发现问题,及时解决,影响范围较小

 用户无感知,实现平滑过度,节约资源

 发布策略复杂

 不易回滚,必须全部发布成功之后才能回滚

二、声明式资源管理(yaml文件)

1、优点

①声明式管理适合对资源的修改操作

②声明式管理依赖于yaml文件,所有的内容都在yaml文件中声明

③编辑好的yaml文件仍然依赖于陈述式命令发布到k8s集群中

2、发布yaml文件的三种方式

kubectl create

只能创建,不能更新。从指定的yml文件中读取配置,创建服务,不能更新

kubectl apply -f

(常用)

既可以创建资源对象,也可以更新资源对象,若yml文件更改,apply可以直接更新资源对象

kubectl delete -f

删除yml文件中声明的资源对象

3、生成yaml文件

①手打

②基于已有的资源直接生成

查看控制器的yaml文件格式

kubectl get deployments.apps -o yaml

查看service的yaml文件格式

kubectl get service -o yaml

查看pod的yaml文件格式

kubectl get pod -o yaml

基于已有的资源直接生成yaml文件

后面加上--force强制升级可以不需要导出新的yaml文件再升级

4、在k8s中支持两种声明式的资源管理方式

(1)yaml格式:用于配置和管理资源对象

(2)json格式:用于在API接口之间传递消息

5、三种yaml文件

(1)deployment的yaml文件(deployment、daemeonset、statefulset)

(2)service的yaml文件

(3)不基于控制器的pod的yaml文件

(1)deployment的yaml文件

(2)service的yaml文件

(3)不基于控制器创建yaml文件

Always

在容器退出时重启容器,无论退出状态如何

Never

用于短期任务或批处理,其中容器应运行一次,然后不会重新启动

OnFailure

仅在容器以非0状态退出时才会重启容器

重启策略不会影响 Pod 本身的终止状态。只要 Pod 中至少有一个容器在运行,就认为 Pod 处于“正在运行”阶段。如果 Pod 中的所有容器都退出,则 Pod 会过渡到“已完成”或“失败”阶段,具体取决于最后一个容器的退出状态

command

定义容器运行的命令参数,类似于docker的CMD和entrypoint。args可以理解为docker中的CMD,可以给command传参。command和args都会覆盖原容器内部的标准输出【面试题】

args

/bin/bash

指定输出脚本

-c

指定输出内容

注:command和args只能有一个

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/289436.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Windows下Jenkins自动化部署SpringBoot应用

Windows下Jenkins自动化部署SpringBoot应用 1、下载安装包 下载地址: 一个是 msi 程序: https://mirrors.aliyun.com/jenkins/windows/ 一个是 war 程序: https://get.jenkins.io/war-stable/ https://mirrors.jenkins.io/war/ 这里我…

Linux进程以及计划任务

一.程序和进程以及线程 内核功用:进程管理、内存管理、文件系统、网络功能、驱动程序、安全功能等 对于所有的操作系统,都有基本的功能 1.程序 保存在硬盘、光盘等介质中的可执行代码和数据(硬盘上躺着) 静态保存的代码 执行…

【好书推荐-第一期】《一书读懂物联网:基础知识+运行机制+工程实现》

😎 作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主、前后端开发、人工智能研究生。公粽号:程序员洲洲。 🎈 本文专栏:本文…

DHCP定义

DHCP(动态主机配置协议)是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。默认情况下,DHCP作为Windows Server的一个服务组件不会被系统自动安装&#…

C#高级 05线程状态

(1)进程和线程之间的关系 进程可以理解为一个应用,那么线程则可以看为一个进程中的多个执行单元(一个进程可以启动多个线程); (2)进程之间如何通信 1.管道 2.消息队列 3.信号量 信…

vue 实现拐弯时间线,弯曲时间线,弯曲任务步骤条

需求&#xff1a; 实现可拐弯的步骤条功能 实现后效果如下&#xff1a; 代码部分&#xff1a; 创建步骤条组件Steps.vue <template><div><divstyle"width: 100%; display: flex; position: relative; margin-top: 20px"><div style"wi…

Hive详解、配置、数据结构、Hive CLI

一、Hive 认识 1. Hive 应用 问题&#xff1a;公司的经营状况&#xff1f; 主题一&#xff1a;财务现金流指标1.1&#xff1a;净现金流入/流出量指标1.2&#xff1a;现金转换周期预算执行状况指标2.1&#xff1a;预算内成本控制指标2.2&#xff1a;预算与实际支出的差异 主题…

进程与线程介绍

进程与线程介绍 一、介绍1, 定义2&#xff0c;通讯方式2.1 进程间的通讯方式&#xff0c;以及优缺点2.1.1 管道&#xff08;1&#xff09;无名管道&#xff08;PIPE&#xff09;&#xff08;2&#xff09;有名管道(FIFO) 2.1.2 消息队列&#xff08;Message Queue&#xff09;2…

【复盘】2023年终总结

大家好&#xff0c;我是qxlx 2023年马上就要结束了&#xff0c;在此周末空闲时间进行整体复盘一下2023年关于自己的生活、工作、学习进度&#xff0c;以此进行记录。 01 工作 粗略算起来&#xff0c;来北京已经3年之久&#xff0c;那时候还是一个懵懵懂懂的学生&#xff0c;…

Java学习苦旅(十七)——栈和队列

本篇博客将详细讲解Java中的栈和队列。 文章目录 栈概念Java中Stack常用方法代码实现 队列概念队列常用方法对比QueueDeque 代码实现Queue 结尾 栈 概念 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一…

Android混淆那些事

前言 作为一个Android开发&#xff0c;大家或多或少都有一些关于混淆的了解&#xff08;毕竟披个纱布也比裸奔要好的多吧&#xff09;。混淆的概念虽然容易理解&#xff0c;但相信大多数开发可能还是在网上搜索通用配置后通过C-V大法接入到自己的项目中&#xff0c;这也使得混…

50、实战 - 利用 conv + bn + relu + add 写一个残差结构

上一节介绍了残差结构,还不清楚的同学可以返回上一节继续阅读。 到了这里,一个残差结构需要的算法基本都介绍完了,至少在 Resnet 这种神经网络中的残差结构是这样的。 本节我们做一个实战,基于之前几节中手写的 conv / bn 算法,来搭建一个残差结构。其中,relu 的实现和…

【linux】ufw 的基本使用

碎碎念 所有的云平台的网络流量的进出基本上有三层&#xff0c;首先是虚拟网的流量控制&#xff0c;一般是通过子网访问控制列表来控制vpc也好子网也好的流量出入&#xff0c;其次是安全组控制一层&#xff0c;通过安全组规则控制一类/一组主机&#xff08;指EC2/ECS/VM/CE这些…

SpringBoot整合ElasticSearch实现CRUD操作

本文来说下SpringBoot整合ES实现CRUD操作 文章目录 概述项目搭建ES简单的crud操作保存数据修改数据查看数据删除数据 本文小结 概述 SpringBoot支持两种技术和es交互。一种的jest&#xff0c;还有一种就是SpringData-ElasticSearch。根据引入的依赖不同而选择不同的技术。反正作…

SQL必知必会笔记(5~8章)

第五章 高级数据过滤 本章示例表为transcript成绩表&#xff0c;数据库软件选用SQLITE3&#xff0c;具体如下 1、高级过滤也是通过where条件子句实现&#xff0c;辅以and、or、in、not进行实现 2、and语句&#xff1a;and连接的多个条件为与的关系&#xff0c;例如 SELECT * FR…

洗地机怎么选?哪款洗地机好用?

选择洗地机前&#xff0c;我们需要对自己购买洗地机的需求做一个清洗的判断&#xff0c;吸尘器和扫地机智能解决地面基本的清洁问题&#xff0c;作为新兴的清洁工具洗地机越来越受大家的喜欢&#xff0c;洗地机的品类很多&#xff0c;洗地机到底该买哪款呢?我们先来看看挑选洗…

利用MATLAB绘制折线图

x20:20:140;%x轴上的数据&#xff0c;第一个值代表数据开始&#xff0c;第二个值代表间隔&#xff0c;第三个值代表终止a[0.85, 2.2, 3.45, 2.65, 1.5, 1.9, 1.25]; %a数据y值plot(x,a,-*b); %线性&#xff0c;颜色&#xff0c;标记 axis([0,160,0,4]) %确定x轴与y轴框图大小 …

安全防御之授权和访问控制技术

授权和访问控制技术是安全防御中的重要组成部分&#xff0c;主要用于管理和限制对系统资源&#xff08;如数据、应用程序等&#xff09;的访问。授权控制用户可访问和操作的系统资源&#xff0c;而访问控制技术则负责在授权的基础上&#xff0c;确保只有经过授权的用户才能访问…

K8S集群部署MySql

挂载MySQL数据卷 在k8s集群中挂载MySQL数据卷 需要安装一个NFS。 在主节点安装NFS yum install -y nfs-utils rpcbind 在主节点创建目录 mkdir -p /nfs chmod 777 /nfs 更改归属组与用户 chown -R nfsnobody:nfsnobody /nfs 配置共享目录 echo "/nfs *(insecure,rw,s…

半导体设备系列:半导体制造产能扩张,设备零部件需求旺盛

近年来国内半导体制造产能不断扩张&#xff0c;半导体设备厂商加速成长。我们认为下游发展将拉动上游本地化配套需求&#xff0c;半导体设备零部件迎来高增长阶段。 摘要 半导体设备零部件包含密封圈、EFEM、射频电源、静电吸盘、硅电极、真空泵、气体流量计、喷淋头等产品&a…