Kubernetes Pod 的特性

84 阅读2分钟

概述

image.png

Kubernetes Pod 是 Kubernetes 中的最小可部署单元,代表一组共享资源的容器。Pod 的设计具备以下重要特性:

1. 单一 IP 地址

  • 每个 Pod 都有一个独立的 IP 地址,Pod 内部的所有容器共享该 IP 地址,通过 localhost 进行通信。
  • 外部的容器或服务通过该 Pod 的 IP 与它通信。

2. 共享存储卷

  • Pod 内的容器可以共享存储卷,这些卷通常用于持久化数据或共享文件。
  • 共享存储使多个容器可以通过相同的数据卷进行数据交换。

3. 共享网络命名空间

  • Pod 内的容器共享网络命名空间,能使用同一个网络接口和端口。
  • 容器可以通过 localhost 相互访问,并共享同一网络堆栈(例如 IP 地址和端口范围)。

4. 生命周期管理

  • Pod 有独立的生命周期,由 Kubernetes 控制:

    • Pending: Pod 已提交但尚未调度。
    • Running: Pod 已调度并启动所有容器。
    • Succeeded: Pod 中的所有容器成功终止。
    • Failed: Pod 中至少有一个容器以失败状态终止。
    • CrashLoopBackOff: 容器不断崩溃并重启。

5. 多容器支持

  • 虽然 Pod 通常包含一个容器,但也可以包含多个容器。这些容器紧密耦合,协同工作,通常通过共享网络和存储来通信。

6. 临时容器 (Init Containers)

  • Pod 支持 Init Containers,它们在主容器启动前运行,执行一些初始化任务(如准备数据或检查依赖性)。

7. 资源管理

  • Pod 定义了资源请求(requests)和限制(limits),用于控制 CPU 和内存的使用。

    • requests: 指定 Pod 所需的最小资源,确保有足够的资源分配。
    • limits: 限制 Pod 可用的最大资源,防止过度消耗。

8. 可重启机制

  • Pod 本身不可重启,但其内部容器可以重启(由 Kubernetes 自动管理),以确保服务的高可用性。

9. 亲和性和反亲和性

  • 可以设置 Pod 的 亲和性(affinity)和 反亲和性(anti-affinity),以指定 Pod 在集群中应放置或避免放置的节点。

10. 健康检查

  • Kubernetes 为 Pod 提供了健康检查机制:

    • Liveness Probe: 确保容器在运行时保持健康,探测失败会触发容器重启。
    • Readiness Probe: 检查容器是否准备好接受流量,未通过时会将 Pod 从负载均衡中移除。

11. 水平扩展

  • Pod 支持通过 Horizontal Pod Autoscaler (HPA) 来实现自动扩展,根据 CPU 或内存使用情况自动调整 Pod 的数量。

Pod 是 Kubernetes 中实现容器化应用的核心单元,提供了网络、存储、资源管理等功能,支持高可用性和弹性扩展。