广告
返回顶部
首页 > 资讯 > 精选 >解决Kubernetes Pod故障的5个简单技巧分别是什么
  • 764
分享到

解决Kubernetes Pod故障的5个简单技巧分别是什么

2023-06-16 01:06:36 764人浏览 泡泡鱼
摘要

本篇文章为大家展示了解决kubernetes Pod故障的5个简单技巧分别是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在很多情况下,你可能会发现Kubernetes中的应用程序没有正确地部署

本篇文章为大家展示了解决kubernetes Pod故障的5个简单技巧分别是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

在很多情况下,你可能会发现Kubernetes中的应用程序没有正确地部署,或者没有正常地工作。今天就提供如何去快速解决这类故障以及一些技巧。另外,我还将与大家分享一些关于自己操作Kubernetes的一些非常有用的技巧。

那么,我们开始吧!

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

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

  2.  代码中的问题。

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

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

技巧1:检查Pod

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

kubectl get pods

解决Kubernetes Pod故障的5个简单技巧分别是什么

如图,一个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

解决Kubernetes Pod故障的5个简单技巧分别是什么

最后一行展示了镜像错误

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

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

解决Kubernetes Pod故障的5个简单技巧分别是什么

如图,Pod已经起来了。

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

  •  Crashloopbackoff:

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

        例如,Docker CMD即刻退出。

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

        注意:

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

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

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

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

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

kubectl describe frontend-65c58c957d-f4cqn

解决Kubernetes Pod故障的5个简单技巧分别是什么

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

技巧3:检查日志(Log)

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

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

解决Kubernetes Pod故障的5个简单技巧分别是什么

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

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

解决Kubernetes Pod故障的5个简单技巧分别是什么

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

kubectl | grep -i -A 5 Basic

解决Kubernetes Pod故障的5个简单技巧分别是什么

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

kubectl api-resources

解决Kubernetes Pod故障的5个简单技巧分别是什么

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

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

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

列出Kubernetes命名空间(namespace):

kubectl get ns

解决Kubernetes Pod故障的5个简单技巧分别是什么

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

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

解决Kubernetes Pod故障的5个简单技巧分别是什么

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

有了这些,我希望你能在Kubernetes集群中找到并修复Kubernetes资源和代码中的错误。同时我打算接下来再介绍一下Kubernetes服务(Service)和网络的调试。

上述内容就是解决Kubernetes Pod故障的5个简单技巧分别是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网精选频道。

--结束END--

本文标题: 解决Kubernetes Pod故障的5个简单技巧分别是什么

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

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

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

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

下载Word文档
猜你喜欢
  • 解决Kubernetes Pod故障的5个简单技巧分别是什么
    本篇文章为大家展示了解决Kubernetes Pod故障的5个简单技巧分别是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在很多情况下,你可能会发现Kubernetes中的应用程序没有正确地部署...
    99+
    2023-06-16
  • 使用Python加速数据分析的10个简单技巧分别是什么
    这期内容当中小编将会给大家带来有关使用Python加速数据分析的10个简单技巧分别是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。提示和技巧,尤其是在编程领域,可能是非常有用的。有时,一个小技巧可以节...
    99+
    2023-06-16
  • 优化SQL SELECT语句性能的6个简单技巧分别是什么
    本篇文章给大家分享的是有关优化SQL SELECT语句性能的6个简单技巧分别是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。SELECT语...
    99+
    2022-10-19
  • CSS网页布局中简单实用八个技巧分别是什么
    今天就跟大家聊聊有关CSS网页布局中简单实用八个技巧分别是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。和大家重点学习一下CSS网页布局非常有用...
    99+
    2022-10-19
  • 提高网站在google谷歌排名的5个技巧分别是什么
    这篇文章给大家介绍提高网站在google谷歌排名的5个技巧分别是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1、获取高质量的相关站点链接  高质量的导入链接,是搜索引擎优化者所认同的,有效提升排名的方法。对于一个...
    99+
    2023-06-12
  • 十个帮助解决CSS兼容问题的技巧分别是什么
    本篇文章为大家展示了十个帮助解决CSS兼容问题的技巧分别是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。你对CSS兼容问题是否熟悉,这里向大家简单介绍一下十个技...
    99+
    2022-10-19
  • 高薪的web前端工程师必会的19个JavaScript简写技巧分别是什么
    高薪的web前端工程师必会的19个JavaScript简写技巧分别是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1.三元操作符当想写...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作