kubernetes deployment滚动升级与回滚

部署服务的时候我们希望服务的更新对用户是无感知的,deployment提供了很
好的服务。

滚动升级

  • spec下加入以下配置
1
2
3
4
5
6
7
replicas: 2
minReadySeconds: 5
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
  • minReadySeconds:
    • Kubernetes在等待设置的时间后才进行升级
    • 如果没有设置该值,Kubernetes会假设该容器启动起来后就提供服务了
    • 如果没有设置该值,在某些极端情况下可能会造成服务服务正常运行
  • maxSurge:
    • 升级过程中最多可以比原先设置多出的POD数量
    • 例如:maxSurage=1,replicas=5,则表示Kubernetes会先启动1一个新的Pod后才删掉一个旧的POD,整个升级过程中最多会有5+1个POD。
  • maxUnavaible:
    • 升级过程中最多有多少个POD处于无法提供服务的状态
    • maxSurge不为0时,该值也不能为0
    • 例如:maxUnavaible=1,则表示Kubernetes整个升级过程中最多会有1个POD处于无法服务的状态。

回滚

  • 查看升级历史
1
kubectl rollout history deployment nginx-deploy

执行Deployment升级的时候最好带上record参数,可以方便查看历史信息

  • 查看历史信息
1
kubectl rollout history deployment nginx-deploy --revision=3
  • 回滚到指定版本
1
kubectl rollout undo deployment nginx-deploy --to-revision=2

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器