事件二:重新启动容器失败
工作负载详情中,如果事件中提示“重新启动容器失败”,请按照如下方式来排查原因。
排查项一:查看端口是否冲突
- 按照使用kubectl配置好kubectl。
- 在页面上单击失败的工作负载,进入负载详情界面,查看Pod列表,获取Pod名字。
- 查看失败的容器的名称。
kubectl describe pod $name -n $namespace | grep "Error syncing pod failed to"
图1 查看失败的容器的名称
- 查看退出容器的错误日志。
kubectl logs $podName -n $namespace -c $containerName
此种问题有如下解决方法:重新创建工作负载,并配置正确的端口,确保端口不冲突。
排查项二:用户自身业务BUG
请检查工作负载启动命令是否正确执行,或工作负载本身bug导致容器不断重启。
- 按照使用kubectl配置好kubectl。
- 在页面单击失败的工作负载,进入负载详情界面,查看Pod列表,获取Pod名字。
- 查看失败的容器的名称。
kubectl describe pod $name -n $namespace | grep "Error syncing pod failed to"
图2 查看失败的容器的名称
- 查看退出容器的错误日志。
kubectl logs $podName -n $namespace -c $containerName
根据日志提示修复工作负载本身的问题。
图3 容器启动命令配置不正确
此种问题的解决方案是:重新创建工作负载,并配置正确的启动命令。
排查项三:工作负载配置的健康检查执行失败
工作负载如果配置liveness型(工作负载存活探针)健康检查,当健康检查失败次数超过阈值时,会重启实例中的容器。在工作负载详情页面查看事件,如果K8S事件中出现“Liveness probe failed: ……”时,表示健康检查失败。请重新配置正确的健康检查策略。
排查项四:命名空间的资源类型错误
请检查创建命名空间时选择的资源类型是否正确,通用计算型和GPU加速型支持X86镜像。
- 登录控制台,在页面上单击失败的工作负载,进入负载详情界面。
- 查看Pod列表,单击实例异常Pod所在行“操作”列的“查看日志”。
- 查看报错信息如下。
ERROR: exec failed: Exec format error
ERROR: hyper send process initiated event: error