首页 > 其他分享 >一篇有趣的K8S问题排查思路

一篇有趣的K8S问题排查思路

时间:2023-07-18 17:37:37浏览次数:36  
标签:容器 状态 问题 排查 有趣 K8S Pod 日志

在K8S这个平台里,Pod是一种被广泛使用的概念。但是,Pod有时也会变得不稳定,让开发者感到很困惑。特别是当您第一次面对Pod问题时,可能感觉像一只无力的小猫,完全无法解决问题。

常见的问题如下:

Pod无法启动:像个拒绝上班的员工,这个Pod可能根本就不想工作!请检查相关的日志或配置文件,以找出原因并尽量解决它。

Pod崩溃:如果Pod不能正常工作,并且甚至崩溃了,那么它就像一个摔倒的运动员。查看日志、容器资源情况以及节点健康状态,帮助解决错误。

Pod耗尽资源:这往往是由于程序内存泄漏、占用过多CPU或I/O资源等原因造成的。这就像一位无限制地消耗公司资源的贪心雇员!可以通过监视和调整容器资源限制来解决这个问题。

对于这些问题,我们可以采取以下方法:

1、查看yaml确保其与其他组件的配合默契(如果调用API时使用了错误的环境变量,则可能会导致此类问题)

2、在孵化过程中,蛋会通过振动测试来检查里面的小家伙是不是还活着。同样地,在容器生命周期中,您也需要监视其状态, 以确保它们健康稳定。查看他处于什么状态中。

3、获取日志又或者说看看是不是谁给Pod下了发脾气的命令?

 

这些地方通常都会有助于我们排查容器发生的问题。

下面开始介绍各种状态异常吧。

Pod在生命周期中可能会遇到许多杂七杂八的异常状态,如Pending、CrashLoopBackOff、 Error等等。以下是一些幽默的方法来排查其中一些异常:

如果发现你的Pod处于Pending状态,尝试想象你自己正在一个忙碌的街道上寻找出租车,但只有空载车辆经过。为了解决这个问题,您可以考虑在其他节点上安排Pod运行,就像开车前往不同路线的出租车站一样!查看事件检查调度的原因。

如果您的Pod显示Error状态,就好像你的浴袍在洗澡后没有干净一样让人沮丧。然而,错误状态仅仅告诉我们Pod发生了问题,需要进一步检查日志才能定位问题所在。可以在平台查看日志以获取更多信息。

当一个Pod始终处于Completed状态时,就像你吃完最后一片披萨一样,唯一的区别是等待下一次外卖送达的时间。completed 通常意味着您的容器已经停止,并且您的应用程序已经退出或者根本没有启动。这时可以检查容器内部是否正常完成工作并退出,或者是否存在磁盘写入权限等问题。

最后,如果您的Pod正在CrashLoopBackOff状态下迂回,那么您应该感到它像一个扭曲的旋转木马,让你的头晕目眩。这通常意味着您的容器在启动时无法正常运行。可能需要检查容器镜像、资源限制、环境变量以及系统日志等多个方面。

除此之外,还有很多其他异常状态,例如OOMKilled、ImagePullBackOff和ContainerCreating等等。对于每种异常状态,都需要找到特定的排查方法来解决问题。记住,找出异常状态的根本原因只是纪律和耐心的问题。通过尝试各种不同的方式和工具来排查,你就能够成功地修复它们,并重新开始享受优雅稳定的安装了!

标签:容器,状态,问题,排查,有趣,K8S,Pod,日志
From: https://www.cnblogs.com/zjl-throb/p/17563589.html

相关文章

  • 应对突发流量,如何快速为自建 K8s 添加云上弹性能力
    作者:庄宇以Kubernetes为代表的容器技术带来的是一种应用交付模式的变革,其正迅速成为全世界数据中心的统一API。为了保证业务持续稳定、用户访问不中断,高可用、高弹性等能力是应用架构设计不变的追求,多集群架构天然具备这样的能力。而只有在Kubernetes这层统一且标准的API......
  • crane-scheduler基于真实负载进行k8s调度
    介绍kubernetes的原生调度器只能通过资源请求来调度pod,这很容易造成一系列负载不均的问题:对于某些节点,实际负载与资源请求相差不大,这会导致很大概率出现稳定性问题。对于其他节点来说,实际负载远小于资源请求,这将导致资源的巨大浪费。为了解决这些问题,动态调度器根据实际的......
  • Doris-BE节点集体挂掉问题排查
    背景7月14版本上线,7月16日doris集群BE节点短时间内陆续挂掉,暂时重启解决,7月17日周一上班,BE节点开始反复挂掉影响使用问题定位:1、查看dorisBE节点日志be.out日志如下所示,由第7行(doris::PlanFragmentExecutor)可看出是因为sql执行引发的问题,需要进一步的通过CoreDump来定位到触......
  • k8s中,secret中有多条数据,如何将某条数据挂载为一个单独的文件?
    secrete中,包含以下两条数据db-password,原内容是123456db-username,原内容是:admin 这里都是base64编码的结果。 在pod中,volumemounts中,subPath指定某个数据项的key值mountPath:为具体的某个文件的名字这样挂载之后,就是具体的文件了,文件的内容,就是key对应的值。......
  • kubeasz K8S测试环境删除多余 node 节点
    kubeaszK8S测试环境删除多余node节点背景:公司之前存在3套test环境,有1套环境部署的生产环境老系统,目前生产环境已经完成了新老系统切换,不在需要老系统test环境,需要进行回收1|查看节点列表使用kubectl命令来查看当前集群中的节点列表,以确认要删除的节点的名称。kub......
  • 【Azure K8S】记录AKS VMSS实例日志收集方式
    问题描述如何从AKS的VMSS集群中收集实例日志? 参考步骤第一步:登陆VMSS实例参考官网步骤:使用SSH连接到AzureKubernetes服务(AKS)群集节点以进行维护或故障排除: https://docs.azure.cn/zh-cn/aks/ssh#configure-virtual-machine-scale-set-based-aks-clusters-for-ssh......
  • 下载k8s源码
    设置GOPATH环境变量goenv-wGO111MODULE=autocd$GOPATHmkdir-psrc/k8s.iocdsrc/k8s.iogitclonehttps://github.com/kubernetes/kubernetes.gitcdkubernetesgitcheckoutrelease-1.15设置GolandFile->Settings->GO->GOPATH勾选UseGOPATHthat's......
  • Loki+Promtail+Grafana 监控 K8s 日志
    Loki架构:1、loki:服务端,负责存储日志和处理查询2、promtail:采集端,负责采集日志发送给loki3、grafana:负责采集日志的展示创建yml文件cat>loki-rbac.yaml<<EOFapiVersion:v1kind:ServiceAccountmetadata:name:lokinamespace:thanos-monitoringapiVersion:rbac......
  • 裸机安装k8s
    环境准备节点数量:3台虚拟机centos7(virtualbox)硬件配置:2G或更多的RAM,2个CPU或更多的CPU,硬盘至少30G以上网络要求:多个节点之间网络互通,每个节点能访问外网集群规划k8s-node1:192.168.33.10k8s-node2:192.168.33.11k8s-node3:192.168.33.12设置主机名$hostnamec......
  • K8s - 什么是 Ingress 服务
    什么是Ingress?Ingress将HTTP和HTTPS路由从集群外部公开到集群内的服务。流量路由由入口资源上定义的规则控制。应用举例服务现状:一个订单服务,一个用户服务,彼此间相互独立。流量转发所遇到的问题:经过Ingress转发:思考:Ingress与Nginx的区别问题:如果不用ingres......