Kubernetes 发布策略总结

孤人 提交于 2020-08-17 10:47:23

在Kubernetes中有几种不同的方式发布应用,所以为了让应用在升级期间依然平稳提供服务,选择一个正确的发布策略就非常重要了。选择正确的部署策略是要依赖于我们的业务需求的,下面我们列出了一些可能会使用到的策略:

  • 重建(recreate):停止旧版本部署新版本 (k8s内部支持)
  • 滚动更新(rolling-update):一个接一个地以滚动更新方式发布新版本 (k8s内部支持)
  • 蓝绿(blue/green):新版本与旧版本一起存在,然后切换流量 (k8s内部支持比较繁琐,argo(改动yml),不用太大改动)
  • 金丝雀(canary):将新版本面向一部分用户发布,然后继续全量发布 (k8s内部支持比较繁琐,argo(改动yml),不用太大改动)
  • A/B测(a/b testing):以精确的方式(HTTP 头、cookie、权重等)向部分用户发布新版本。A/B测实际上是一种基于数据统计做出业务决策的技术。在 Kubernetes 中并不原生支持,需要额外的一些高级组件来完成改设置(比如Istio、Linkerd、Traefik、或者自定义 Nginx/Haproxy 等)
  • AB测试 (所有的请求必须走代理网关进行流量拦截,进行转发来实现AB测试 参考: ingress-nginx实现灰度发布 )

改动点:

滚动更新(rolling-update):yml配置下ok

蓝绿(blue/green):使用argo,yml修改,jenkins抽取通用参数执行相关命令。

金丝雀(canary):使用argo,yml修改,jenkins抽取通用参数执行相关命令。

A/B测(a/b testing):

1.所有请求走网关,类似istio的sidecar来实现流量拦截转发(如原来内部请求通过svc的需要改下每个svc对应一个ingress))

https://github.com/xiaomin0322/my-argocd-ab

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!