K8s 1.27.1 实战系列(六)Pod

一、Pod介绍

1、Pod 的定义与核心设计

Pod 是 Kubernetes 的最小调度单元,由一个或多个容器组成,这些容器共享网络、存储、进程命名空间等资源,形成紧密协作的应用单元。Pod 的设计灵感来源于“豌豆荚”模型,容器如同豆子,共享同一环境但保持隔离性。其核心设计目标包括:

  • 轻量性:Pod 本身不负责资源分配,仅作为容器的逻辑封装单元,高效利用集群资源。
  • 临时性:Pod 生命周期短暂,故障或任务完成后会被销毁重建。
  • 共享性:容器间通过共享网络(同一 IP/端口)、存储卷(Volume)和进程空间实现协作。

2、Pod 的实现机制

  • 基础容器(Pause 容器)​

    每个 Pod 启动时首先创建 pause 容器,作为网络和存储的共享基础。后续容器通过链接到 pause 容器实现资源共用。例如,多容器 Pod 中,Nginx 和日志采集容器可通过 localhost 直接通信。

  • 多容器协作模式

    • 主从容器(Sidecar)​:如 Web 服务容器与日志采集容器协同工作。
    • 初始化容器(Init Container)​:用于预配置环境(如数据库迁移),完成后才启动主容器。
    • 临时任务容器:处理一次性任务(如数据备份),任务完成后自动终止。

3、网络与存储共享

  • 网络共享
    所有容器共享同一网络命名空间,拥有相同的 IP 和端口空间。例如,一个 Pod 内的 Nginx 容器和调试工具容器可通过 localhost:80 直接通信。
  • 存储共享
    通过 Volume 挂载实现数据持久化与共享。例如,多个容器可同时读写同一 emptyDir 卷中的临时文件。

4、生命周期与重启策略

  • 生命周期阶段

    • Pending:等待调度与资源分配。
    • Running:容器已启动并运行。
    • Succeeded/Failed:任务成功完成或异常终止。
  • 重启策略

    • Always​(默认):容器退出后自动重启,适合长期服务。
    • OnFailure:仅当容器异常退出(非零状态码)时重启,适合批处理任务。
    • Never:不重启࿰

你可能感兴趣的:(K8s,kubernetes,容器,K8s,Pod,yaml)