kubectl describe - 查看资源详情
kubectl describe 是 Kubernetes 中用于查看资源详细信息的命令,它比 kubectl get 提供更全面的资源状态描述,包括事件、配置详情和关联资源。
基本语法
bash
kubectl describe <资源类型> [资源名称] [选项]资源类型
| 资源类型 | 缩写 | 示例命令 |
|---|---|---|
| pods | po | kubectl describe po <name> |
| deployments | deploy | kubectl describe deploy <name> |
| services | svc | kubectl describe svc <name> |
| nodes | no | kubectl describe no <name> |
| namespaces | ns | kubectl 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为例,典型输出包含以下部分:
- 基本信息:名称、命名空间、节点等
- 状态:当前状态、重启次数等
- IP地址:Pod和容器的IP
- 容器信息:镜像、端口、环境变量等
- 条件(Conditions):Pod的各种条件状态
- 事件(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"