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文件。

  1. petclinic-pod-v1.0.0.yml
  2. petclinic-pod-v1.0.1.yml
  3. 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的蓝绿发布相关推荐

  1. kubernetes基于nginx-ingress进行蓝绿部署、金丝雀发布(canary)

    kubernetes基于nginx-ingress进行蓝绿部署.金丝雀发布(canary) 用户通过负载均衡器访问v1版本,关掉v1版本,接触到v2版本. 在关闭版本a部署版本b,此技术意味着服务的停 ...

  2. 使用阿里云容器服务Kubernetes实现蓝绿发布功能

    背景 在发布应用时,经常需要先上线一个新版本,用较小的流量去测试一下该新版本的可用性.但是Kubernetes的ingress resource 并没有实现流量控制与切分的功能,导致针对同一个域名下的 ...

  3. k8s 使用Nginx Ingress实现灰度发布和蓝绿发布

    **导语:**云原生最佳实践系列,涵盖了灰度发布.弹性伸缩.集群迁移.网络通信.应用容器化改造等等场景,针对各行业面临的应用现状,提出最佳解决方案,并提供详细操作指导,希望对您有所帮助. Ingres ...

  4. 1W字长文:蓝绿发布、金丝雀发布、滚动发布、A/B测试 原理和实操

    背景: 蓝绿发布.金丝雀发布.滚动发布.A/B测试 ,是大家日常常见的发布工作.所以发布的原理和实操是一个非常.非常核心的面试知识点. 在40岁老架构师 尼恩的读者交流群(50+)中,其相关面试题是一 ...

  5. 一文看懂ingress nginx实现灰度发布和蓝绿发布过程

    背景信息 灰度及蓝绿发布是为新版本创建一个与老版本完全一致的生产环境,在不影响老版本的前提下,按照一定的规则把部分流量切换到新版本,当新版本试运行一段时间没有问题后,将用户的全量流量从老版本迁移至新版 ...

  6. K8S的灰度发布、滚动更新、蓝绿发布

    K8S灰度发布.蓝绿发布.滚动更新 一.简介 1.1灰度发布(金丝雀发布) 金丝雀发布一般是先发1台机器,或者一个小比例,例如2%的服务器,主要做流量验证用,也称为金丝雀 (Canary) 测试,国内 ...

  7. 使用k8s实现灰度发布,金丝雀,蓝绿发布

    介绍# Ingress-Nginx 是一个K8S ingress工具,支持配置 Ingress Annotations 来实现不同场景下的灰度发布和测试. Nginx Annotations 支持以下 ...

  8. 金丝雀发布、滚动更新、蓝绿发布到底有啥区别

    根据 2017 年的 DevOps 发展报告,高效能组织和低效能组织在软件交付的效率上有数量级上的差异.技术组织的软件交付能力是一种综合能力,涉及众多环节,其中发布是尤为重要的环节. 作为技术人员,大 ...

  9. PolarisMesh系列文章——灰度发布系列(蓝绿发布)

    蓝绿发布 什么是蓝绿发布 蓝绿部署是一种应用发布模式,可将用户流量从先前版本的应用或微服务全量转移到新版本中(两者均保持在生产环境中运行). 旧版本可以称为蓝色环境,而新版本则可称为绿色环境.一旦生产 ...

  10. 解释什么是蓝绿发布?

    蓝绿发布(Blue-green release)是一种软件部署策略,主要用于应对新版本软件在生产环境中的测试和部署.这种策略将新版本软件分为两个阶段:蓝色阶段和绿色阶段.蓝色阶段通常在开发和测试环境中 ...

最新文章

  1. 【2012百度之星/资格赛】H:用户请求中的品牌 [后缀数组]
  2. github总star超9K!一个超赞的 PyTorch 资源大列表,有人把它翻译成了中文版!
  3. Mesos Framework开发指南 一
  4. 程序设计语言python语言概述
  5. 西电计算机科学院实践中心,计算机基础教学实验中心
  6. MySQL5添加外键约束错误 (Error Code : 1005)
  7. python常见排序算法解析
  8. EJB+JSF开发示例(附源码)
  9. H3C 典型数据链路层标准
  10. Oralce UTL_SMTP发送邮件的发送时间处理
  11. mac使用国内镜像安装homebrew
  12. 盘点10种局域网联机游戏
  13. IDEA 返回上一步,回到下一步 冲突 快捷键设置
  14. HTML——响应式布局
  15. linux 提升管理员权限命令,​cmd怎么用命令直接提升到管理员权限|cmd原有权限提升方法...
  16. 压缩包伪装-阿里网盘禁止分享解决方案\更新日志
  17. 华东理工大学计算机考研资料汇总
  18. DEVC报错[Error] expected initializer before '.'
  19. python 生成16位integer
  20. 经济法论文选题有什么推荐吗?

热门文章

  1. 2018一战硕士考研风雨路
  2. php 抽奖系统源码下载,魔众砸金蛋抽奖系统PHP源码 v2.0.0
  3. 魔兽TBC常用WA字符串收集
  4. 备份jar包的一些坑
  5. [Unity][摄像机视角]多个摄像机之间切换
  6. 扫描隧道显微镜STM功能介绍及用途
  7. 我的科幻评论——《星船伞兵》:海因莱茵最经典又最不典型之作,平凡人类勇气与责任的赞歌
  8. C语言 --- sizeof() 7种使用详解
  9. Java Instrument 功能使用及原理
  10. 彼得林奇的成功投资三——回购+提高股息+无多元化