Black lives matter.
We stand in solidarity with the Black community.
Racism is unacceptable.
It conflicts with the core values of the Kubernetes project and our community does not tolerate it.
We stand in solidarity with the Black community.
Racism is unacceptable.
It conflicts with the core values of the Kubernetes project and our community does not tolerate it.
此页显示如何核查与 init 容器执行相关的问题。
下面的示例命令行将 Pod 称为 <pod-name>
,而 init 容器称为 <init-container-1>
和 <init-container-2>
。
你必须拥有一个 Kubernetes 的集群,同时你的 Kubernetes 集群必须带有 kubectl 命令行工具。 如果你还没有集群,你可以通过 Minikube 构建一 个你自己的集群,或者你可以使用下面任意一个 Kubernetes 工具构建:
要获知版本信息,请输入kubectl version
.
显示你的 Pod 的状态:
kubectl get pod <pod-name>
例如,状态 Init:1/2
表明两个 Init 容器中的一个已经成功完成:
NAME READY STATUS RESTARTS AGE
<pod-name> 0/1 Init:1/2 0 7s
更多状态值及其含义请参考了解 Pod 的状态。
查看 Init 容器运行的更多详情:
kubectl describe pod <pod-name>
例如,对于包含两个 Init 容器的 Pod 应该显示如下信息:
Init Containers:
<init-container-1>:
Container ID: ...
...
State: Terminated
Reason: Completed
Exit Code: 0
Started: ...
Finished: ...
Ready: True
Restart Count: 0
...
<init-container-2>:
Container ID: ...
...
State: Waiting
Reason: CrashLoopBackOff
Last State: Terminated
Reason: Error
Exit Code: 1
Started: ...
Finished: ...
Ready: False
Restart Count: 3
...
您还可以通过读取 Pod Spec 上的 status.initContainerStatuses
字段以编程方式了解 Init 容器的状态:
kubectl get pod nginx --template '{{.status.initContainerStatuses}}'
此命令将返回与原始 JSON 中相同的信息.
一起传递 Init 容器名称与 Pod 名称来访问它的日志。
kubectl logs <pod-name> -c <init-container-2>
运行 shell 脚本打印命令的init容器,执行 shell 脚本。
例如,您可以在 Bash 中通过在脚本的开头运行 set -x
来实现。
以 Init:
开头的 Pod 状态汇总了 Init 容器执行的状态。
下表介绍调试 Init 容器时可能看到的一些状态值示例。
状态 | 含义 |
---|---|
Init:N/M |
Pod 包含 M 个 Init 容器,其中 N 个已经运行完成。 |
Init:Error |
Init 容器已执行失败。 |
Init:CrashLoopBackOff |
Init 容器反复执行失败。 |
Pending |
Pod 还没有开始执行 Init 容器。 |
PodInitializing or Running |
Pod 已经完成执行 Init 容器。 |