讲解
Pod 是 Kubernetes 里最小的调度和部署单元——注意不是容器。一个 Pod 可以包含一个或多个容器,这些容器共享网络命名空间(同一个 IP,容器间用 localhost 互访)和存储卷,并且「同生共死」:调度到同一台机器、一起启动、一起终止。实践中 95% 的 Pod 只装一个容器,所以可以先简单理解为「Pod ≈ 容器 + 一层编排外衣」;多容器 Pod 服务于特定模式,比如日志收集 sidecar、代理 ambassador,等用到再深究。
一个最小 Pod 清单只有四层结构:apiVersion(v1)和 kind(Pod)声明资源类型;metadata 里的 name 是集群内唯一标识,labels 是供选择器匹配的标签(后面 Service、Deployment 全靠它);spec.containers 描述容器——镜像、端口、命令、资源、探针都在这里。把这份 YAML 交给 kubectl apply -f,API Server 接收后,Scheduler 选节点、kubelet 拉镜像起容器,几秒后 Pod 就 Running 了。
Pod 创建后的日常操作就几个:kubectl get pods 看状态(STATUS 列的 Pending/Running/Error/CrashLoopBackOff 是排查入口),kubectl describe pod 看事件流,kubectl logs 看容器标准输出(多容器 Pod 要加 -c 指定容器名),kubectl exec 进容器执行命令,kubectl port-forward 把 Pod 端口转发到本机调试。Pod 是一次性的:它挂了不会原地复活,删了就没了——「自愈」要靠后面的 Deployment 等控制器,这也是生产上几乎不裸用 Pod 的原因。
示例
一个最小 nginx Pod 清单(会被真实 apply 到集群并等待就绪):
# wait: pod/ohmydocs-verify-web
apiVersion: v1
kind: Pod
metadata:
name: ohmydocs-verify-web
labels:
app: ohmydocs-verify-web
spec:
containers:
- name: nginx
image: nginx:1.27-alpine
ports:
- containerPort: 80
查看状态与详情——STATUS 应该是 Running,describe 末尾的事件记录了调度和拉镜像过程:
kubectl get pod ohmydocs-verify-web -o wide
kubectl describe pod ohmydocs-verify-web | tail -6
看日志、进容器执行命令(exec 的 -- 之后是在容器里跑的命令):
kubectl logs ohmydocs-verify-web --tail=2 || echo "(暂无访问日志,属正常)"
kubectl exec ohmydocs-verify-web -- cat /etc/os-release | head -2
命令行快速建一个临时 Pod 做验证(声明式之外的命令式入口,适合一次性调试),用完即删:
kubectl run ohmydocs-verify-tmp --image=busybox:1.36 --restart=Never --command -- sleep 3600
kubectl wait --for=condition=ready pod/ohmydocs-verify-tmp --timeout=120s
kubectl exec ohmydocs-verify-tmp -- hostname
kubectl delete pod ohmydocs-verify-tmp --wait
常见坑
- pod 名字当主机名依赖:Pod 删除重建后 IP 和 hostname 都变,任何写死 Pod IP 的配置都是定时炸弹——服务间访问用 Service(后文专章)。
- Pending 卡住不动:先看 describe 的 Events——镜像拉不下来(名字错/网络不通)和资源不够是最常见的两个原因。
- 多容器 Pod 看日志报错的困惑:Pod 里有多个容器时 kubectl logs 必须加 -c,忘了加会直接报错提示你选容器。
- 裸 Pod 跑生产:节点故障时裸 Pod 不会被重新调度,必须交给 Deployment 等控制器管理(下一章后的内容)。
小结
Pod = 共享网络与存储、同生共死的一组容器,是调度最小单位;清单四要素 apiVersion/kind/metadata/spec;get/describe/logs/exec 四件套覆盖日常。下一章给 Pod 加上「生死监护」:生命周期与健康探针。