Skip to content

kubectl describe - 查看资源详情

kubectl describe 是 Kubernetes 中用于查看资源详细信息的命令,它比 kubectl get 提供更全面的资源状态描述,包括事件、配置详情和关联资源。

基本语法

bash
kubectl describe <资源类> [资源名称] [选项]

资源类型

资源类型缩写示例命令
podspokubectl describe po <name>
deploymentsdeploykubectl describe deploy <name>
servicessvckubectl describe svc <name>
nodesnokubectl describe no <name>
namespacesnskubectl describe ns <name>

选项

选项说明示例
-n, --namespace指定命名空间kubectl describe po -n dev
-l, --selector根据标签选择多个资源kubectl describe po -l app=nginx
-A, --all-namespaces在所有命名空间中查找kubectl describe po -A

经典案例

bash
# 查看Pod详情
kubectl describe pod nginx-pod
# 查看Service详情
kubectl describe service nginx-service
# 查看命名空间内所有资源
kubectl describe namespace default
# 查看节点详情
kubectl describe node worker-node-1
# 查看Pod的事件(常用于排查问题)
kubectl describe pod nginx-pod | grep -A 10 Events
# 查看Service关联的Endpoints
kubectl describe svc nginx-service | grep -A 5 Endpoints
# 比较Deployment配置与实际状态
kubectl describe deploy nginx-deployment | grep -E "Replicas|Image"
# 查看Pod的资源限制
kubectl describe pod nginx-pod | grep -E "Limits|Requests"

输出解析

以Pod为例,典型输出包含以下部分:

  1. 基本信息:名称、命名空间、节点等
  2. 状态:当前状态、重启次数等
  3. IP地址:Pod和容器的IP
  4. 容器信息:镜像、端口、环境变量等
  5. 条件(Conditions):Pod的各种条件状态
  6. 事件(Events):按时间排序的重要事件记录

kubectl exec - 容器执行命令

kubectl exec 命令用于在 Kubernetes 集群中的容器内执行命令。

基本语法

bash
kubectl exec [POD_NAME] -- [COMMAND] [ARGS...]

选项

选项(短格式)选项(长格式)描述
-i--stdin保持标准输入打开(用于交互式命令)
-t--tty分配一个伪终端(通常与 -i 一起使用)
-c--container指定容器名称(当 Pod 中有多个容器时)
-n--namespace指定命名空间
-q--quiet只显示命令输出,不显示额外信息
--分隔 kubectl 参数和要在容器内执行的命令

经典案例

bash
# 进入默认命名空间中 my-pod 的默认容器的 bash shell
kubectl exec -it my-pod -- /bin/bash
# 在指定命名空间的特定容器中执行命令
kubectl exec -n my-namespace -c my-container my-pod -- ls /app
# 调试容器(当容器崩溃时)
kubectl exec -it my-pod --container debug-container -- /bin/bash
# 在 Pod 中执行简单命令
kubectl exec my-pod -- ls /
# 在多个 Pod 中执行相同命令
kubectl get pods --selector=app=my-app -o name | xargs -I {} kubectl exec {} -- echo "Hello"