Kubernetes 基于Service的蓝绿发布
K8S 蓝绿发布
- 蓝绿发布基本原理
- 基于Service/Selector/Label实现蓝绿发布
- 发布两个版本POD
- 蓝绿切换
蓝绿发布基本原理
蓝绿发布是一种应用升级发布方式,这种发布方式可以瞬间在老版本与新版本之间切换。可以做到用户体验无中断。
为了让K8S中的应用可以支持蓝绿发布,需要在POD yaml文件、nodeport service yaml文件中,添加一个新的label - version。
为了完成发布,应用升级,需要将NodePort Service中的version值手动修改为新版本。这样就完成了蓝绿切换,流量切换。
后续,如新版本POD发布,应用验证没有问题,可以把老的POD删除掉。
如果新版本有问题,则依然修改NodePort Service中的version值,让流量切回老版本。
基于Service/Selector/Label实现蓝绿发布
本实验我们需要创建3个YAML文件。
- petclinic-pod-v1.0.0.yml
- petclinic-pod-v1.0.1.yml
- petclnic-service.yml
petclinic-pod-v1.0.0.yml文件内容如下:
apiVersion: v1
kind: Pod
metadata:name: petclinic-v1.0.0labels:app: petclinicversion: v1.0.0
spec:containers:- name: petclinicimage: spring2go/spring-petclinic:1.0.0.RELEASE
petclinic-pod-v1.0.1.yml文件内容如下:
apiVersion: v1
kind: Pod
metadata:name: petclinic-v1.0.1labels:app: petclinicversion: v1.0.1
spec:containers:- name: petclinicimage: spring2go/spring-petclinic:1.0.1.RELEASE
petclnic-service.yml文件内容如下:注意selector下,增加了一个version标签。
apiVersion: v1
kind: Service
metadata:# Unique key of the Service instancename: petclinic
spec:ports:# Accept traffic sent to port 80- name: httpport: 8080targetPort: 8080nodePort: 31080selector:app: petclinicversion: v1.0.0type: NodePort
发布两个版本POD
#当前目录3个YAML文件
ls
#查看当前K8S中运行的service/pod。
kubectl get all
#把当前目录的所有文件,一次性发布。
kubectl apply -f .
kubectl get all # 查看2个POD,1个Nodeport Service
浏览器校验已发布的应用。http://localhost:31080
#显示POD的标签信息
kubectl get po --show-labels
#显示Service的详情,找到selector指向
kubectl describe svc petclinic
蓝绿切换
更新nodeport service yaml文件。
修改petclnic-service.yml文件内容如下
apiVersion: v1
kind: Service
metadata:# Unique key of the Service instancename: petclinic
spec:ports:# Accept traffic sent to port 80- name: httpport: 8080targetPort: 8080nodePort: 31080selector:app: petclinicversion: v1.0.1type: NodePort
切换命令,由于POD没变化,所以可以直接发布当前目录所有文件。
kubectl apply -f .
kubectl get all
kubectl describe svc petclinic
浏览器校验已发布的应用。http://localhost:31080
环境清理 用于实验环境清理。
删除所有POD
kubectl delete po --all
删除所有Service, 虽然也会删除掉service/kubernetes,但是它会马上自动启动。
kubectl delete svc --all
Kubernetes 基于Service的蓝绿发布相关推荐
- kubernetes基于nginx-ingress进行蓝绿部署、金丝雀发布(canary)
kubernetes基于nginx-ingress进行蓝绿部署.金丝雀发布(canary) 用户通过负载均衡器访问v1版本,关掉v1版本,接触到v2版本. 在关闭版本a部署版本b,此技术意味着服务的停 ...
- 使用阿里云容器服务Kubernetes实现蓝绿发布功能
背景 在发布应用时,经常需要先上线一个新版本,用较小的流量去测试一下该新版本的可用性.但是Kubernetes的ingress resource 并没有实现流量控制与切分的功能,导致针对同一个域名下的 ...
- k8s 使用Nginx Ingress实现灰度发布和蓝绿发布
**导语:**云原生最佳实践系列,涵盖了灰度发布.弹性伸缩.集群迁移.网络通信.应用容器化改造等等场景,针对各行业面临的应用现状,提出最佳解决方案,并提供详细操作指导,希望对您有所帮助. Ingres ...
- 1W字长文:蓝绿发布、金丝雀发布、滚动发布、A/B测试 原理和实操
背景: 蓝绿发布.金丝雀发布.滚动发布.A/B测试 ,是大家日常常见的发布工作.所以发布的原理和实操是一个非常.非常核心的面试知识点. 在40岁老架构师 尼恩的读者交流群(50+)中,其相关面试题是一 ...
- 一文看懂ingress nginx实现灰度发布和蓝绿发布过程
背景信息 灰度及蓝绿发布是为新版本创建一个与老版本完全一致的生产环境,在不影响老版本的前提下,按照一定的规则把部分流量切换到新版本,当新版本试运行一段时间没有问题后,将用户的全量流量从老版本迁移至新版 ...
- K8S的灰度发布、滚动更新、蓝绿发布
K8S灰度发布.蓝绿发布.滚动更新 一.简介 1.1灰度发布(金丝雀发布) 金丝雀发布一般是先发1台机器,或者一个小比例,例如2%的服务器,主要做流量验证用,也称为金丝雀 (Canary) 测试,国内 ...
- 使用k8s实现灰度发布,金丝雀,蓝绿发布
介绍# Ingress-Nginx 是一个K8S ingress工具,支持配置 Ingress Annotations 来实现不同场景下的灰度发布和测试. Nginx Annotations 支持以下 ...
- 金丝雀发布、滚动更新、蓝绿发布到底有啥区别
根据 2017 年的 DevOps 发展报告,高效能组织和低效能组织在软件交付的效率上有数量级上的差异.技术组织的软件交付能力是一种综合能力,涉及众多环节,其中发布是尤为重要的环节. 作为技术人员,大 ...
- PolarisMesh系列文章——灰度发布系列(蓝绿发布)
蓝绿发布 什么是蓝绿发布 蓝绿部署是一种应用发布模式,可将用户流量从先前版本的应用或微服务全量转移到新版本中(两者均保持在生产环境中运行). 旧版本可以称为蓝色环境,而新版本则可称为绿色环境.一旦生产 ...
- 解释什么是蓝绿发布?
蓝绿发布(Blue-green release)是一种软件部署策略,主要用于应对新版本软件在生产环境中的测试和部署.这种策略将新版本软件分为两个阶段:蓝色阶段和绿色阶段.蓝色阶段通常在开发和测试环境中 ...
最新文章
- 【2012百度之星/资格赛】H:用户请求中的品牌 [后缀数组]
- github总star超9K!一个超赞的 PyTorch 资源大列表,有人把它翻译成了中文版!
- Mesos Framework开发指南 一
- 程序设计语言python语言概述
- 西电计算机科学院实践中心,计算机基础教学实验中心
- MySQL5添加外键约束错误 (Error Code : 1005)
- python常见排序算法解析
- EJB+JSF开发示例(附源码)
- H3C 典型数据链路层标准
- Oralce UTL_SMTP发送邮件的发送时间处理
- mac使用国内镜像安装homebrew
- 盘点10种局域网联机游戏
- IDEA 返回上一步,回到下一步 冲突 快捷键设置
- HTML——响应式布局
- linux 提升管理员权限命令,​cmd怎么用命令直接提升到管理员权限|cmd原有权限提升方法...
- 压缩包伪装-阿里网盘禁止分享解决方案\更新日志
- 华东理工大学计算机考研资料汇总
- DEVC报错[Error] expected initializer before '.'
- python 生成16位integer
- 经济法论文选题有什么推荐吗?