灰度发布及声明式资源管理(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只能有一个

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机组成原理-期末复习

第一章——计算机系统概述 一、数字计算机的主要组成结构 在电子计算机里,相当于算盘功能的部件,我们称之为运算器;相当于纸那样具有“记忆’功能的部件,我们称之为存储器;相当于笔那样把原始解题信息送到计算机或把…

关于简单的数据可视化

1. 安装数据可视化必要的openpyxl、pandas,matplotlib等软件包 使用清华源,命令如下: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn pandaspip install -i https://pypi.tuna.tsingh…

2024,全网最全的接口测试工具之postman

📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…

机器学习基本概念及模型简单代码(自用)

监督学习 监督学习是机器学习的一种方法,其中我们教导模型如何做出预测或决策,通过使用包含输入和对应输出的已标注数据集进行训练。这种方法的关键特点是利用这些标注数据**(即带有正确答案的数据)**来指导模型的学习过程。 一言…

下载和安装AD14 - Altium Designer 14.3.20.54863

这个版本应该还支持XP 系统[doge],总之就是想安装一下,没什么特别的意义。 下载 资源来自毛子网站:https://rutracker.net/forum/viewtopic.php?t5140739,带上个网页翻译插件就行。要用磁力链接下载,推荐用qbittorr…

SQLSERVER排查CPU占用高

操作系统是Windows2008R2 ,数据库是SQL2008R2 64位 64G内存,16核CPU 硬件配置还是比较高的,他说服务器运行的是金蝶K3软件,数据库实例里有多个数据库 现象 他说是这几天才出现的,而且在每天的某一个时间段才会出现CPU占用高的情况 内存占用不太高,只占用了30个G CPU…

Redis——centos7环境安装Redis6.2.14版本,make命令编译时报错:jemalloc/jemalloc.h:没有那个文件或目录

一、报错原因 在redis-6.2.14文件夹下有一个README.md文件,有如下一段话: 在构建 Redis 时,通过设置 MALLOC 环境变量来选择非默认的内存分配器。Redis 默认编译并链接到 libc malloc,但在 Linux 系统上,jemalloc 是…

【OpenCV】OpenCV:计算机视觉的强大工具库

摘要   OpenCV是一个广泛应用于计算机视觉领域的开源工具库,为开发者提供了丰富的图像处理和计算机视觉算法。本文将介绍OpenCV的功能和应用领域,并探讨它在实践中的重要性和前景。 计算机视觉的强大工具库 一、什么是OpenCV?二、OpenCV的功…

比丝袜还丝滑!这个简历制作软件10大优势!

看过来!看过来! 简历软件这么多,作为求职者最需要的是什么呀! ✅ 丰富专业的简历模板 —— 漂亮且免费的简历模板谁能不爱! ✅ 量身定制的简历内容——你没看错!只需要点点点就直接生成了一份量身定制的简…

我这个小白坚持写作一整年,赚了多少?

今天是 2023 年的最后一天,和大家一起来一个年终复盘,主题就是:2023年,我到底赚了多少? 今年除了工作之外,我的重点都放在了写文章上。 截止到今天,已经在公众号上发布了 100 篇原创文章&…

C++摸版(初阶)----函数模版与类模版

本专栏内容为:C学习专栏,分为初阶和进阶两部分。 通过本专栏的深入学习,你可以了解并掌握C。 💓博主csdn个人主页:小小unicorn ⏩专栏分类:C 🚚代码仓库:小小unicorn的代码仓库&…

Java经典框架之SpringSecurity

SpringSecurity Java 是第一大编程语言和开发平台。它有助于企业降低成本、缩短开发周期、推动创新以及改善应用服务。如今全球有数百万开发人员运行着超过 51 亿个 Java 虚拟机,Java 仍是企业和开发人员的首选开发平台。 课程内容的介绍 1. SpringSecurity基本应用…