kubectl describe 是 Kubernetes 中的一个命令,用于提供集群中各种资源的详细信息,如 Pod、服务、部署等。该命令对于了解资源的当前状态和诊断问题至关重要。


下面的代码示例演示了如何使用 kubectl describe 获取特定 Pod 的详细信息。

【代码清单】

kubectl describe pod my-pod

【执行结果】

Name:     my-pod
Namespace:  default
Priority:   0
Node:     node-1/192.168.1.1
Start Time:  Mon, 20 Aug 2024 10:00:00 +0900
Labels:    app=my-app
Annotations: <none>
Status:    Running
IP:      10.244.0.1
Containers:
 my-container:
  Container ID:  docker://abcdef123456
  Image:     my-image:latest
  Image ID:    docker-pullable://my-image@sha256:abcdef...
  Port:      80/TCP
  Host Port:   0/TCP
  State:     Running
   Started:   Mon, 20 Aug 2024 10:01:00 +0900
  Ready:     True
  Restart Count: 0
  Environment:
   MY_ENV_VAR: my-value
  Mounts:
   /var/run/secrets/kubernetes.io/serviceaccount from default-token-abcde (ro)
Conditions:
 Type       Status
 Initialized    True
 Ready       True
 PodScheduled   True
Volumes:
 default-token-abcde:
  Type:    Secret (a volume populated by a Secret)
  SecretName: default-token-abcde
  Optional:  false

kubectl describe pod my-pod 的输出会提供 Pod 状态的全面概述,包括其名称、命名空间、节点分配、容器详情以及影响其运行的任何条件。每个部分都能提供 Pod 环境的详细信息,如容器的状态(运行、终止等)、重启次数和使用的卷。这些信息对于故障排除和确保应用程序按预期运行至关重要。

【小知识】

kubectl describe 可用于各种资源类型,包括 Pod、服务、部署、节点等。

该命令不仅会输出当前状态,还会输出与资源相关的事件,这有助于识别调度失败或容器启动不成功等问题。

你可以使用 --namespace 或 --show-events 等标记进一步过滤输出,前者可以指定不同的命名空间,后者可以在输出中包含事件。