解决Kubernetes Pod故障的5个简单方法

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

  •  Imagepullbackoff:

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

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

  •  RunContainerError:

         也是一种可能。

         原因:

         缺少ConfigMap或Secrets。

  •  ContainerCreating:

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

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


  1. # start Pod from image "ngin".  
  2. # 'web' can be any name, is the name of resulting K8S deployment  
  3. kubectl run web –image=ngin –replicas=1 
最后一行展示了镜像错误

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


  1. kubectl run temp –image=nginx –replicas=1  
  2. kubectl get pods 
如图,Pod已经起来了。

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

  •  Crashloopbackoff:

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

        例如,Docker CMD即刻退出。

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

        注意:

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

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

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

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

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

【声明】:芜湖站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

相关文章