如何使用 Kubectl 优雅的滚动更新应用

公众号关注 「奇妙的 Linux 世界」

设为「星标」,每天带你玩转 Linux !

e10018f6272d09f3722d8e78b066c41a.png

Kubernetes 中的 Pod 通常应该是 "Running" 状态,然而有时候我们需要针对正在运行的 Pod 调度到其它的节点或是基于其它特殊的原因,将正常运行的 Pod 进行重启。Pod 的重启方式也有不少,比如常见删除正在运行的 Pod 让其创建新的 Pod 实例(单个 Pod 无法直接使用该方式)。以下罗列出几种常见的方式仅供备忘:

方法1:滚动重启方法[推荐]

自 Kubernetes 1.15 版本就开始支持滚动重启部署。这是 Kubernetes 中最快的重启机制,因为它是新增的。下面给出的命令会一个一个地关闭并重新启动部署中的每个 Pod。

$ kubectl rollout restart deployment nginx-deploy

提示:由于大多数容器仍在运行,因此整个过程是纵享丝滑--无感知的。

方法2:环境变量方法

这种方式就是给运行的容器分配一个新的环境变量,来强制 Pod 重新启动。例如: 增加一个容器部署日期(实际可能未使用到该变量)

$ kubectl set env deployment nginx-deploy DEPLOY_DATE="$(date)"

提示:在上面的场景中,使用了set env 修改了环境变量,deployment [deployment name] 选择了你的 deployment,DEPLOY DATE="$(date)" 修改了deployment date 并导致pod 更新。这种方式也是无感知的。

方法3:副本扩/缩容

当副本数量设置为 0 时,Kubernetes 会消除它不再需要的副本。设置大于 0 后,Kubernetes 会生成新的副本。

$ kubectl scale --replicas=0 deployment nginx-deploy
$ kubectl scale --replicas=N deployment nginx-deploy

以上方式会中断业务,我们也可以使用不中断业务的方式来重启应用。比如记录当前的 Pod 副本数量,使用 scale --replicas 命令来分配一个大于当前的副本数值的值,使用 kubectl delete pod 方式删除旧 Pod,最后将使用scale --replicas 还原成正常的副本数量。

提示:不建议使用这种方式来重启应用。

结论

Kubernetes 是一个非常牛X的编排系统,然而只要是系统,就一定会出现问题。当出现问题时,可以利用上述 3 种方式快速安全地让您的应用程序恢复并运行,而不会影响用户体验。

参考引用

  • [1] https://linuxhint.com/kubectl-rollout-restart/

  • [2] https://kubernetes.io/zh/docs/reference/kubectl/cheatsheet/

本文转载自:「 枯惠 」,原文:https://tinyurl.com/yse2usy9 ,版权归原作者所有。欢迎投稿,投稿邮箱: editor@hi-linux.com。

01560cbb8534a6a756a32bc5499f09bf.gif

最近,我们建立了一个技术交流微信群。目前群里已加入了不少行业内的大神,有兴趣的同学可以加入和我们一起交流技术,在 「奇妙的 Linux 世界」 公众号直接回复 「加群」 邀请你入群。

fcd37071fa40e708bd0183d63969cee4.png

你可能还喜欢

点击下方图片即可阅读

88dcc945db03c3003f25ff4c427827c6.png

24 个常见的 Docker 疑难杂症处理技巧

d8a1b31454c456334e57820e9a164824.png

点击上方图片,『美团|饿了么』大额外卖红包天天免费领

0bbbeec1acb3ef8dee5ac4f874e5bf85.png

更多有趣的互联网新鲜事,关注「奇妙的互联网」视频号全了解!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值