我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么排查Kubernetes故障

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么排查Kubernetes故障

这篇文章主要介绍“怎么排查Kubernetes故障”,在日常操作中,相信很多人在怎么排查Kubernetes故障问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么排查Kubernetes故障”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

关键点

排查Kubernetes部署故障的3个步骤:

  • 应确保Pods正常运行;

  • 确保于服务可以将流量调度到Pod;

  • 检查是否正确配置了入口。

直观图示

首先,检查Pod已经创建,并且正常。

怎么排查Kubernetes故障

其次,如果Pod正常,则应检查服务是否可以将流量分配给Pod。

怎么排查Kubernetes故障

最后,检查服务与入口之间的连接。

怎么排查Kubernetes故障

Pod故障排查

在大多数情况下,问题出在Pod本身。应该确保Pod正在运行并准备就绪(READY为1)。

检查方法:

kubectl get pods

怎么排查Kubernetes故障

如上述会话,最后一个Pod处于"Running"和"就绪"状态,前两个Pod都没有处于Running状,状态也未"就绪"。

关键点

可以用下面几个命令用来排查Pod故障:

  • kubectl logs

    :用来查看Pod容器日志。
  • kubectl describe pod

    :用于查看与Pod相关的事件列表。
  • kubectl get pod

    :用于获取Pod的YAML定义。
  • kubectl exec -ti

    bash:对进入Pod容器进行交互式终端。

常见Pod错误列表

Pod可能会出现各种启动和运行时错误。

启动错误:

ImagePullBackoff,ImageInspectError,ErrImagePull,ErrImageNeverPull,RegistryUnavailable,InvalidImageName

运行时错误:

CrashLoopBackOff,RunContainerError,KillContainerError,VerifyNonRootError,RunInitContainerError,CreatePodSandboxError,ConfigPodSandboxError,KillPodSandboxError,SetupNetworkError,TeardownNetworkError

关键错误代码及其修复方法

ImagePullBackOff

当Kubernetes无法检索Pod容器之一的图像时,将出现此错误。

主要三个原因:

  • 镜像名称无效。例如,输错名字,或者镜像不存在。

  • 为镜像指定了一个不存在的标签。

  • 尝试检索的镜像属于一个私有注册表,但是Kubernetes没有设置权限访问。

解决方法:

前两种情况可以通过修改镜像名和标签来解决。

第三个问题,需要在注册表中添加凭据,并在Pod中引用。

官方文档中有一个有关如何实现此目标的示例。

CrashLoopBackOff

如果容器无法启动,则Kubernetes status会显示CrashLoopBackOff错误。

通常,Pod在以下情况下容器无法启动:

  • 应用程序中出现错误,阻止其启动;

  • 未正确配置容器;

  • Liveness探针失败太多次;

解决方法:

应该查看容器中日志,了解详细失败的原因。

kubectl logs--previous

RunContainerError

当容器无法启动时出现错误,直至在容器内的应用程序启动之前。

该问题通常是由于配置错误,例如:

挂载不存在的卷,例如ConfigMap或Secrets

将只读卷安装为可读写

解决方法:

对该错误应该使用kubectl describe pod来收集和分析错误。

Pod处于待处理状态

当创建Pod时,该Pod保持在待处理状态。主要可能原因:

  • 群集没有足够的资源(例如CPU和内存)来运行Pod;

  • 当前的命名空间具有ResourceQuota对象,创建Pod将使命名空间超过配额;

  • Pod绑定到一个待处理的PersistentVolumeClaim;

解决方法:

检查kubectl describe命令的事件部分:

kubectl describe pod

对于因ResourceQuotas而导致的错误,可以使用以下方法检查群集的日志:

kubectl get events --sort-by=.metadata.creationTimestamp

Pod处于未就绪状态

如果Pod正在运行但未就绪,则表示"就绪"探针失败。

当就绪探针失败时,Pod未连接到服务,并且不会有流量转发到该实例。

解决方法

准备就绪探针失败是特定于应用程序的错误,因此应该检查kubectl描述中的"事件"部分以识别错误。

服务故障排查

如果的Pod正在运行且已就绪,但仍无法收到应用程序的响应,则应检查服务的配置是否正确。

关键点

服务的主要功能是根据流量的标签将流量路由到Pod。所以,先应该检查服务定位了多少个Pod,可以通过检查服务中的端点来查看:

kubectl describe service| grep Endpoints

端点是一对,并且在服务(至少)以Pod为目标时,应该至少有一个。

如果"端点"部分为空,则有两种原因:

没有运行带有正确标签的Pod,应检查是否在正确的命名空间。

服务的选择器标签中有错字;

如果可以看到端点列表,但仍然无法访问应用程序,则很大原因是服务中的targetPort配置有误。

可以通过使用kubectl port-forward连接到服务具体排查:

kubectl port-forward service/3000:80

入口故障排查

如果Pod运行正常,服务可以分配流量到Pod,则可能原因是入口配置有误:

根据入口可能使用不同控制器类型,需要按具体对应方法进行调试。

关键点

检查入口配置参数serviceName和servicePort配置是否正确。可以使用下面命令检查:

kubectl describe ingress

如果"后端"列为空,则配置中肯定有一个错误。

如果可以在"后端"列中看到端口,但是仍然无法访问该应用程序,则可能是以下问题:

没有如何将入口发布到公网;没有如何将群集发布到公网;

可以通过直接连接到Ingress Pod来将基础结构问题与入口隔离开。

首先,查看入口控制器Pod列表:

kubectl get pods --all-namespaces

怎么排查Kubernetes故障

其次,使用kubectl describe命令查看端口:

kubectl describe pod nginx-ingress-controller-6fc5bcc

怎么排查Kubernetes故障

最后,连接到Pod:

kubectl port-forward nginx-ingress-controller-6fc5bcc 3000:80 --namespace  kube-system

这样,访问计算机上的端口3000时,请求都会转发到Pod上的端口80。现在应用可以用吗?

如果可行,则问题出在基础架构中。应该检查如何将流量调度到群集。

如果还不行,则问题出在入口控制器中。应该调试入口控制器。常见的入口控制包括Nginx,HAProxy,Traefik等,可以查看具体控制器相关文档进行问题排查。此处我们以Nginx为例:

排查Nginx控制器

Ingress-nginx项目是Kubectl官方插件。可以使用kubectl ingress-nginx执行以下操作:

  • 查看日志,后端,证书等;

  • 连接到入口;

  • 检查当前配置。

对应的命令有:

  • kubectl ingress-nginx lint:用于检查nginx.conf

  • kubectl ingress-nginx backend:用于检查后端(类似于kubectl describe ingress

    )
  • kubectl ingress-nginx logs:查看控制器日志。

到此,关于“怎么排查Kubernetes故障”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么排查Kubernetes故障

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

kubernetes如何实现Service中的故障排查

这篇文章主要为大家展示了“kubernetes如何实现Service中的故障排查”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“kubernetes如何实现Service中的故障排查”这篇文章吧。
2023-06-04

Kubernetes中如何使用临时容器进行故障排查

小编给大家分享一下Kubernetes中如何使用临时容器进行故障排查,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前言容器及其周围的生态系统改变了工程师部署、维护
2023-06-29

Linux服务器故障怎么排查

本篇内容介绍了“Linux服务器故障怎么排查”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!问题:服务器A无法与服务器B通信可能大家在实际工作
2023-06-16

jvm内存溢出故障怎么排查

当发生JVM内存溢出故障时,可以按照以下步骤进行排查:分析错误日志:查看JVM错误日志文件,通常在应用程序的日志目录中。错误日志会提供有关内存溢出的详细信息,如错误堆栈跟踪和异常信息。确认内存溢出类型:JVM内存溢出通常分为堆内存溢出和非堆
jvm内存溢出故障怎么排查
2024-02-29

Linux下怎么快速排查硬件故障

这篇文章主要介绍了Linux下怎么快速排查硬件故障的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Linux下怎么快速排查硬件故障文章都会有所收获,下面我们一起来看看吧。Linux服务器在许多不同类型的基础架构中
2023-06-27

win7局域网怎么排查网络故障

本篇内容介绍了“win7局域网怎么排查网络故障”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.首先,可以用ping 命令试着ping 一下
2023-06-27

Delphi中怎么监控性能和排查故障

在Delphi中,可以使用性能监控工具和调试工具来监控性能和排查故障。以下是一些常用的工具和技巧:使用性能监控工具:Delphi自带了性能监控工具,可以通过工具菜单 -> 性能监控来启动。性能监控工具可以监控程序的内存使用情况、CPU占用率
Delphi中怎么监控性能和排查故障
2024-03-13

MySQL故障排查的方法是什么

MySQL故障排查方法主要包括以下几个步骤:1. 确认故障现象:通过观察数据库的表现和错误日志来判断故障的具体表现,比如错误代码、错误信息、数据库响应时间等。2. 检查硬件和网络:故障可能与硬件或网络有关,因此需要检查服务器的硬件状况,包括
2023-10-20

Linux系统怎么启动与登录故障排查

这篇文章主要为大家分析了Linux系统怎么启动与登录故障排查的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“Linux系统怎么启动与登录故障排查”的知识吧。系
2023-06-28

Linux MySQL的故障排查技巧

在Linux系统上,如果MySQL出现故障,可以按照以下技巧进行排查:检查MySQL日志文件:MySQL的日志文件通常位于/var/log/mysql/目录下,可以查看error.log文件,查看其中是否有任何错误信息。使用MySQL的命令
Linux MySQL的故障排查技巧
2024-08-16

Linux空间故障排查流程

Linux空间故障排查流程主要包括识别问题、分析问题、定位问题和恢复问题四个步骤。以下是详细的排查流程:识别问题查看磁盘空间使用情况:使用 df -h 命令列出系统中各个磁盘分区的使用情况,包括总空间、已用空间和剩余空间等信息。检查日志
Linux空间故障排查流程
2024-09-30

幻兽帕鲁服务器怎么排查远程故障

要排查幻兽帕鲁服务器的远程故障,可以按照以下步骤进行:检查网络连接:首先,确保服务器的网络连接正常。检查服务器的网络配置,包括IP地址、子网掩码、网关等是否正确设置。使用ping命令测试服务器是否可以与其他设备正常通信。检查服务器硬件:检
幻兽帕鲁服务器怎么排查远程故障
2024-04-09

Linux 运维故障排查思路是什么

本篇文章为大家展示了Linux 运维故障排查思路是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1. 背景有时候会遇到一些疑难杂症,并且监控插件并不能一眼立马发现问题的根源。这时候就需要登录服务
2023-06-15

Discuz登录异常?快速排查故障!

抱歉,我无法提供有关如何对 Discuz 登录异常进行快速排查的具体代码示例。但我可以帮助提供一些指导,您可以在文章中参考。Discuz 是一个开源的论坛程序,有时会出现登录异常的情况。当用户遇到这种问题时,我们可以采取一些步骤来排查故障
Discuz登录异常?快速排查故障!
2024-03-11

如何用GDB 排查 Python 程序故障

如何用GDB 排查 Python 程序故障,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。某Team在用Python开发一些代码,涉及子进程以及设法消除僵尸进程的需求。实践中他们
2023-06-17

编程热搜

目录