文档首页 > > 常见问题> 工作负载异常> 事件二:重新启动容器失败

事件二:重新启动容器失败

分享
更新时间: 2019/09/02 GMT+08:00

工作负载详情中,若事件中提示重新启动容器失败,请按照如下方式来排查原因。

排查项一:查看端口是否冲突

  1. 按照使用kubectl配置好kubectl。
  2. 在页面上单击失败的工作负载,进入负载详情界面,查看Pod列表,获取Pod名字。
  3. 查看失败的容器的名称。

    kubectl describe pod $name -n $namespace | grep "Error syncing pod failed to"

    图1 查看失败的容器的名称

  4. 查看退出容器的错误日志。

    kubectl logs $podName -n $namespace -c $containerName

    此种问题有如下解决方法:重新创建工作负载,并配置正确的端口,确保端口不冲突。

排查项二:用户自身业务BUG

请检查工作负载启动命令是否正确执行,或工作负载本身bug导致容器不断重启。

  1. 按照使用kubectl配置好kubectl。
  2. 在页面单击失败的工作负载,进入负载详情界面,查看Pod列表,获取Pod名字。
  3. 查看失败的容器的名称。

    kubectl describe pod $name -n $namespace | grep "Error syncing pod failed to"

    图2 查看失败的容器的名称

  4. 查看退出容器的错误日志。

    kubectl logs $podName -n $namespace -c $containerName

    根据日志提示修复工作负载本身的问题。

    图3 容器启动命令配置不正确

    此种问题的解决方案是:重新创建工作负载,并配置正确的启动命令。

排查项三:工作负载配置的健康检查执行失败

工作负载若配置liveness型(工作负载存活探针健康检查,当健康检查失败次数超过阈值时,会重启实例中的容器。在工作负载详情页面查看事件,若K8S事件中出现“Liveness probe failed: Get http…”时,表示健康检查失败。请重新配置正确的健康检查策略。

其他定位方法

负载异常有可能是容器中运行的应用启动异常,这时可以通过手动执行启动命令,根据错误提示进行问题定位和修复。通常的做法如下:

  1. 配置工作负载的启动命令为/bin/bash -c sleep 10000类型的命令,这样pod启动后没有启动应用程序,没有执行任何操作。
  2. Pod启动成功后,执行kubectl exec进入到pod中,手动执行启动命令,根据错误提示进行问题定位和修复。
分享:

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问