k8s中Pod重启方法

k8s中Pod重启方法参考:https://segmentfault.com/a/1190000020675199在使用docker的过程中,我们可以使用dockerrestart{container_id}来重启容器,但是在kubernetes中并没有重启命令(没有kubectlrestart{podname}),有时候我们的Pod出现Bug意外终止,导致我们需要重启Pod,却没有一个很…

在使用 docker 的过程中,我们可以使用docker restart {container_id}来重启容器,但是在 kubernetes 中并没有重启命令(没有 kubectl restart {podname}),有时候我们的 Pod 出现 Bug意外终止,导致我们需要重启 Pod ,却没有一个很好的方式,特别是没有 yaml 文件的情况下,所以我总结了以下几种重启 Pod 的方式。

一、有yaml文件的重启方式

在有 yaml 文件的情况下可以直接使用 kubectl replace –force -f xxx.yaml 来强制替换Pod 的 API 对象,从而达到重启的目的。如下图:

在这里插入图片描述

二、没有yaml文件的重启方式

使用scale命令

没有 yaml 文件,但是使用的是 Deployment 对象。可以使用以下方式重启

kubectl scale deployment esb-admin --replicas=0 -n { 
   namespace}
kubectl scale deployment esb-admin --replicas=1 -n { 
   namespace}

由于 Deployment 对象并不是直接操控的 Pod 对象,而是操控的 ReplicaSet 对象,而 ReplicaSet 对象就是由副本的数目的定义和Pod 模板组成的。所以这条命令分别是将ReplicaSet 的数量 scale 到 0,然后又 scale 到 1,那么 Pod 也就重启了。


直接删除Pod进行重启

同样没有 yaml 文件,但是使用的是 Deployment 对象。查看deploy文件的重启策略,如果配置了重启策略。可以尝试删除重启:
在这里插入图片描述

使用命令

kubectl delete pod { 
   podname} -n { 
   namespace}

这个方法就很简单粗暴了,直接把 Pod 删除,因为 Kubernetes 是声明式 API,所以删掉了之后,Pod API 对象就与预期的不一致了,所以会自动重新创建 Pod 保持与预期一致,但是如果ReplicaSet 管理的 Pod 对象很多的话,那么要一个个手动删除,会很麻烦,所以可以使用

kubectl delete replicaset { 
   rs_name} -n { 
   namespace}

命令来删除 ReplicaSet

使用“-o yaml”参数导出Pod模板并重建Pod【推荐】

没有 yaml 文件,直接使用的 Pod 对象。

使用命令

kubectl get pod { 
   podname} -n { 
   namespace} -o yaml | kubectl replace --force -f -

在这种情况下,由于没有 yaml 文件,且启动的是 Pod 对象,那么是无法直接删除或者 scale 到 0 的,但可以通过上面这条命令重启。这条命令的意思是 get 当前运行的 pod 的 yaml声明,并管道重定向输出到 kubectl replace命令的标准输入,从而达到重启的目的。

总结

我们可以通过多种方式来重启对象,总的来说,最推荐的方式是使用

kubectl get pod { 
   podname} -n { 
   namespace} -o yaml | kubectl replace --force -f -

这种方式,因为适用于多种对象。此外,重启 Pod 并不会修复运行程序的 bug,想要解决程序的意外终止,最终还是得要修复 bug。
参考:https://segmentfault.com/a/1190000020675199

今天的文章k8s中Pod重启方法分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/29708.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注