[TOC]
https://github.com/ContainerSolutions/k8s-deployment-strategies
https://www.jianshu.com/p/71e14c31cb82
https://blog.container-solutions.com/kubernetes-deployment-strategies
k8s重新部署 Recreate
先停止旧服务,然后启动新服务,这是最简单的一种部署方式
spec:
strategy:
type: Recreate
最好用来验证 API 版本问题
实时部署/回滚
避免版本问题,因为一次更改是整个应用的改变
需要两倍的资源
在发布到生产之前,应该对整个应用进行适当的测试
让部分用户参与测试
A/B测实际上是一种基于数据统计做出业务决策的技术。在 Kubernetes 中并不原生支持,需要额外的一些高级组件来完成改设置(比如Istio、Linkerd、Traefik、或者自定义 Nginx/Haproxy 等)。
A/B测试(A/B testing) - 最适合部分用户的功能测试
为了服务升级过程中提供可持续的不中断的服务,Kubernetes 提供了rolling update机制,具体配置需要修改对应服务的yaml文件
minReadySeconds: 100 # 容器启动创建多少s后服务可用
strategy:
# indicate which strategy we want for rolling update
type: RollingUpdate
rollingUpdate:
maxSurge: 1 # 升级过程中最多可以比原先设置多出的POD数量
maxUnavailable: 1 # 升级过程中最多有多少个POD处于无法提供服务的状态
replicas: 2 # 目的副本集个数
滚动升级
kubwx apply -f svc-zipkin.yaml --record
暂停升级
kubwx rollout pause deployment zipkin-server
继续升级
kubwx rollout resume deployment zipkin-server
查看升级历史
kubwx rollout history deployment zipkin-server
回滚操作
回滚到上一级
kubwx rollout undo deployment zipkin-server
回滚制定版本(根据rollout history的查看结果)
kubwx rollout undo deployment zipkin-server --to-revision=13