K8S Pod Terminating/Unknown故障排查

一、pod异常出现现象
优雅终止周期(Graceful termination period): 当pod被删除时,会进入"Terminating"状态,等待容器优雅关闭。如果容器关闭所需时间超过默认期限(默认30秒),则pod将保持在"Terminating"状态。
Finalizers: Finalizer是一种允许在删除资源之前清理资源的机制。如果pod有Finalizer,并且相关的清理操作被卡住或没有响应,则pod将保持在"Terminating"状态。
无响应容器(Unresponsive containers): 如果pod中的容器在终止过程中没有响应SIGTERM信号,则可能导致pod卡在"Terminating"状态。
节点问题(Node issues): 如果节点无响应、断开连接或遇到其他问题,pod可能会进入"Unknown"状态。在这种情况下,Kubernetes控制平面无法确定pod的实际状态。
网络问题(Network issues): 节点与Kubernetes控制平面之间的连接问题可能导致pod进入"Unknown"状态。例如,如果控制平面无法与节点通信,则无法接收来自pod的状态更新。
Kubelet问题: 如果节点上运行的Kubelet进程出现问题或崩溃,可能会导致无法将pod状态上报给控制平面,从而造成pod进入"Unknown"状态。

二、故障排查
优雅终止周期(Graceful termination period)
K8S中的优雅终止周期是在删除pod时,容器的优雅关闭时间。在此期间,容器接收SIGTERM信号,执行必要的清理工作,例如关闭连接,完成正在进行的任务,并在资源终止之前释放资源,默认为30秒。

检查pod状态和事件: 通过kubectl检查pod的状态和事件以获取相关信息:

kubectl describe pod <pod-name> -n <namespace>#检查容器日志
kubectl logs <pod-name> -c <container-name> -n <namespace> --previous

调整优雅终止周期: 如果容器始终需要更多的时间来清理资源,可以通过在pod的YAML文件中设置terminationGracePeriodSeconds字段来调整pod的终止周期。

apiVersion: v1
kind: Pod
metadata:name: my-pod
spec:terminationGracePeriodSeconds: 60containers:- name: my-containerimage: my-image

Finalizers
Finalizer允许在删除资源之前清理资源,如果pod上存在Finalizer,并且相关的清理操作被卡住或没有响应,则pod将保持在"Terminating"状态。例如:

apiVersion: v1
kind: Pod
metadata:name: my-finalizer-podfinalizers:- example.com/cleanup
spec:containers:- name: busyboximage: busyboxcommand: ["sh", "-c", "sleep 3600"]

检查是否有finalizer,可以运行以下命令:

kubectl get pod <pod-name> -n <namespace> -o json

如果确定不需要finalizer,或者确定可以将其安全删除,可以使用kubectl patch命令。但是,这样做要小心,因为可能会导致意想不到的副作用:

kubectl patch pod <pod-name> -n <namespace> -p '{"metadata":{"finalizers":["<finalizer-1>", "<finalizer-2>", ...]}}'

无响应容器(Unresponsive containers)
当容器消耗过多系统资源时,可能会进入无响应状态。
用kubectl describe命令查看Pod状态和事件。

kubectl describe pod <pod-name> -n <namespace>
#检查Pod/container日志:
kubectl logs <pod-name> -c <container-name> -n <namespace>
#强制删除pod: 可以强制删除被卡住的pod
kubectl delete pod <pod-name> -n <namespace> --force --grace-period=0

节点/网络/Kubelet问题
执行以下步骤处理节点问题:
检查节点状态/事件: 检查pod所在节点的状态:

kubectl describe node <node-name>
kubectl get events --field-selector involvedObject.kind=Node,involvedObject.name=<node-name>
#检查系统日志
journalctl -u kubelet
journalctl -u docker
journalctl -u containerd
cat /var/log/messages

排空节点: 如果已经确定了节点问题,并且需要执行维护,可以排空节点以安全驱逐所有正在运行的pod,并将节点标记为不可调度:

kubectl drain <node-name>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/373256.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

矩阵指数 matlab,矩阵指数 - MATLAB Simulink Example - MathWorks 中国

方法 1&#xff1a;加权平方expmdemo1 是以下著作中算法 11.3.1 的实现&#xff1a;Golub, Gene H. and Charles Van Loan.Matrix Computations, 3rd edition.Baltimore, MD:Johns Hopkins University Press, 1996.% Scale A by power of 2 so that its norm is < 1/2 .[f,e…

向导设计模式

我们都喜欢巫师……。 &#xff08;我的意思是软件向导&#xff09;。 我们总是很高兴跳上那些“下一步”按钮&#xff0c;就像我们在我们的时髦的小鸡上跳舞一样。 因此&#xff0c;今天我们将您心爱的向导带入您的编码经验中。 让我们跳入一个例子。 假设您要设计一个Conserv…

IO(三)字节流练习

public class ByteStreamDemo {/*int available(); 可以取得输入文件的大小&#xff08;字节个数&#xff09;,没有返回0void close(); 关闭输入流abstract int read(); 读取一个字节&#xff0c;并把读…

基于matlab的人脸五官边缘检测方法,人脸边缘检测方法研究与仿真

人脸表情是人类情感的主载体之一,它含有丰富的人体行为信息。通过脸部表情能够表达人微妙的情绪反应以及对应的心理状态[1],人脸表情识别技术随着人们对表情信息的日益重视而受到关注,现已成为人们研究的热点。基于几何特征提取是一个快速、直接、有效的人脸表情识别方法,运用基…

GWT –利弊

我喜欢JavaScript。 随着jQuery和Mootools的出现&#xff0c;我对JavaScript的热爱仅增加了很多倍。 只要有选择&#xff0c;我就可以将上述框架中的任何一个用于我开发的任何Web应用程序。 但是进入服务行业后&#xff0c;我不得不一次次屈服于客户的压力&#xff0c;并在他们…

秦九韶算法matlab实验报告,数值分析上机实验报告.doc

实验报告一题目&#xff1a; (绪论) 非线性方程求解及误差估计摘要&#xff1a;非线性方程的解析解通常很难给出&#xff0c;因此线性方程的数值解法就尤为重要。本实验采用两种常见的求解方法二分法、Newton法和改进的Newton法。可以节省计算机的计算时间&#xff0c;还能减小…

Flex 布局教程:语法篇

网页布局&#xff08;layout&#xff09;是CSS的一个重点应用。 布局的传统解决方案&#xff0c;基于盒状模型&#xff0c;依赖 display属性 position属性 float属性。它对于那些特殊布局非常不方便&#xff0c;比如&#xff0c;垂直居中就不容易实现。 2009年&#xff0c;W3…

练习错误

form:阻止表单提交的方法一&#xff1a;在form标签中给出以下代码&#xff1a; 1 onsubmit "return False" 方法二&#xff1a;设置事件阻止 1 e.preventDefault() js中判断&#xff1a;只要非数字都应该表示为字符串 1 if(Email.indexOf("") -1){ 2 …

JavaFX 2中的PopupMenu

创建弹出菜单 要在JavaFX中创建Popupmenu&#xff0c;可以使用ContextMenu类。 您向其中添加MenuItems&#xff0c;也可以使用SeparatorMenuItem创建可视分隔符。 在下面的示例中&#xff0c;我选择子类ContextMenu并将MenuItems添加到其构造函数中。 public class Animatio…

matlab中CH指标聚类评价指标,MATLAB聚类有效性评价指标(外部)

MATLAB聚类有效性评价指标(外部)作者&#xff1a;凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/更多内容&#xff0c;请看标签&#xff1a;MATLAB、聚类前提&#xff1a;数据的真实标签已知&#xff01;1. 归一化互信息(Normalized Mutual information)定义程序functio…

学习进度表

周数 专业学习目标 专业学习时/每分钟 新增代码量 知识技能总结 第六周 ps的图像处理 80 30 看书加以实践 第七周 数据结构的链式结构 100 50 多做习题加以巩固知识 第八周 网页设计 80 30 多多练习&#xff0c;学会用代码设计 第九周 图片美工 70 30 慢慢学会运用软…

Axis通过wsdd部署Web Service

axis网上的教程很多&#xff0c;不过搜来搜去&#xff0c;总是只有那么几篇。仔细看了一下那几篇文章&#xff0c;都感觉到不是自己想要的&#xff0c;所以自己整理了一篇分享一下。 本文介绍axis应用的一个小例子&#xff0c;没有麻烦的命令行操作&#xff0c;只需照下面的步骤…

弹簧特性

1.概述 本教程将展示如何通过XML或Java配置在Spring中设置和使用属性 。 在Spring 3.1之前 &#xff0c;将新的属性文件添加到Spring并使用属性值并不像它那样灵活和健壮。 从Spring 3.1开始 &#xff0c;新的Environment和PropertySource抽象大大简化了此过程。 2.通过XML名…

php-cgi cpu很高,php-cgi占用cpu资源过高的解决方法

转的网上的&#xff0c;不过对PHP-CGI菜鸟的人&#xff0c;还是有点帮助的。1. 一些php的扩展与php版本兼容存在问题&#xff0c;实践证明 eAccelerater与某些php版本兼容存在问题&#xff0c;具体表现时启动php-cgi进程后&#xff0c;运行10多分钟&#xff0c;奇慢无比&#x…

《做中学》读后有感

《做中学》读后有感 最近读了娄老师的“做中学”系列文章&#xff0c;有很大感触&#xff0c;今天想着重谈一谈我在学习方面收到的启发。 如何成功get一项技能 如果问到“如何开始get一项技能”&#xff0c;我想我们应该是最有发言权的一代。从小就被爸爸妈妈引导着参加各种课外…

多表之间关联查询

内连接 jion on 自连接 本表进行内连接的查询形式 外链接&#xff1a; 左链接 写法&#xff1a;select 字段 from 表1 t left join 表2 s on t.字段1 s.字段1 where 条件 或者 作用&#xff1a;保证左边的表的数据全部显示&#xff0c;包括空的 右链接 写法 &#xff1a;sele…

php文件夹0777,PHP代码mkdir(‘images’,’0777′)创建一个具有411权限的文件夹!为什么?...

我发誓这是昨天的工作.然而,现在下面的代码破坏文件夹没有问题,但创建一个具有411权限的新文件夹应该是777.我的代码昨天这样做.这样做的目的是压缩文件夹,传递文件夹,删除图像,然后为图像创建新目录.有人能告诉我我做错了什么或我应该做什么&#xff1f;谢谢function delete_d…

调查HashDoS问题

近一个月前&#xff0c;我就如何在不与供应商互动的情况下临时解决 28C3上出现的HashDoS问题或其他代码缺陷发表了一些想法。 现在是时候更深入地研究复杂性攻击并查看来源了。 我完全假设java.util.HashMap和java.util.Hashtable是受此攻击影响的最常用的Java数据结构&#xf…

Linq 和 EF Contains示例

List<int> unitIDListnew List<int>(); //此处添加int元素 var query DB.ElecConsumers.Where(c > unitIDList.Contains(c.ParentUnitID)); //EF方式 var query1 (from c in DB.ElecConsumers where unitIDList.Contains(c.ParentUnitID ) select c); //Linq方…

date 显示或设置系统时间和日期

显示或设置系统时间和日期 date [options] [format] date [options] [new date] date用来显示系统的时间和日期&#xff0c;超级用户可以使用date来更改系统时钟 选项 %H 小时&#xff0c;24小时制&#xff08;00~23&#xff09; %I 小时&#xff0c;12小时制&#xff…