Kubernetes Pod的5个故障处理方法

K8s存储资源清理全攻略:PV/PVC删除的5个常见错误及修复方法 本文详细解析了Kubernetes存储资源清理过程中PV/PVC删除的5个常见错误及修复方法,包括Released状态PV清理、PVC删除后仍被Pod占用、Finalizers阻塞、StorageClass配置错误和跨Namespace绑定问题。提供实用的命令行操作和解决方案,帮助运维人员高效管理Kubernetes存储资源。 阅读详情

在很多情况下,你可能会发现Kubernetes中的应用程序没有正确地部署,或者没有正常地工作。今天这篇文章就提供了如何去快速解决这类故障以及一些技巧。

在阅读了这篇文章之后,你还将深入了解Kubernetes的内部机制,另外,我还将与大家分享一些关于自己操作Kubernetes的一些非常有用的技巧。

那么,我们开始吧!

首先,Pod失败的原因一般有两个:

  1. Kubernetes资源配置中的错误,例如在部署(Deployment)和服务(Service)里。

  2. 代码中的问题。

在第一种情况下,容器一般不会启动。在后一个实例中,应用程序代码在容器启动后失败。我们将系统地处理每种情况。

在本练习中,我们会使用kubectl来实现与Kubernetes的交互。

技巧1:检查Pod

确认Pod处于运行(Running)状态或准备就绪(Ready)的状态。

kubectl get pods

 

1.png

如图,一个Pod在等待(Pending)状态9个小时,肯定不是个好事!容器没有启动,我们将会使用技巧2中的describe命令对此进行深入地研究。但,在这里我们强调一下在容器启动失败时发生的其他错误代码。如下:

  • Imagepullbackoff:

   Docker镜像仓库不可访问,部署中指定的镜像名称或版本不正确。

   请确保镜像名称是正确的,并且镜像仓库是可访问的以及经过身份验证的(docker login…)。

  • RunContainerError:

    也是一种可能。

    原因:

    缺少ConfigMap或Secrets。

  • ContainerCreating:

容器创建时一些组件无法立刻启用,比如持久卷?

在研究其他错误之前,让我们先尝试使用错误的镜像名称启动Pod。

# start Pod from image "ngin".  # 'web' can be any name, is the name of resulting K8S deployment  kubectl run web --image=ngin --replicas=1

2.png

最后一行展示了镜像错误

果然,完全不存在的镜像“ngin”导致了ImagePullBackOff错误。使用正确的镜像名称“nginx”就能解决这个问题。

kubectl run temp --image=nginx --replicas=1  kubectl get pods

3.png

如图,Pod已经起来了。

接下来,这里有一些在容器启动后可能发生的错误。

  • Crashloopbackoff:

   Pod存活检查失败或Docker镜像出错。

   例如,Docker CMD即刻退出。

   可以用下面的技巧3来检查日志。

   注意:

   此截图中的“重启(RESTARTS)”列显示了重启的次数。

   在这种情况下,你应该会看到一些重启,因为当错误发生时,Kubernetes会反复尝试启动Pod。

  • 如果Pod处于运行(Running)状态,而你的应用程序仍然不能正常工作,请继续技巧3和4。

技巧2:检查和Pod相关的事件

如果你在Pod状态上看到一个错误代码,你可以使用describe命令获得更多信息。这在容器本身没有启动的情况下是很有帮助的。

kubectl describe frontend-65c58c957d-f4cqn

4.png

截图的最后一行表明,由于缺少CPU资源,Pod还没有启动,请参见底部的消息。你可以增加Pod的CPU再重新部署应用程序。

技巧3:检查日志(Log)

现在容器已经启动,可以通过检查日志来查看应用程序是否正常运行。例如,Pod frontend-65c58c957d-bzbg2:

kubectl logs --tail=10 frontend-65c58c957d-bzbg2

5.png

实时滚动查看一个正在运行的日志:

kubectl logs -f frontend-65c58c957d-bzbg2

如果kubectl logs后没有任何输出,试试使用get pod,然后会发现这很有可能是一个新启动的Pod,因此可以尝试检查一些上一次挂掉的Pod的日志。

kubectl logs frontend-65c58c957d-bzbg2 --previous

技巧4:直接在Pod中运行“sh”、“bash”或“ash”

可以进入到Pod内部并运行命令来对应用程序进行故障排除(输入exit即可退出)。

kubectl exec -it frontend-65c58c957d-bzbg2 /bin/sh

技巧5:显示集群级别的事件

Kubernetes在它管理的资源状态发生变化(正常、警告等)时触发对应的事件。这能帮助我们了解背后到底发生了什么。get events命令能提供事件的聚合透视图。

# all events sorted by time.  kubectl get events --sort-by=.metadata.creationTimestamp# warnings only  kubectl get events --field-selector type=Warning# events related to Nodes  kubectl get events --field-selector involvedObject.kind=Node

额外的技巧

这是我最喜欢的技巧!熟练掌握各种命令会使你更有信心在游走在Kubernetes集群中。

首先,输入kubectl可以列出所有kubectl的命令。

接下来,尝试用下面的命令来执行grep调试命令。

kubectl | grep -i -A 10 debugging

6.png

列出可以在Kubernetes上运行的一些基本命令。

kubectl | grep -i -A 5 Basic

6.png

接下来,列出可操作的Kubernetes资源。

kubectl api-resources

8.png

现在可以自己搞一些命令了!你可以选择一个命令(get、describe、explain)并选取一个资源然后运行它!例如,get nodes。所以,再试试别的吧!

虽然有些组合可能并没什么意义,但除了这一点,整个command系统是相当直观和一致的;你可以轻松地编写命令并进行各种探索。

只是千万要小心,不要删除或修改你不希望碰到的对象。

列出Kubernetes命名空间(namespace):

kubectl get ns

 

9.png

这样,你可以使用特定的命令来更深入地研究相应的选项或示例。

kubectl get --help  # see K8S system pods in 'kube-system' namespace!  kubectl -n kube-system get pods

 

10.png

正如你所看到的,Kubernetes的命令系统非常容易理解,简单地测试这些命令能让我们学到很多东西。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 
【kubernetes】关于k8s集群的污点、容忍、驱逐以及k8s集群故障排查思路 节点亲和性,是Pod的一种属性(偏好或硬性要求),它使Pod被吸引到一类特定的节点。Taint 则相反,它使节点能够排斥一类特定的 Pod。Taint 和 Toleration 相互配合,可以用来避免 Pod 被分配到不合适的节点上。每个节点上都可以应用一个或多个 taint ,这表示对于那些不能容忍这些 taint 的 Pod,是不会被该节点接受的。如果将 toleration 应用于 Pod 上,则表示这些 Pod 可以(但不一定)被调度到具有匹配 taint 的节点上。 阅读详情

相关推荐

K8S及pod相关介绍

K8S基本概念;Pod 概念;Kubernetes ⼯作流程;K8S 创建 Pod 流程;

m0_73907608的博客 2016

【Kubernetes】pod状态与故障排查

kubectl debug -n -it --image= --target= #在Pod中创建临时工具容器进入目标容器进行调试,针对没有调试工具的容器使用。kubectl exec -n -it -c -- sh|bash|命令 #进入Pod容器中查看容器内部的相关状态信息,比如应用进程、端口、文件、流量等状态信息。

qq_54188720的博客 1890

k8s——Pod详解

Pod是kubernetes中,Pod也是最小化运行容器化应用的资源对象。一个Pod代表着集群中运行的一个进程。kubernetes中其他大多数组件都是围绕着Pod来进行支撑和扩展Pod功能的,例如,用于管理Pod运行的StatefulSet和Deployment等控制器对象,用于暴露Pod应用的Service和Ingress对象,为Pod提供存储的PersistentVolume存储资源对象等。。现代容器技术建议一个容器只运行一个进程,该进程在容器中。

sea_bunch的博客 3936

k3s pod无法访问外部网络

操作系统:centos7内核:3.10.0-957.el7.x86_64k3s版本: v1.25.7+k3s1。

bbccaaac的博客 1664

Kubernetes 故障排查实战:从 Pod 到集群的 20 类常见故障全解析(2025 最新版)

在 Kubernetes(K8s)集群运维中,故障排查堪称工程师的核心能力。不管是 Pod 启动失败、网络通信异常,还是存储挂载故障,能否快速定位根本原因并解决问题,直接关系到业务的稳定性。本文基于 2023 - 2025 年生产环境的实战经验,汇总了 20 类高频故障场景,涵盖 Pod、网络、存储、资源、节点、控制平面等核心模块,为大家提供从现象到解决方案的全流程解析,同时附上实战命令与配置示例。Kubernetes 故障排查的核心是“分层定位、日志为王”

2403_88333522的博客 2616

k8s关于pod

Pod是可以在Kubernetes中创建和管理的、最小的可部署的计算单元;Pod中会启动一个或一组紧密相关的业务容器, 各个业务容器相当于Pod中的各个进程, 此时就可以将Pod作为虚拟机看待;在创建Pod时会启动一个init容器, 用来初始化存储和网络, 其余的业务容器都将在init容器启动后启动, 业务容器共享init容器的存储和网络;Pod只是一个逻辑单元, 并不是真实存在的“主机”, 这种类比主机的概念可以更好的符合现有互联网中几乎所有的虚拟化设计;

yz2322944912的博客 1689

k3s停止命令

暂停k3s命令 节点csnode-1 master节点 systemctl stop k3s systemctl disable k3s k3s-killall.sh docker ps -a|grep -v CONTAINER|awk '{print $1}'|xargs docker stop docker ps -a|grep -v CONTAINER|awk '{print $1}'|xargs docker rm systemctl stop docker systemctl disable

唐僧爱程序 4156

运维项目—K8S命令

工作内容,不对外开放

weixin_45014721的博客 1443

K8S的10个常见失败问题的原因

1. Wrong Container Image / Invalid Registry Permissions 当pod状态为ErrImagePull或ImagePullBackOff时,通常是由于以下3个原因(在排查网络故障的前提下): 镜像tag写错 镜像不存在,或拉取的镜像仓库地址写错 没有拉取镜像的权限(漏配了imagePullSecrets) 2. Application Crash...

B.I.T 1万+

k8s(kubernetes)常见故障处理总结——详细文档

k8s(kubernetes)常见故障处理总结——详细文档

qq_34953582的博客 9807

k8s(kubernetes)常见故障处理总结-详细笔记文档总结

k8s(kubernetes)常见故障处理总结——详细笔记文档总结

Kubernetes基础:重启pod的方法

Kubernetes没有提供诸如docker restart类似的命令用于重启容器那样重启pod的命令,一般会结合restartPolicy进行自动重启,这篇文章整理一下偶尔需要手动进行重启的时候所需要使用的方法。 事前准备 环境准备 本文使用Kubernetes 1.17,可参看下文进行快速环境搭建: 单机版本或者集群版本环境搭建 pod准备 使用如下pod的yaml文件 [root@host131 config]# cat busybox-pod-test.yaml apiVersion: v1.

weixin_39833509的博客 9600

【生产实践】SSH服务弱加密算法修复指南(附完整操作流程)

SSH服务弱加密算法漏洞修复方案 检测发现SSH服务存在支持弱加密算法漏洞,主要风险包括: 使用arcfour、aes128-cbc等易被破解的算法 面临密钥恢复、重放攻击等安全威胁 提供两种修复方案: 推荐方案:升级OpenSSH至最新版本 替代方案:修改SSH配置禁用弱算法(需注意可能影响旧客户端连接) 修复步骤: 编辑/etc/ssh/sshd_config 注释或删除弱算法配置 添加强加密算法(如aes128-ctr等) 重启SSH服务 注意事项: 建议先在测试环境验证 可能需配合客户端升级 操作前

SunMy的博客 3107

别再只会kubectl logs了!这5个高阶日志排查场景,运维老手都在用

本文深入探讨了Kubernetes日志排查的5个高阶场景,包括CrashLoopBackOff根因分析、微服务日志聚合、时间戳追踪、日志洪峰应对及多容器Pod日志管理。通过实用命令和策略,帮助运维人员突破kubectl logs的局限,提升Kubernetes集群故障排查效率。

weixin_30915275的博客 552

zabbix监控深信服下一代防火墙配置

深信服下一代防火墙v8.0管理界面,zabbix,SNMP

weixin_43996471的博客 6873

自动驾驶仿真 (三)—— 基于PreScan与Simulink的AEB系统仿真

自动驾驶仿真三—— 基于PreScan&Simulink的AEB系统仿真1. AEB自动紧急制动系统1. 1 TTC碰撞时间模型1. 2 C-NCAP法规部分术语与定义1. 3 主动安全ADAS系统试验项目2. AEB仿真分析建模2.1 搭建场景2.2 传感器建模2.3 添加AEB控制系统3. 典型工况仿真3.1 CCRs仿真测试3.1 CCRm仿真测试4. 参考学习的书目教材 博主前面的博文已经介绍了Prescan&Simulink基本的场景建模及仿真分析流程,《自动驾驶仿真 (二)——

zhudj08的博客 1万+

【Kubernetes 系列】一文带你吃透 K8S 应用pod结点

本节我将和大家一起学习Kubernetes 应用中的pod结点在上一节中,我们一起学会了如何使用 kubectl 创建一个应用。这里我们一起来重温一遍。在 dashboard 中,我们找到pods 结点,并打开Pod 是 Kubernetes 抽象出来的,表示一组一个或多个应用程序容器(如 Docker),以及这些容器的一些共享资源。这些资源包括:Pod 是为应用程序的“logic host”建模,并且可以包含相对紧耦合的不同应用容器。例如,Pod 可能既包含带有 Node.js 应用的容器,也包含另一个不

半身风雪 4693

别让PEX和后仿真拖后腿:Calibre与Virtuoso ADE联调的那些‘坑’与最佳实践

本文深入探讨了Calibre与Virtuoso ADE在PEX寄生参数提取和后仿真联调中的常见问题与解决方案。针对DRC/LVS验证通过后出现的网表导入错误和仿真波形异常,提供了七大典型场景的实战经验,包括PEX提取模式选择、CalibreView生成细节、环境变量配置等关键环节的最佳实践,助力工程师高效完成芯片设计验证。

weixin_33695450的博客 393

【Pod故障处理】Pod 一直处于 ContainerCreating 或 Waiting 状态

本文档介绍可能导致 Pod 一直处于 ContainerCreating 或 Waiting 状态的几种情形,以及如何通过排查步骤定位异常原因。请按照以下步骤依次进行排查,定位问题后恢复正确配置即可。

2401_89314348的博客 4104

ComfyUI工作流换脸节点报错ReActorFaceSwap

找到自己ComfyUI安装目录的custom_nodes下是否有这个comfyui-reactor-node-main。大家在借鉴别人工作流进行AI换脸的时候,如果遇到ReActorFaceSwap报错提示,莫慌,看我的,两步解决问题。这里千万注意不要嵌套文件夹,保证点击去这个文件就可以看到内置的配置文件!找到自己ComfyUI安装目录的facerestore_models。如果有这个文件,直接跳过,去下一步。如果没有,可以去Git官网下载。

qq_70810809的博客 9016

阿里云天池大数据长期赛:金融风控-贷款违约预测(含代码)

本次比赛让自己在大数据的处理流程上有了更明确的认知,从数据清洗、特征工程、数据建模,每一个过程都能学到很多经验和知识,值得去历练。

weixin_46685991的博客 1万+

kubernetes错误 pod故障总结

万能解决办法: 重启大法好(生产环境三思而后行) 重启容器 重启kubelet 重启systemd 重启机器 一般来说,无论 Pod 处于什么异常状态,都可以执行以下命令来查看 Pod 的状态 kubectl get pod <pod-name> -o yaml 查看 Pod 的配置是否正确 kubectl describe pod <pod-name> 查看 Pod 的事件 kubectl logs <pod-name> [-c <container-

会哭的雨@的博客 1万+

1.3-----Simplify 3D切片软件:从新手困惑到高效打印的进阶设置指南

本文详细介绍了Simplify 3D切片软件在大型模型打印中的高效设置技巧,包括切片效率、支撑结构智能生成和精细参数调节等核心优势。通过实战案例和进阶参数设置指南,帮助用户从新手快速进阶到高效打印,显著提升3D打印质量和效率。

weixin_42552716的博客 424

K8s Pod 故障排查实战:常见问题与解决方法

K8s Pod 故障排查是个复杂过程,需综合运用多种工具和方法,结合详细日志与事件分析定位问题。从资源管理到镜像拉取,从应用健康到网络通信,每个环节都可能出现故障。掌握常见问题排查思路与解决方法,能提升运维效率,快速恢复服务,保障 K8s 集群稳定高效运行,为业务持续发展提供坚实支撑。

wdfdgygg77的博客 1648

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

【Kubernetes】k8s集群的pod基础

pod基础

weixin_68840588的博客 1049

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

上一篇: 界面上问题排查思路
下一篇: hive准备测试数据
lcm_linux
博客等级 码龄7年 7258粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值