--- vssueId: 149 layout: LearningLayout description: Kubernetes教程_本文描述了如何诊断初始化容器InitContainer在执行过程中的问题_本文中的命令行使用来指代Pod的名称_使用来指代初始化容器的名称 meta: - name: keywords content: Kubernetes教程,K8S教程,init container,初始化容器,initialize container --- # 容器组_Debug初始化容器 > 参考文档: Kubernetes [Debug Init Containers](https://kubernetes.io/docs/tasks/debug-application-cluster/debug-init-containers/) 本文描述了如何诊断初始化容器InitContainer在执行过程中的问题_本文中的命令行使用 `` 来指代Pod的名称_使用 `` 和 `` 来指代初始化容器的名称。 本文假设您已经完成了 [容器组_配置初始化容器](./init-config.html) [[TOC]] ## 检查初始化容器的状态 执行命令,查看 Pod 的状态: ``` sh kubectl get pod ``` 例如,状态如果是 `Init:1/2`,则表明了两个初始化容器当中的一个已经成功执行: ``` NAME READY STATUS RESTARTS AGE 0/1 Init:1/2 0 7s ``` ## 查看初始化容器的详情 查看初始化容器的更多信息: ``` sh kubectl describe pod ``` 假设 Pod 包含两个初始化容器,显示结果可能如下所示: ``` Init Containers: : Container ID: ... ... State: Terminated Reason: Completed Exit Code: 0 Started: ... Finished: ... Ready: True Restart Count: 0 ... : Container ID: ... ... State: Waiting Reason: CrashLoopBackOff Last State: Terminated Reason: Error Exit Code: 1 Started: ... Finished: ... Ready: False Restart Count: 3 ... ``` 也可以直接读取 Pod 的 `status.initContainerStatuses` 字段,命令行如下所示: ``` sh kubectl get pod --template '{{.status.initContainerStatuses}}' ``` 该命令将以 JSON 格式返回信息 ## 查看初始化容器的日志 执行命令查看初始化容器的日志: ``` sh kubectl logs -c ``` ## 理解 Pod 状态 如果 Pod 的状态以 `Init:` 开头,表示该 Pod 正在执行初始化容器。下表描述了 Debug 初始化容器的过程中,一些可能出现的 Pod 状态: | 状态 | 描述 | | ------------------------------ | ---------------------------------------------------------- | | `Init:N/M` | Pod 中包含 M 个初始化容器,其中 N 个初始化容器已经成功执行 | | `Init:Error` | Pod 中有一个初始化容器执行失败 | | `Init:CrashLoopBackOff` | Pod 中有一个初始化容器反复执行失败 | | `Pending` | Pod 还未开始执行初始化容器 | | `PodInitializing` or `Running` | Pod 已经完成初始化容器的执行 |