k8s的三种发布方式

三种常见的发布方式

应用程序升级面临最大挑战是新旧业务切换,将软件从测试的最后阶段带到生产环境,同时要保证系统不间断提供服务。而最为常见三种发布方式分别为:蓝绿发布,灰度发布和滚动发布。

三种发布方式的最终目的都是为了减小或避免对应用项目更新时,对客户使用的影响。

蓝绿发布 


 首先将所有的应用服务集群为蓝绿两组,首先将绿组的集群从负载均衡中移除,蓝组则继续对用户提供服务。此时移除的绿组进行服务的升级,等升级完毕后,再从新将绿组接入到负载均衡中为用户提供服务。

再把蓝组进行移除,进行服务升级,升级完毕后再接入到负载均衡的集群中。此时整个项目集群得进行升级完毕,我们将此称为蓝绿发布
 

蓝绿发布的特点:

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

2.发布策略简单

3.基于现在的云计算和微服务,用户无感知。

缺点:

在发布升级的过程之中,只有一部分集群在对外提供服务,可能会是集群的负载能力下降,相应变慢,需要注意给集群增加负载能力(一般来说没什么特殊需要)

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

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

先发布一个试用版(测试服)

deployment控制器创建的服务,才可以使用这种发布方式,滚动更新,暂停。发布的过程中,只有一部分的pod先升级,其他的pod还是处于老的版本。只有一部分用户可以访问新的版本,绝大多数用户还是在老版本。确定问题之后,再把剩下的老版本,升级成新版本,把暂停取消,继续发布。如果有问题可以立即回滚。暂停不是回滚,一旦取消暂停只能全部升级完毕之后,再回滚。

灰度发布 特点:

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

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

3.用户无感知,可以实现一个平滑过渡。比较节约资源。

4.发布策略比较复杂。

5.不易回滚,必须等到全部发布成功之后才能回滚。

滚动更新

滚动发布就是刚刚我们在k8s中使用的项目服务更新方式。滚动发布是指每次只升级一个或多个服务,升级完成后加入生产环境,不断执行这个过程,直到集群中的全部旧版本升级新版本。  

特点

  • 用户无感知,平滑过渡;

  • 节约资源。

缺点

  • 部署时间慢,取决于每阶段更新时间;

  • 发布策略较复杂;

  • 无法确定OK的环境,不易回滚。

三种方式的对比总结

  • 蓝绿发布:两套环境交替升级,旧版本保留一定时间便于回滚。

  • 灰度发布:根据比例将老版本升级,例如80%用户访问是老版本,20%用户访问是新版本。

  • 滚动发布:按批次停止老版本实例,启动新版本实例。

灰度发布演示

 
kubectl create deployment nginx --image=nginx:1.14 --port=80 --replicas=3
   
kubectl expose deployment nginx --port=8000 --target-port=80 --name=nginx-service --type=NodePort  #先创建资源并创建3个副本
 
kubectl set image deployment nginx nginx=nginx:1.16 && kubectl rollout pause deployment nginx      #更新并暂停
 
kubectl rollout status deployment nginx    #观察更新状态

相关推荐

  1. k8s常用项目发布方式

    2024-01-03 14:26:06       37 阅读
  2. K8S发布方式和声明式资源管理

    2024-01-03 14:26:06       32 阅读
  3. k8s探针】

    2024-01-03 14:26:06       8 阅读
  4. k8s笔记——kubernetes中IP

    2024-01-03 14:26:06       8 阅读
  5. k8s部署方案

    2024-01-03 14:26:06       31 阅读
  6. k8s学习--kube-proxy工作模式详细解释

    2024-01-03 14:26:06       7 阅读
  7. flink on k8s创建方式

    2024-01-03 14:26:06       38 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-03 14:26:06       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-03 14:26:06       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-03 14:26:06       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-03 14:26:06       20 阅读

热门阅读

  1. 基于美国应对网络生物安全风险的报告的思考

    2024-01-03 14:26:06       36 阅读
  2. DQL~MySQL正则表达式

    2024-01-03 14:26:06       38 阅读
  3. 数据结构OJ实验10-图连通与生成树

    2024-01-03 14:26:06       23 阅读
  4. react基础学习 附加todo实现代码

    2024-01-03 14:26:06       35 阅读
  5. C++ 基础入门篇3.1:算数运算符

    2024-01-03 14:26:06       42 阅读
  6. MockServer简单使用记录

    2024-01-03 14:26:06       34 阅读
  7. python flask-wft

    2024-01-03 14:26:06       43 阅读
  8. 传统企业该怎样让 OKR 落地?

    2024-01-03 14:26:06       28 阅读
  9. LeetCode //C - 1657. Determine if Two Strings Are Close

    2024-01-03 14:26:06       35 阅读
  10. QT 高DPI解决方案

    2024-01-03 14:26:06       42 阅读
  11. 分布式(4)

    2024-01-03 14:26:06       33 阅读