首页/云/云与容器速查/Pod 概念与最小示例
Kubernetes68 条

Pod 概念与最小示例

Pod 是调度最小单元:一个或多个容器共享网络命名空间(同一 IP、端口互斥)、共享 volumes 与生命周期。通常由控制器管理,裸 Pod 只在调试时用。

云与容器速查云更新于 2026-10-13

Pod 是什么

Pod 是调度与运行的最小单元:一个或多个容器共享网络命名空间、存储卷与生命周期,因此它们之间可以用本地地址直接互相访问,但也意味着端口不能重复。生产环境的实例一律由控制器管理,直接创建的裸实例一旦被删除或被驱逐就不会自动重建。

基本信息

共享内容网络命名空间、存储卷、生命周期与调度边界
端口约束同一实例内的容器共用一个地址,端口不能重复监听
重启策略始终重启、仅失败时重启、从不重启三种取值
管理方式由控制器维护副本数,裸实例只适合调试与一次性任务
通信方式同实例内用本地地址互通,跨实例走服务名
常用字段容器列表、端口、资源请求与上限、探针、卷挂载

典型使用场景

  • 运行单一进程的服务:最常见的形态,一个容器跑一个应用
  • 边车模式:主容器旁边挂日志采集、代理或配置同步容器
  • 初始化容器:在主容器启动前完成依赖准备与数据预热
  • 临时调试:起一个带工具的实例排查网络与存储问题
  • 一次性任务:配合任务类资源运行批处理,结束即退出
  • 检查环境一致性:用同样的镜像与配置起实例,复现线上行为

关键字段速查

字段作用注意点
containers容器列表同一实例内端口不能重复
restartPolicy重启策略默认始终重启,与控制器配合使用
resources资源请求与上限请求影响调度,上限影响运行行为
probes健康检查就绪检查决定是否接收流量
volumes卷定义配置与密钥通常以卷形式挂载
nodeSelector节点选择与亲和、容忍一起影响调度结果

Pod 示例

Pod 示例
apiVersion: v1
kind: Pod
metadata:
  name: web-1
  labels:
    app: web
spec:
  containers:
    - name: web
      image: nginx:1.27-alpine
      ports:
        - containerPort: 80
      resources:
        requests: { cpu: 100m, memory: 128Mi }
        limits: { cpu: 500m, memory: 256Mi }
# 裸实例仅用于调试,生产交给控制器管理
同一实例内的容器用本地地址互访:这也解释了为什么端口必须错开,两个容器同时监听同一端口时后启动的会直接失败。
跨实例通信一律走服务名:直接写实例地址会在实例重建后失效,因为地址与名称都会变化。
裸实例不会自动重建:删除或被节点驱逐后就消失了,误以为集群会拉起是最常见的认知偏差。
资源请求影响调度结果:不写请求时调度器按零计算,节点可能被超额分配,运行高峰期才开始互相抢占。

日常使用的注意点

  • 按职责拆分容器,不要把多个无关进程塞进同一个容器
  • 初始化容器只做前置准备,不要在里面启动常驻服务
  • 边车容器与主容器共享生命周期,退出策略要一起考虑
  • 资源请求按实测值设置,避免调度水位被虚高占用
  • 标签要与服务选择器保持一致,否则流量进不来
  • 调试用的裸实例用完及时删除,避免资源长期闲置
把实例定义纳入配置仓库,而不是靠临时执行命令创建:环境之间才能保持结构一致,迁移与重建也才有依据。
标签要在创建时就规划好:它是选择器、调度约束与监控分组的共同基础,事后补加的改造成本远高于一开始就设计。

易错点

  • 直接用裸实例承载生产服务,被删除或被驱逐后无人重建
  • 同一实例内两个容器监听同一端口,其中一个启动即失败
  • 不写资源请求,节点被超额分配,高峰期集体抖动
  • 跨实例通信写死地址,实例重建后连接全部失效
  • 把配置直接写进实例定义而不使用配置对象,改动无法独立管理

数据来源与参考

  • Kubernetes Docs:Pods

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌