kubernetes 的 滚动升级和回滚(rollout)

产品部署完成上线之后,经常遇到需要升级服务的要求(只考虑更新镜像),以往操作流程大致如下:

# 方式一:找到 master具体调度到的所有目标node,删除其对应的镜像文件
# 方式二:修改 file.yaml中镜像拉取策略为Always

# 删掉旧pod,并重新创建
kubectl delete -f /path/file.yaml
kubectl create -f /path/file.yaml

但是这样有一个比较棘手的问题,就是如果升级失败的回滚策略。

 

因此我们利用kubernetes自身的滚动升级的工具,部署及升级流程如下:

1. 在初次创建的时候,尽量加入参数 --record,这样k8s会记录下本次启动的脚本 。

# --record
kubectl create -f /path/file.yaml --record

2.执行查看发布的历史记录,会显示现在已经记录的脚本及其序号。

# 查看历史记录
kubectl rollout history deployment deploy-apigw

3.升级命令执行后会输出:xxx   image updated

# 升级镜像
kubectl set image deployment/deploy-name containerName=newIMG:version

# kubectl set image controllerType/controllerInstanceName underInstanceContainerName=image:version

4.查看pod状态,如果失败需要回滚操作

# 回滚到上一个操作版本
kubectl rollout undo deployment/deploy-name
# 回滚到指定版本,版本号由第二步查看获得
kubectl rollout undo deployment/deploy-name --to-revision=3

Notice:

  1. k8s 1.15版本,目前支持 pod (po), replicationcontroller (rc), deployment (deploy), daemonset (ds), replicaset (rs)
  2. 执行rollout undo操作之后,版本号会移动,需要确认版本号无误再undo

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值