【Kubernetes实战】K8S集群Pod异常状态排查

2023-05-16

机缘

本文旨在帮助朋友们能快速定位、以最简单可行只法解决遇到的问题,希望您能举一反三,篇幅有限不能详尽,见谅 (*^__^*)

内容概括:

  1. 实战项目经验
    如何有效减少排查解决问题的时间?尤其是有些问题解决,需要停服务,会影响关联的业务。
  2. 遇到的问题实用解法
  3. 扩展延伸

一、 实战项目经验

提示:意识理念很重要,所以先要保证遵守原则不变,才能处变不惊,最高效解决问题。我总结了三原则

原则:

  1. 勿求快,多想一步,多问一句 即便是感觉很小的操作,也要考虑到可能发生意料外之事,我们之前出现过几次类似问题,都是同一种方法解决的,同样的情况出现,可是这次,背景不一样,用相同的方法,不但没解决问题,还制造了新问题,欲速不达。
  2. 要全面了解 正向的反馈,不利的反馈都要听,提前做些努力,想出应对之法,做的时候会特别顺畅,高效。
  3. 不光多看运维文档,而且要用心观察 遇到一个问题,我们费了好大力气,花费时间不少,想最快解决,却找不到参照方法。等静下心,我发现运维文档的预案里明明就有,当时为什么就视而不见,现在想想,这类问题发生的次数少,而且平时这个文档阅读的少,而且是粗略的看。

二、遇到的问题实用解法

提示:当前创作和你的工作、学习是什么样的关系
例如:

  1. 节点NotReady
    请添加图片描述
    图1 命令返回信息显示节点异常

简单问题:可以一条命令看到,程序dead状态,直接启动即可。

1)kubelet进程异常
执行查看命令:systemctl status kubelet.service
执行启动命令:systemctl start kubelet.service

2)docker进程异常
执行命令:systemctl status docker.service
执行启动命令:systemctl start docker.service

复杂问题:需要执行多条命令,并和其他部门同事沟通确认情况,综合分析协助定位问题并解决。

依然是NodeReady报错:
第一步:执行上面两个查看服务状态命令,返回信息显示无异常;
第二步:执行kubectl describe nodes node01(异常节点名) | grep Events
在事件列信息里确认是哪里出现问题,如果显示和docker有关,则证明还是“docker进程异常”,但是状态并没有死掉。
第三步:docker为什么会异常?因场景而异,有的时候是承载docker的节点物理内存不足,导致进程被杀死,或没被杀死,不能提供正常运行及处理任务所需内存。
第四步:想办法释放节点内存,重启docker服务。

  1. pod异常状态

1)镜像下载失败:ImagePullBackOff

简单问题:镜像仓库异常或pod的镜像仓库配置项不正确。
解决方法:执行kubectl describe nodes node01(异常节点名) | grep Events,进一步确认是不是这个问题,或者是不是还有其他问题。docker images本地可以查看到镜像,则需要将其执行:docker push ip:port/soft:v1.0将其推送到私有远程仓库,如果用pod控制器创建的可以删除pod,自动创建方式实现重建pod。如果还是不成功,可能也有网络问题,需要手动导入docker.tar包文件,执行docker load即可。

2)pod状态为Error、Unknown

小知识:pod稳定态为Running、Error、Unknown,其余都是中间态;稳定态是一般情况不会变化了,此状态可能原因是镜像下载的次数超了配置的次数,不再尝试重试,返回的状态。

解决方法:一般是配置问题,如:请求的资源超过了管理员设置的限制。执行下面三条命令:
kubectl get pod -o yaml 与正常的pod对比确认 Pod 的配置是否正确
kubectl describe pod 查看 Pod 的事件
kubectl logs [-c ] 查看容器日志
此外,Unknown也可能是网络问题导致。多个应用部署在不同节点需要交互。


三、扩展延伸

提示:对基础知识了解的越透彻,k8s运行逻辑越清楚,越能快速定位问题,解决问题。
例如:

  1. k8s网络小知识
    在这里插入图片描述
    图2 k8s网络拓扑

    从微观来分:

1)容器间通信 例如:docker与docker
2)pod间通信
3)服务到pod通信 例如:service到pod

从宏观来分:

1)pod间通信 pod1和pod2属于同主机;pod1和pod3属于跨主机
2)Node与pod间通信 Node1和pod1/pod2属于同主机;Node1和pod3属于跨主机

跨主机通信,需要借助第三方网络插件,如:Flannel等


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Kubernetes实战】K8S集群Pod异常状态排查 的相关文章

  • 安卓开发06:布局-线性布局 LinearLayout

    LinearLayout把视图组织成一行或一列 子视图能被安排成垂直的或水平的 线性布局是非常常用的一种布局方式 请看一个布局例子 xff1a html view plain copy print lt LinearLayout xmlns
  • 可以带到2015年的几点思考

    1 自己的事情永远得自己出头 我从小就是个很独立的人 我不知道这种独立是什么时候培养起来的 xff0c 但清楚的记得一件事情 上小学那会儿 xff0c 有一年母亲生病了 xff0c 在医院 xff0c 家里就我一个人 xff0c 有时候 x
  • 纪事2011—中国,建大,家,我

    前言 2011 年就要真的成为我记忆了 xff0c 我一直在想该怎样总结我的2011 xff0c 我的2011留下的是什么 xff0c 收获的又是什么 xff0c 这365天的句号我该怎么画上 xff0c 是圆是扁 xff0c 还是有缺口
  • 用java做的一个小游戏—黑白反斗棋(适合菜鸟)

    用Java做的一个小游戏 xff0c 黑白反斗棋 xff0c 我玩过了5 5和10 10的 是学习之后做的 xff0c 不是自己原始开发的 import java awt Color import java awt FlowLayout i
  • 我的精神分裂——普通青年用二-B的方式走文艺的范儿

    一直以来都是以一种低沉的文笔在写些我的垃圾生活 xff0c 垃圾感想 xff0c 每次都会放那些特定的音乐 xff0c 那是一种心境 xff0c 那些音乐带着我的手在敲动 今天我想换种音乐 xff0c 猜猜我在放什么音乐 xff0c 很Hi
  • 读书随笔(1)——《计较是贫穷的开始》

    xff08 读书之后写感 xff0c 本该是读书之后自然的一个延续 xff0c 但我却很少这样了 xff0c 这不能说是一个极其坏的习惯 xff0c 虽不知道我究竟能不能改了 xff0c 但还是希望能尽可能的写写 xff0c 对自己想法有个
  • 2012年终随笔

    时至年终 xff0c 按我此前的惯例 xff0c 该写篇年终总结性的文章 xff0c 在之前末日说沸沸扬扬的时候 xff0c 我在想是否该早点写 xff0c 写个末日遗言什么的 xff0c 但还是没有写 xff0c 觉得如果真的末日来临 x
  • Tomcat多端口映射配置

    1 多端口映射配置 在server xml中 xff0c 找到 lt Connector gt 标签 xff0c 默认情况下会有一个 8080 端口的 lt Connector gt 标签 xff1a lt Connector port 6
  • 10个艰难的Java面试题与答案

    10个最难回答的Java面试题 这是我收集的10个较难回答的 Java 面试题 这些问题主要来自 Java 核心部分 不涉及 Java EE 相关问题 这些问题都是容易在各种 Java 面试中被问到的 1 为什么 wait xff0c no
  • Spring Security 5.x兼容多种密码加密方式

    1 spring security PasswordEncoder spring security 5不需要配置密码的加密方式 xff0c 而是用户密码加前缀的方式表明加密方式 xff0c 如 xff1a MD5 88e2d8cd1e92f
  • linux把进程或线程绑定到特定cpu核上

    绑定进程到cpu核上运行 查看cpu有几个核 使用cat proc cpuinfo 查看cpu信息 xff0c 如下两个信息 xff1a processor xff0c 指明第几个cpu处理器cpu cores xff0c 指明每个处理器的
  • Suse重启samba指令

    重启前先查看后台进程 linux jzp3 home w210412 ps aux grep smbd root 4400 0 0 1 2 308428 22372 Ss 18 23 0 00 usr sbin smbd D F root
  • uIP和LwIP背后的那个牛逼男人

    在公众号给大家介绍过Uip和LwIP xff0c 如果使用过这两种TCP IP协议栈 xff0c 那么你一定会熟悉一个人Adam Dunkels亚当 邓克尔 瑞典计算机科学院的教授 xff0c 这两种开源的协议栈都出自他手 xff0c 现在
  • 一张表看懂uIP和lwIP的区别

    我们给大家介绍过目前比较流行的开源TCP IP开源协议栈uIP和lwIP 这两种都是由瑞典计算机科学研究院开发的 xff0c 广泛应用于嵌入式系统中 因为全功能的TCP IP协议是很庞大的 xff0c 在资源紧张的嵌入式上是很难实现的 xf
  • 小猿助你freeRTOS驱动开发

    主要介绍在移植好的基于NXP之kinetis K64 43 freeRTOS平台上添加Modbus驱动 对freeRTOS不懂或者移植不懂的可以看看之前公众号的文章 准备工作 xff1a 1 xff0c 基于之前移植好的K64 43 fre
  • 告诉过你PID很重要,你不听

    曾经在公众号 xff0c 多次提到在控制系统中经常用到的PID控制 xff0c 也在培训中讲过PID的应用和在软件中的实现以及调试 xff0c 但是现实中还是有很多工程师对PID很陌生 xff0c 如果你是搞电力电子 xff0c 电力变换
  • Windows 使用 VNC 远程连接 Ubuntu 桌面版

    前言 工作需要使用 Windows 远程桌面版的 Ubuntu xff0c 原来使用的 TeamViewer 现在经常被检测为商业用途 xff0c 就很麻烦 因此 xff0c 现在转战使用 VNC 进行远程 使用步骤参考地址 xff1a 法
  • IP第十天笔记 - - - BGP

    BGP 边界网关协议 AS 自治系统 由单一机构或组织管理的一系列IP网络及其设备的集合 1 网络范围太大 xff0c 协议跑不过来 xff0c 需要进行划分 xff1b 2 自治管理 为了方便区分和标定不同的AS xff0c 我们给每一个
  • Makefile(1)

    1 前言 有幸拜读了http blog csdn net haoel article details 2888 http www cnblogs com Anker p 3242207 html http www groad net bbs
  • 解决vnc客户端不能拷贝粘贴

    在vnc窗口里输入如下命令 vncconfig nowin amp 在一个node的vnc里发现vncconfig nowin amp 不工作 xff0c 但是vncconfig amp 工作 https blog csdn net qq

随机推荐