K8S项目发布

蓝绿发布

金丝雀发布(灰度发布)

滚动发布

应用程序升级,面临的最大困难就是新旧业务之间的切换。立项---定稿---需求发布---开发---测试---发布,测试之后上线,再完美也会有问题,为了不让发生的问题影响所有用户,也就产生了上述的三种发布方式。

蓝绿发布:把应用服务集群标记为两个组,蓝组和绿组,先升级蓝组,要把蓝组从负载均衡中移除,绿组继续提供服务

蓝组升级完毕,再把绿组从负载均衡中移除,绿组升级,然后都加入回负载均衡当中去,完成对外服务

这种发布对于硬件资源要求比较高,但是现在有了云计算和微服务,现在的成本也降低下来了

蓝绿发布的特点:

1、一旦出现问题,受到影响的范围很大

2、发布策略较为简单

3、基于现在的云计算技术和微服务,用户是无感知的

4、升级和回滚都比较方便

缺点:

在发布升级的过程中,只有一部分集群在对外提供服务,可能会使集群的负载能力下降,响应变慢,需要注意给这个集群增加负载能力(现在一般来说没有什么特殊需求,都是大半夜开始升级的服务)

在短时间内可能会浪费一定的资源成本

金丝雀发布(灰度发布):

deployment(控制器创建的服务才可以使用这种发布方式)

暂停:发布的过程中,暂时停止,只有一部分的pod先升级

其他的pod还是处于老的版本。只有一部分用户可以访问新的版本,绝大多数用户还是在老版本。确定无问题之后,再把剩下的老版本,升级成新的版本,把暂停取消,继续发布。如果有问题可以立即回滚,暂停不是回滚,一旦取消暂停只能全部升级完毕之后,再回滚。

复制代码
[root@master01 ~]# kubectl set image deployment nginx2 nginx=nginx:1.24 --record && kubectl rollout pause deployment nginx2 
deployment.apps/nginx2 image updated
deployment.apps/nginx2 paused

[root@master01 ~]# kubectl get pod
NAME                      READY   STATUS              RESTARTS   AGE
nginx2-5fc4444698-nrx5m   1/1     Running             0          37m
nginx2-5fc4444698-vgqwt   1/1     Running             0          37m
nginx2-7d97dbbb8c-jhtxf   0/1     ContainerCreating   0          25s

[root@master01 ~]# kubectl rollout status deployment nginx2 
Waiting for deployment "nginx2" rollout to finish: 1 out of 2 new replicas have been updated...

取消暂停,全部更新 
[root@master01 ~]# kubectl set image deployment nginx2 nginx=nginx:1.24 --record && kubectl rollout pause deployment nginx2 
deployment.apps/nginx2 image updated
deployment.apps/nginx2 paused

[root@master01 ~]# curl -I 192.168.211.10:31000
HTTP/1.1 200 OK
Server: nginx/1.24.0
Date: Tue, 02 Jan 2024 01:49:33 GMT
Content-Type: text/html
Content-Length: 615
Last-Modified: Tue, 11 Apr 2023 01:45:34 GMT
Connection: keep-alive
ETag: "6434bbbe-267"
Accept-Ranges: bytes

所有POD已全部更新为1.24版本

灰度发布:

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

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

3、用户无感知,平滑过度,节约资源

4、发布策略比较复杂

5、不易回滚,必须要等到全部发布成功后才能回滚

滚动更新:

deployment默认的就是滚动更新

相关推荐
小肥君14 小时前
docker无法连接GPU资源解决方案
docker·容器·eureka
liux352815 小时前
K8s存储卷全解析:PV/PVC/StorageClass 关系
kubernetes
江华森17 小时前
从零搭建 Kubernetes 集群并部署 Kuboard v3 管理面板 —— 国内环境完整实战教程
容器·kubernetes
友莘居士19 小时前
KingbaseES Docker速查表
运维·docker·容器
小肥君20 小时前
docker镜像配置
运维·docker·容器
某林21221 小时前
Isaac Lab (v2.3.2) Docker 本地化部署与底层排障全解析
运维·docker·容器·架构·iassc
iDao技术魔方1 天前
WSL 配 GPU 用 Docker 的折腾指南(2026 年版)
运维·docker·容器
步步为营DotNet1 天前
.NET 11 中 Native AOT 在云原生场景下的深度剖析与实践
云原生·.net
跳动的世界线1 天前
WSL 2 + Docker 本地全栈开发环境配置指南
运维·docker·容器