文档首页/ 云容器实例 CCI/ 常见问题/ 工作负载异常/ 事件二:重新启动容器失败
更新时间:2024-11-04 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: ……”时,表示健康检查失败。请重新配置正确的健康检查策略。

排查项四:命名空间的资源类型错误

请检查创建命名空间时选择的资源类型是否正确,通用计算型和GPU加速型支持X86镜像。

  1. 登录控制台,在页面上单击失败的工作负载,进入负载详情界面。
  2. 查看Pod列表,单击实例异常Pod所在行“操作”列的“查看日志”。
  3. 查看报错信息如下。

    ERROR: exec failed: Exec format error

    ERROR: hyper send process initiated event: error

其他定位方法

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

  1. 为工作负载配置如下类型的启动命令,这样pod启动后没有启动应用程序,没有执行任何操作。

    执行启动命令前,请确认镜像中/bin/bash命令可用。

  2. Pod启动成功后,执行kubectl exec进入到pod中,手动执行启动命令,根据错误提示进行问题定位和修复。

相关文档