六种方法教你如何通过Kubectl 重启Pod

云计算 云原生
大家可能都知道 kubectl 其实没有 restart pod 这个命令,这个主要是由于在 k8s 中pod 的管理属于rs 等控制器,并不需要运维手动维护,但有时候,我们修改了configmap 的配置文件后,希望重启pod 加载配置,此时就需要 “重启” Pod。

点击参加51CTO网站内容调查问卷

大家可能都知道 kubectl 其实没有 restart pod 这个命令,这个主要是由于在 k8s 中pod 的管理属于rs 等控制器,并不需要运维手动维护,但有时候,我们修改了configmap 的配置文件后,希望重启pod 加载配置,此时就需要 “重启” Pod。这里说的“重启”是加了引号的,准确地来说,是重建pod,给用户的感觉是重启。

下面介绍六种k8s 里面重启pod的方式

方法一:kubectl rollout restart

这个命令是比较推荐的,通过

kubectl rollout restart deployment <deployment_name> -n <namespace>

便可以重建这个deployment下的 pod,和滚动升级类似,并不会一次性杀死Pod,比较平滑。

方法二:kubectl scale

这种方法相对来说,比较粗放,我们可以先将副本调成 0

kubectl scale deployment <deployment name> -n <namespace> --replicas=0

然后再改回目的副本数

kubectl scale deployment <deployment name> -n <namespace> --replicas=10

但这个会中断服务。但两条命令也能解决,下面介绍的就更直接了。

方法三: kubectl delete pod

这个我就不解释了

kubectl delete pod <pod_name> -n <namespace>

还是多说一句,此时优雅删除的效果还是有的。再多说一句,直接删 rs 效果也挺好。

方法四:kubectl replace

这种方法是通过更新Pod ,从触发k8s pod 的更新

kubectl get pod <pod_name> -n <namespace> -o yaml | kubectl replace --force -f -

方法五:kubectl set env

通过 设置环境变量,其实也是更新pod spec 从而触发滚动升级。

kubectl set env deployment <deployment name> -n <namespace> DEPLOY_DATE="$(date)"

只不过这里通过kubectl 命令行,当我们通过API 更新pod spec 后一样会触发滚动升级

方法六: kill 1

这种方法就是在容器里面 kill 1 号进程。

kubectl exec -it <pod_name> -c <container_name> --/bin/sh -c "kill 1"

但是但是但是,重要的话说三遍,它有个局限,必须要求你的 1 号进程要 捕获 TERM 信号,否则在容器里面是杀不死自己的,这个在之前的文章已经介绍过了。

责任编辑:武晓燕 来源: 今日头条
相关推荐

2011-02-24 10:56:34

人才

2010-10-08 11:13:22

MySQL修改密码

2022-08-01 12:04:22

SaaSSaaS业务

2023-11-22 12:33:51

Pythonexe

2015-07-09 10:13:05

IT基础设施支出数据中心

2023-09-06 08:00:00

ChatGPT数据分析

2023-04-26 08:41:16

Git撤消更改

2023-04-03 20:29:00

Linux环境变量

2021-12-06 06:58:50

List重复数据

2022-06-09 08:46:58

ITCIO职业

2022-06-10 10:25:07

CIOIT领导者职业生涯

2022-11-08 11:00:33

2023-12-08 08:53:37

数据中心人工智能自动化

2024-11-05 08:28:50

2023-05-15 18:32:20

2022-02-21 22:47:36

首席信息官IT技术

2022-05-30 16:42:20

数据中心

2010-04-02 15:36:37

Oracle约束

2016-10-25 10:12:13

2023-08-02 10:05:28

点赞
收藏

51CTO技术栈公众号