广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >怎么排查Kubernetes故障
  • 839
分享到

怎么排查Kubernetes故障

2024-04-02 19:04:59 839人浏览 泡泡鱼
摘要

这篇文章主要介绍“怎么排查kubernetes故障”,在日常操作中,相信很多人在怎么排查Kubernetes故障问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么排查Kube

这篇文章主要介绍“怎么排查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故障”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: 怎么排查Kubernetes故障

本文链接: https://www.lsjlt.com/news/85269.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • 怎么排查Kubernetes故障
    这篇文章主要介绍“怎么排查Kubernetes故障”,在日常操作中,相信很多人在怎么排查Kubernetes故障问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么排查Kube...
    99+
    2022-10-19
  • kubernetes如何实现Service中的故障排查
    这篇文章主要为大家展示了“kubernetes如何实现Service中的故障排查”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“kubernetes如何实现Service中的故障排查”这篇文章吧。...
    99+
    2023-06-04
  • Kubernetes中如何使用临时容器进行故障排查
    小编给大家分享一下Kubernetes中如何使用临时容器进行故障排查,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前言容器及其周围的生态系统改变了工程师部署、维护...
    99+
    2023-06-29
  • Linux服务器故障怎么排查
    本篇内容介绍了“Linux服务器故障怎么排查”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!问题:服务器A无法与服务器B通信可能大家在实际工作...
    99+
    2023-06-16
  • Kubernetes中使用临时容器进行故障排查的方法
    目录前言什么是临时容器? 临时容器的配置启动临时容器使用临时容器与临时容器共享进程命名空间结论前言 容器及其周围的生态系统改变了工程师部署、维护和排查工作负载故障的方式。但...
    99+
    2022-11-13
  • Linux下怎么快速排查硬件故障
    这篇文章主要介绍了Linux下怎么快速排查硬件故障的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Linux下怎么快速排查硬件故障文章都会有所收获,下面我们一起来看看吧。Linux服务器在许多不同类型的基础架构中...
    99+
    2023-06-27
  • win7局域网怎么排查网络故障
    本篇内容介绍了“win7局域网怎么排查网络故障”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先,可以用ping 命令试着ping 一下报错...
    99+
    2023-06-27
  • 云主机租用怎么排查远程故障
    云主机租用排查远程故障的方法:1、使用ping命令ping云主机IP,看通不通;2、看云主机的网关IP能否ping通,可以判断是否为机房线路问题;3、使用第三方工具测试云主机IP和云主机网关IP,看是否连通;4、使用telnet+ip+po...
    99+
    2022-10-17
  • Linux系统怎么启动与登录故障排查
    这篇文章主要为大家分析了Linux系统怎么启动与登录故障排查的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“Linux系统怎么启动与登录故障排查”的知识吧。系...
    99+
    2023-06-28
  • MySQL故障排查的方法是什么
    MySQL故障排查方法主要包括以下几个步骤:1. 确认故障现象:通过观察数据库的表现和错误日志来判断故障的具体表现,比如错误代码、错...
    99+
    2023-10-20
    MySQL
  • PHP中的故障排查工具
    随着网络技术的不断发展,PHP已经成为了许多Web开发者热门的编程语言之一。PHP的强大能力和易于学习的特性使得它在开发快速、高效的Web应用程序方面具有很高的优势。然而,由于PHP是一种动态语言,因此在开发中出现错误的可能性也很高。因此,...
    99+
    2023-05-23
    调试工具 故障排查 PHP工具
  • Linux 运维故障排查思路是什么
    本篇文章为大家展示了Linux 运维故障排查思路是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1. 背景有时候会遇到一些疑难杂症,并且监控插件并不能一眼立马发现问题的根源。这时候就需要登录服务...
    99+
    2023-06-15
  • 如何用GDB 排查 Python 程序故障
    如何用GDB 排查 Python 程序故障,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。某Team在用Python开发一些代码,涉及子进程以及设法消除僵尸进程的需求。实践中他们...
    99+
    2023-06-17
  • MySQL DeadLock故障排查全过程记录
    【作者】 刘博:携程技术保障中心数据库高级经理,主要关注Sql server和Mysql的运维和故障处理。 【环境】 版本号:5.6.21 隔离级别:REPEATABLE READ 【问题描述】 接...
    99+
    2022-10-18
  • 云主机远程故障如何排查
    云主机远程故障排查的方法:1、使用ping命令ping云服务器IP,看通不通;2、看服务器的网关IP能否ping通,可以判断是否为机房线路问题;3、使用第三方工具测试服务器IP和服务器网关IP,看是否连通;4、使用telnet+ip+por...
    99+
    2022-10-05
  • Wireshark中怎么排除网络故障
    这期内容当中小编将会给大家带来有关Wireshark中怎么排除网络故障,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。配置用户界面及全局、协议参数通过Edit菜单中的Preferences菜单项以及Pref...
    99+
    2023-06-17
  • 有哪些Java线上故障排查技巧
    本篇内容介绍了“有哪些Java线上故障排查技巧”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!线上故障主要会包括 CPU、磁盘、内存以及网络问...
    99+
    2023-06-16
  • Kubernetes上对应用程序进行故障排除的技巧有哪些
    这篇文章主要讲解了“Kubernetes上对应用程序进行故障排除的技巧有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Kubernetes上对应用程序进...
    99+
    2022-10-19
  • 怎么进行Linux 硬件故障排除
    这篇文章将为大家详细讲解有关怎么进行Linux 硬件故障排除,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Linux 服务器 在物理机、虚拟化、私有云、公共云和混合云等许多不同种类的基础设施...
    99+
    2023-06-16
  • 1.1.1 NBU备份之Oracle问题故障的排查
    1. Create debug folders under the following directories on database client: All log directories should...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作