15·Pod 基础入门

查看 Pod 详情

kubernetespodkubectl

查看 Pod 详情

学习目标

  1. 掌握查看 Pod 状态的各种方法
  2. 理解 Pod 详情输出的含义
  3. 能够通过详情排查问题

核心概念

基本查看命令

# 查看所有 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:       运行时长
字段说明
NAMEPod 名称
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: 理解输出

回答以下问题:

  1. READY 1/1 表示什么?
  2. RESTARTS 3 需要关注吗?
  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...

继续学习

完成本课后,建议继续学习下一课「查看 Pod 日志」 以巩固所学知识。