设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 数据 手机
当前位置: 首页 > 云计算 > 正文

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

发布时间:2022-11-30 09:37 所属栏目:124 来源:互联网
导读:大家可能都知道 kubectl 其实没有 restart pod 这个命令,这个主要是由于在 k8s 中pod 的管理属于rs 等控制器,并不需要运维手动维护,但有时候,我们修改了configmap 的配置文件后,希望重启pod 加载配置,此时就需要 重启 Pod。这里说的重启是加了引号的,
  大家可能都知道 kubectl 其实没有 restart pod 这个命令,这个主要是由于在 k8s 中pod 的管理属于rs 等控制器,并不需要运维手动维护,但有时候,我们修改了configmap 的配置文件后,希望重启pod 加载配置,此时就需要 “重启” Pod。这里说的“重启”是加了引号的,准确地来说,是重建pod,给用户的感觉是重启。
 
  下面介绍六种k8s 里面重启pod的方式
 
  方法一:kubectl rollout restart
  这个命令是比较推荐的,通过
 
  复制
  kubectl rollout restart deployment <deployment_name> -n <namespace>
  1.
  便可以重建这个deployment下的 pod,和滚动升级类似,并不会一次性杀死Pod,比较平滑。
 
  方法二:kubectl scale
  这种方法相对来说,比较粗放,我们可以先将副本调成 0
 
  复制
  kubectl scale deployment <deployment name> -n <namespace> --replicas=0
  1.
  然后再改回目的副本数
 
  复制
  kubectl scale deployment <deployment name> -n <namespace> --replicas=10
  1.
  但这个会中断服务。但两条命令也能解决,下面介绍的就更直接了。
 
  方法三: kubectl delete pod
  这个我就不解释了
 
  复制
  kubectl delete pod <pod_name> -n <namespace>
  1.
  还是多说一句,此时优雅删除的效果还是有的。再多说一句,直接删 rs 效果也挺好。
 
  方法四:kubectl replace
  这种方法是通过更新Pod ,从触发k8s pod 的更新
 
  复制
  kubectl get pod <pod_name> -n <namespace> -o yaml | kubectl replace --force -f -
  1.
  方法五:kubectl set env
  通过 设置环境变量,其实也是更新pod spec 从而触发滚动升级。
 
  复制
  kubectl set env deployment <deployment name> -n <namespace> DEPLOY_DATE="$(date)"
  1.
  只不过这里通过kubectl 命令行,当我们通过API 更新pod spec 后一样会触发滚动升级
 
  方法六: kill 1
  这种方法就是在容器里面 kill 1 号进程。
 
  复制
  kubectl exec -it <pod_name> -c <container_name> --/bin/sh -c "kill 1"
  1.
  但是但是但是,重要的话说三遍,它有个局限,必须要求你的 1 号进程要 捕获 TERM 信号,否则在容器里面是杀不死自己的,这个在之前的文章已经介绍过了。

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读