当前位置: 首页 > news >正文

【Kubernetes】k8s集群的资源发布方式

目录

一.常见的发布方式

二.如何实现

1.滚动升级

2.蓝绿升级

3.实现金丝雀发布(灰度发布)


一.常见的发布方式

  • 蓝绿发布:两套环境交替升级,旧版本保留一定时间便于回滚。
  • 优点 用户无感知,部署和回滚速度较快
  • 缺点 浪费资源成本较高
  • 滚动发布:按批次停止老版本实例,启动新版本实例
  • 优点 节约资源
  • 缺点 部署和回滚速度较慢
  • 灰度发布/金丝雀发布:根据比例将老版本升级,例如80%用户访问是老版本,20%用户访问是新版本
  • 优点 保证整体系统稳定性,如果出问题影响范围较小
  • 缺点 自动化要求较高

二.如何实现

1.滚动升级

kubectl create -n xy101 deployment test01 --image=soscscs/myapp:v1 --port=80 --replicas=3
kubectl expose -n xy101 deployment test01 --name=svc-test1 --type=NodePort --port=8080 --target-port=80
#创建资源和service
kubectl describe -n xy101 deployments.apps test01kubectl set image -n xy101 deployment test01 myapp=soscscs/myapp:v2

去检察一下

2.蓝绿升级

通过切花负载均衡的流量来实现业务的切换
kubectl create -n xy101 deployment test1-v1 --image=soscscs/myapp:v1 --port=80 --replicas=3
kubectl expose -n xy101 deployment test1-v1 --name=svc-test1 --port=8080 --target-port=80 --type=NodePort
kubectl create -n xy101 deployment test1-v2 --image=soscscs/myapp:v2 --port=80 --replicas=3
deployment.apps/test1-v2 created

kubectl set -n xy101 selector svc svc-test1 'app=test1-v2'
kubectl describe -n xy101 svc svc-test1

kubectl set -n xy101 selector svc svc-test1 'app=test1-v1'
kubectl describe -n xy101 svc svc-test1 

3.实现金丝雀发布(灰度发布)

Deployment控制器支持自定义控制更新过程中的滚动节奏,如“暂停(pause)”或“继续(resume)”更新

操作。比如等待第一批新的Pod资源创建完成后立即暂停更新过程,此时,仅存在一部分新版本的

应用,主体部分还是旧的版本。然后,再筛选一小部分的用户请求路由到新版本的Pod应用,继续

观察能否稳定地按期望的方式运行。确定没问题之后再继续完成余下的Pod资源滚动更新,否则立

即回滚更新操作。这就是所谓的金丝雀发布

kubectl create -n xy101 deployment myapp-v1 --image=soscscs/myapp:v1 --port=80 --replicas=3
kubectl expose -n xy101 deployment myapp-v1 --name=svc-myapp --port=8080 --target-port=80 --type=NodePort

kubectl set image -n xy101 deployment myapp-v1 myapp=soscscs/myapp:v2 && kubectl rollout pause deployment myapp-v1 -n xy101   #kubectl rollout pause deployment myapp-v1 -n xy101 执行完前面的就暂停kubectl get -n xy101 pods -o wide -w   #监控状态kubectl rollout status -n xy101 deployment myapp-v1   #观察更新状态
kubectl rollout resume -n xy101 deployment myapp-v1 && kubectl rollout pause -n xy101 deployment myapp-v1   #确保更新的pod没问题了,继续更新,还是指定更新一个如何暂停
kubectl rollout resume -n xy101 deployment myapp-v1  #确保更新的pod没问题了,继续更新,会一次性都更新结束

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • LSPatch制作内置模块应用软件无需root 教你制作内置应用
  • 【Java】深度解析Java的反射机制
  • 后端学习笔记(3)--Maven
  • python爬虫实践
  • 【C++】入门基础知识
  • 用VBA在Word中随机打乱单词表,进行分列
  • (四十一)大数据实战——spark的yarn模式生产环境部署
  • 数据守护者的秘籍:SQL Server数据库备份验证全攻略
  • python实现小游戏——植物大战僵尸(魔改版本)
  • Apache Kylin入门指南
  • 链表篇: 04-寻找两个链表的第一个公共结点
  • [极客大挑战 2019]BuyFlag1
  • A+B V2 51Nod - 3415
  • 实验4-1-7 特殊a串数列求和
  • python 中的 join()
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • Angular 响应式表单 基础例子
  • angular2 简述
  • es6
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • Laravel核心解读--Facades
  • python 学习笔记 - Queue Pipes,进程间通讯
  • Redis字符串类型内部编码剖析
  • Webpack入门之遇到的那些坑,系列示例Demo
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 工程优化暨babel升级小记
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 算法系列——算法入门之递归分而治之思想的实现
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 自动记录MySQL慢查询快照脚本
  • ​zookeeper集群配置与启动
  • ​什么是bug?bug的源头在哪里?
  • #Linux(帮助手册)
  • #QT 笔记一
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (接口封装)
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (原创)可支持最大高度的NestedScrollView
  • (转)我也是一只IT小小鸟
  • . NET自动找可写目录
  • ../depcomp: line 571: exec: g++: not found
  • .chm格式文件如何阅读
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
  • .Net的DataSet直接与SQL2005交互
  • .Net开发笔记(二十)创建一个需要授权的第三方组件
  • .NET连接数据库方式
  • /*在DataTable中更新、删除数据*/
  • @AliasFor注解
  • @angular/cli项目构建--http(2)
  • @RequestBody与@RequestParam