【云原生】K8s 管理工具 kubectl 详解(三)

news/2024/9/25 7:26:23/

金丝雀发布/灰度发布(Canary Release)

一、金丝雀发布简介

Deployment控制器支持自定义控制更新过程中的滚动节奏,如“暂停(pause)”或“继续(resume)”更新操作。比如等待第一批新的Pod资源创建完成后立即暂停更新过程,此时,仅存在一部分新版本的应用,主体部分还是旧的版本。然后,在筛选一小部分的用户请求路由到新版本的Pod应用,继续观察能否稳定地按期望的方式运行。确定没问题之后再继续完成余下的Pod资源滚动更新,否则立即回滚更新操作。这就是所谓的金丝雀发布。

二、更新deployment的版本,并配置暂停deployment

2.1、创建pods

kubectl create deployment nginx-test --image=nginx:1.14 --replicas=3
kubectl get pods,deploy -o wide

2.2、发布服务

kubectl expose deploy nginx-test --port=80 --target-port=80 --name=nginx-service --type=NodePort
kubectl get svc -o wide

2.3、查看nginx版本

curl -I 192.168.10.103:31027
kubectl describe deployments nginx-test | grep Image

2.4、定义版本change-cause

2.4.1 查看历史版本

在不定义CHANGE-CAUSE的情况下,缺省值为,当历史版本较多时,不便于咱们回滚时辨认版本号。因此,建议定义CHANGE-CAUSE为服务版本以帮助咱们辨认当前服务。

kubectl rollout history deployment/nginx-test

2.4.2 定义版本

一般通过修改配置的方式定义change-cause

[root@master ~]# kubectl edit deploy/nginx-test......
kind: Deployment
metadata:annotations:
#下行可定义历史版本revisiondeployment.kubernetes.io/revision: "1"
#在Deployment的matadata项下的annotations中如下行定义change-causekubernetes.io/change-cause: "nginx1.14"
......

2.4.3 再次查看历史版本

kubectl rollout history deployment/nginx-test

2.4.4 更新nginx版本为1.15并配置暂停

kubectl set image deployment/nginx-test nginx=nginx:1.15 && kubectl rollout pause deployment/nginx-test

2.4.5 观察更新状态

kubectl rollout status deployment/nginx-test

2.4.6 监控更新的过程

可以看到已经新增了一个pod,但是并未按照预期的状态去删除一个旧的资源,就是因为使用了pause暂停命令

kubectl get pods -w

2.4.7 查看nginx版本

kubectl get pod -o wide

2.4.8 查看并更新历史版本change-cause

kubectl rollout history deploy/nginx-test

[root@master ~]# kubectl edit deploy/nginx-testkind: Deployment
metadata:annotations:
#下行的revison自动更新为2deployment.kubernetes.io/revision: "2"
#修改下行的change-cause为nginx1.15kubernetes.io/change-cause: nginx1.15

2.4.9 resume继续更新

kubectl rollout resume deploy/nginx-test

2.4.10 查看最后的更新情况

kubectl get pods -w


http://www.ppmy.cn/news/1464503.html

相关文章

探秘AI艺术:揭开Midjourney绘画的神秘面纱

在当今这个数字化迅速发展的时代,AI技术已经深入到我们生活的方方面面,而最令人着迷的莫过于它在艺术创作领域的应用。“Midjourney绘画”就是这样一个令人惊叹的例子,它通过高级AI技术,能够帮助用户生成独一无二的艺术作品。但是…

比较Rust和Haskel

在比较Rust和Haskell时,我们可以从多个维度来分析它们各自的优势。以下是Rust相对于Haskell的优势,以及Haskell相对于Rust的优势: Rust比Haskell强的方面: 内存安全与并发性: Rust通过独特的所有权系统和借用检查器在…

js实现元素根据鼠标滚轮滚动向左右上下滑动着从模糊到清楚显示出来

html代码 <div ref{test} id"animatedElement" className"not-animated"> <div style{{width:"100px",height:"50px",backgroundColor:"red"}}> </div> </div> JS代码 const te…

flutter开发实战-外接纹理texture处理图片展示

flutter开发实战-外接纹理处理图片展示 在Flutter中&#xff0c;如果你想要创建一个外接纹理的widget&#xff0c;你可以使用Texture widget。Texture widget用于显示视频或者画布&#xff08;canvas&#xff09;的内容。该组件只有唯一入参textureId 通过外接纹理的方式&…

小程序内的分包与数据共享

一:数据共享 小程序内的数据共享和vue当中不一样,vue当中的vue实例可以使得所有的组件都能this.store 但是小程序它只有page对象,和组件实例对象.对于vue而言,vue实例可以使得添加的组件都有. 但是page对象页面对象,不能使得页面内部有.只能使得这个页面内能访问.vue实例,会…

使用springdoc-openapi-starter-webmvc-ui后访问swagger-ui/index.html 报错404

按照官网说明&#xff0c;引入 springdoc-openapi-starter-webmvc-ui后应该就可以直接访问swagger-ui.html或者swagger-ui/index.html就可以出现swagger页面了&#xff0c;但是我引入后&#xff0c;访问提示报错404. 在我的项目中&#xff0c;有其他依赖间接引入了org.webjars…

高性能排行榜之Redis的zadd方法实现

排行榜之Redis实现 1、排行榜系统的功能点 数据收集与计算 排名规则 实时性 可视化展示 周期性更新 2、排行榜系统基本功能要素 3种实现方案 Redis实现方案 出于性能&#xff0c; 自排序&#xff0c;持久化&#xff0c;可扩展性考虑。 使用Redis的zset来实现排行榜 增…

Python 点云裁剪

点云裁剪 一、介绍1.1 概念1.2 函数讲解二、代码示例2.1 代码实现2.2 代码讲解三、结果示例一、介绍 1.1 概念 点云裁剪 :根据待裁剪对象的多边形体积(json文件)实现点云的裁剪。 1.2 函数讲解 下面代码示例中主要用到了两个函数。 读取待裁剪对象的多边形体积信息(json文…