查看 Pod 详情
学习目标
- 掌握查看 Pod 状态的各种方法
- 理解 Pod 详情输出的含义
- 能够通过详情排查问题
核心概念
基本查看命令
# 查看所有 Pod
kubectl get pods
# 查看指定 Pod
kubectl get pod nginx
# 查看详细信息
kubectl describe pod nginx
# 查看 YAML 配置
kubectl get pod nginx -o yaml
# 查看 JSON 格式
kubectl get pod nginx -o json
get pods 输出详解
NAME READY STATUS RESTARTS AGE
nginx 1/1 Running 0 5m
NAME: Pod 名称
READY: 就绪容器数/总容器数
STATUS: Pod 阶段
RESTARTS: 重启次数
AGE: 运行时长
| 字段 | 说明 |
|---|---|
| NAME | Pod 名称 |
| READY | 就绪容器比例 |
| STATUS | 当前状态 |
| RESTARTS | 重启次数 |
| AGE | 存活时间 |
常用状态说明
| 状态 | 含义 | 需要关注 |
|---|---|---|
| Running | 正常运行 | 否 |
| Pending | 等待中 | 长时间需排查 |
| Succeeded | 成功完成 | 否 |
| Failed | 失败 | 是 |
| CrashLoopBackOff | 反复崩溃 | 是 |
| ImagePullBackOff | 镜像拉取失败 | 是 |
| Error | 错误 | 是 |
get 常用参数
# 显示更多信息
kubectl get pods -o wide
# 按标签过滤
kubectl get pods -l app=web
# 指定命名空间
kubectl get pods -n kube-system
# 监视变化
kubectl get pods -w
# 只显示名称
kubectl get pods -o name
-o wide 输出
NAME READY STATUS RESTARTS AGE IP NODE
nginx 1/1 Running 0 5m 10.244.1.5 node1
比默认输出多了:
IP: Pod IP 地址
NODE: 所在节点
describe pod 详解
kubectl describe pod nginx
Name: nginx
Namespace: default
Priority: 0
Node: node1/192.168.1.10
Start Time: Mon, 01 Jul 2026 10:00:00 +0000
Labels: app=web
Status: Running
IP: 10.244.1.5
Containers:
nginx:
Container ID: docker://abc123
Image: nginx:1.24
Port: 80/TCP
State: Running
Ready: True
Restart Count: 0
Limits:
cpu: 500m
memory: 128Mi
Requests:
cpu: 250m
memory: 64Mi
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 5m default-scheduler Successfully assigned default/nginx to node1
Normal Pulling 5m kubelet Pulling image "nginx:1.24"
Normal Pulled 4m kubelet Successfully pulled image
Normal Created 4m kubelet Created container nginx
Normal Started 4m kubelet Started container nginx
describe 关键信息
| 部分 | 说明 | 排查价值 |
|---|---|---|
| Name/Namespace | 基本信息 | 确认资源 |
| Node | 所在节点 | 调度问题 |
| Status | 当前状态 | 整体健康 |
| Containers | 容器详情 | 配置和状态 |
| Events | 事件记录 | 最重要的排查信息 |
Events 是关键
# 只查看事件
kubectl describe pod nginx | grep -A 20 Events
# 常见事件
Warning FailedScheduling pod has unbound immediate PersistentVolumeClaims
Warning FailedMount MountVolume.SetUp failed
Warning BackOff Back-off restarting failed container
Normal Pulled Successfully pulled image
Normal Started Started container
查看 YAML 配置
# 查看完整 YAML
kubectl get pod nginx -o yaml
# 只看 spec
kubectl get pod nginx -o jsonpath='{.spec}'
# 只看状态
kubectl get pod nginx -o jsonpath='{.status}'
查看特定信息
# 查看 Pod IP
kubectl get pod nginx -o jsonpath='{.status.podIP}'
# 查看所在节点
kubectl get pod nginx -o jsonpath='{.spec.nodeName}'
# 查看容器镜像
kubectl get pod nginx -o jsonpath='{.spec.containers[*].image}'
多容器 Pod 查看
# 查看多容器 Pod 日志
kubectl logs nginx -c web # 指定容器
kubectl logs nginx --all-containers # 所有容器
# 进入指定容器
kubectl exec -it nginx -c web -- /bin/sh
实践练习
练习 1: 基本查看
创建一个 Pod 并查看信息:
kubectl run test --image=nginx
kubectl get pod test
kubectl describe pod test
练习 2: 理解输出
回答以下问题:
- READY 1/1 表示什么?
- RESTARTS 3 需要关注吗?
- Events 中看到 Warning 说明什么?
练习 3: 过滤查看
练习使用标签过滤:
kubectl get pods -l app=web
kubectl get pods -l 'app in (web, api)'
练习 4: 排查问题
模拟问题并排查:
# 创建一个有问题的 Pod
kubectl run bad-pod --image=nginx:notag
# 查看状态和事件
kubectl describe pod bad-pod
常见误解
1. Running 不代表正常
错误:Running 状态就说明一切正常
正确:
- 检查 READY 比例(1/1 才是全部就绪)
- 检查 RESTARTS(频繁重启有问题)
- 检查 Events(有无 Warning)
2. 只看 get 不够
错误:kubectl get pods 看到 Running 就放心了
正确:
- get: 快速概览
- describe: 详细排查
- logs: 查看日志
排查问题要用 describe 和 logs
小结
| 要点 | 说明 |
|---|---|
| get pods | 快速查看状态 |
| describe pod | 详细信息和事件 |
| -o wide | 显示 IP 和节点 |
| -o yaml | 查看完整配置 |
| Events | 排查问题的关键 |
| labels | 标签过滤资源 |
| jsonpath | 提取特定字段 |
练习编辑器
bash
Loading...