关于k8s的pod不断重启的原因分析

这篇具有很好参考价值的文章主要介绍了关于k8s的pod不断重启的原因分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

k8s是什么

k8s全称:Kubernetes

1、k8s是什么

Kubernetes 是一个全新的基于容器技术的分布式架构解决方案,是 Google 开源的一个容器集群管理系统,Kubernetes 简称 K8S。

Kubernetes 是一个一站式的完备的分布式系统开发和支撑平台,更是一个开放平台,对现有的编程语言、编程框架、中间件没有任何侵入性。

Kubernetes 提供了完善的管理工具,这些工具涵盖了开发、部署测试、运维监控在内的各个环节。

Kubernetes 具有完备的集群管理能力,包括多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和服务发现机制、内建智能负载均衡器、强大的故障发现和自我修复能力、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制、多粒度的资源配额管理能力。

Kubernetes 官方文档:Kubernetes

 2、k8s发布之后,pod一直在重启原因分析

 现象:running的pod,短时间内重启次数太多

k8s频繁重启pod,kubernetes,容器,云原生

 如图,3天内已经重启了八百多次,一直就是在running和crashloopbackoff之间反复横跳

  定位问题方法:查看pod日志

kubectl get event                           #查看当前环境一个小时内的日志
kubectl describe pod pod_name               #查看当前pod的日志    
 
kubectl  logs -f  pod_name --previous       #查看重启之前的那一次pod的日志,从那一刻开始计算
 
###############
一般用以上的三个命令就行

 在日志中可以清晰的看到整个pod的生命周期,从pull到kill,翻到最上面可以看到kill掉的原因

 如果修改了配置文件,需要delete  -f  ???.yaml,再apply -f ???.yaml

 修改的哪个,就delete掉哪个,然后apply

kubectl delete -f ???.yaml
 kubectl apply -f ???.yaml

 附:

k8s中pod的

重启策略


pod中一共有以下三个重启策略(restartPolicy)
1、Always:当容器终止退出后,总是重启容器,默认策略。
2、OnFailure:当容器异常退出(退出状态码非0)时,才重启容器。 
3、Never:当容器终止退出,从不重启容器。
三种重启策略中,Always是默认策略,即当用户在配置文件中未配置关于重启的策略,则默认为Always.

kubectl get pods pod1 -o yaml l grep restartPolicy
执行以上命令即可看到当前环境配置的重启策略

几种策略也按实际情况修改,即常驻容器肯定采用Always,例如nginx与mysql等

而一些预期终止的程序

  1、失败重新执行,例如定时任务,则适用于OnFailure

  2、失败不重新执行,例如一次性任务Never

 健康检查:
       健康检查是在pod中,可能容器进程存在,pod状态也为runing,但容器内部无法提供服务了(可能是因为堆内存溢出等)这种k8s自身无法判断,需要用户来提供检查方式从情况下使用的
健康检查类型
 1、livenessProbe(存活检查):如果检查失败,将杀死容器,根据Pod 的restartPolicy来操作。
 2、readinessProbe(就绪检查):如果检查失败,Kubernetes会把 Pod从service endpoints中剔除。(可以理解为提出k8s的负载均衡)
 3、startupProbe(启动检查):检查成功才由存活检查接手,用于保护 慢启动容器
支持的检查方法:
 • httpGet:发送HTTP请求,返回200-400范围状态码为成功。
 • exec:执行Shell命令返回状态码是0为成功。
 • tcpSocket:发起TCP Socket建立成功。

3、导出日志

docker导出日志

docker logs ${docker id} > ${导出的文件名}

k8s导出节点日志

kubectl logs ${pod_id} > ${导出日志的文件名}
例
kubectl logs xxx > xxx.txt

pod_id查看命令
kubectl get pod
kubectl get pod | grep xxx

4、删除某个pod节点文章来源地址https://www.toymoban.com/news/detail-729578.html

kubectl delete pod ${pod_id}  --force --grace-period=0 -n default

到了这里,关于关于k8s的pod不断重启的原因分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • K8s中内置的Prometheus 异常,不断重启的解决方案

    要说明的一点是: 此处理方式会进行数据的删除 ,并且多实例情况下最好都做下操作。多实例都操作一遍的意思就是比如我普罗米修斯有如下四个: 如果Prometheus-k8s-0一直重启,则不光需要操作Prometheus-k8s-0,也需要对它的另一个实例Prometheus-k8s-1进行处理。如果是Prometheus-k

    2024年02月15日
    浏览(53)
  • 案例分享-full gc导致k8s pod重启

     在之前的记一次k8s pod频繁重启的优化之旅中分享过对于pod频繁重启的一些案例,最近又遇到一例,继续分享出来希望能给大家带来些许收获。 报警群里突然显示某pod频繁重启,我随即上去查看日志,主要分这么几步:   1.查看pod重启的原因,kubectl descirbe pod 上面的Reason:

    2024年02月02日
    浏览(53)
  • K8s(四)Pod资源——pod生命周期、重启策略、容器钩子与容器探测

    目录 Pod生命周期 Pod重启策略 初始化容器 容器钩子 容器探测 启动探测 存活探测 就绪探测 参考资料 Pod 的生命周期 | Kubernetes Init 容器 | Kubernetes Pod的生命周期可以分为以下几个阶段: Pending(等待):在这个阶段,Pod被创建,并且正在等待被调度到一个节点上运行。此时,

    2024年01月20日
    浏览(47)
  • k8s的node节点重启后pod不正常运行

    同事在k8s集群中的node3跑算法时候,把node3打崩了,导致kubelet服务不能正常运行和集群通信。 先将node节点打上不可调度标签,然后执行驱逐。 已经看到pod在其他节点创建出来的,但是node3上面的pod仍然处于terminating状态。 刚开始我以为是磁盘io仍然太高,导致它延迟,等同事

    2024年02月07日
    浏览(43)
  • k8s重启Pod报错0/4 nodes are available

    当您在Kubernetes中使用 kubectl delete pod 命令删除Pod,并在Pod的定义中指定了nodeSelector时,可能会出现“0/4 nodes are available”的错误。这是因为Kubernetes调度程序在找不到符合nodeSelector条件的节点时,会将Pod设置为挂起状态,直到可用节点出现为止。 要解决这个问题,您可以采取以

    2024年02月16日
    浏览(49)
  • 现场问题排查-k8s(docker)上某服务pod频繁自动重启

    根因:应用内存占用不合理(个人认为)+现场配置内存不够导致频繁触发OOM引发该现象。 为啥要写这个文章? 之前没有k8s下pod频繁重启的问题处理经验,这次实战沉淀思路及过程,供后续自己处理相同问题提供参考资料 为其他遇到类似问题的人提供一些排查思路 现场反馈

    2024年02月03日
    浏览(42)
  • k8s关于pod

      目录 1、POD 的创建流程 kubectl 发起创建 Pod 请求: API Server 接收请求并处理: 写入 Etcd 数据库: Kubelet 监听并创建 Pod: Pod 状态更新和汇报: 2、POD 的状态解析 1. Pending Pod 2. Running Pod 3. Succeeded Pod 4. Failed Pod 5. Unknown 6. CrashLoopBackOff 7. ImagePullBackOff Pod 8. Terminating 9. Evicted 10.

    2024年03月18日
    浏览(50)
  • K8S 1.27 新特性 Pod 无需重启调整CPU内存资源

    如果您已经部署了指定 CPU 或 Memory 资源的 Kubernetes pod,可能已经注意到更改资源值涉及重新启动 pod。直到现在,这一直是运行工作负载的破坏性操作。 在 Kubernetes v1.27 中,添加了一个新的 alpha 功能,允许用户在不重启容器的情况下调整分配给 Pod 的 CPU 或 memory 资源的大小。

    2024年02月11日
    浏览(37)
  • 关于K8s的Pod的详解(一)

    Pod 作为k8s创建,调度,管理的基本单位。由上级的Controller对Node上安装的Kubelet发送指令对Pod进行管理,因此我们需要详细了解关于Pod。 其中最为基本的操作就是Pod的创建,删除,调度,查看! 对于Pod的创建,相关联的就有,对Pod的资源分配,资源限制;对Pod的创建调度,基

    2024年02月16日
    浏览(53)
  • k8s主节点部署pod状态一直是pending原因排除,并彻底删除pod技巧

    一般来说,master节点是会产生一个污点,不允许部署pod的。 如果其他原因也可以使用这个命令检查状态原因 当出现类似这样问题 问题描述: Warning FailedScheduling 40s (x28 over 28m) default-scheduler 0/1 nodes are available: 1 node(s) had untolerated taint {node-role.kubernetes.io/master: }, that the pod didn’

    2024年01月19日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包