Kubernetes 学习 —— node 🆚 pod

上一篇,我们介绍了 kubernetes 的控制面板组件、节点组件和其他附加组件,这一篇我们将针对资源对象 Pod 和 Node 进行辨析,理清二者关系。

1. Pod

定义

  • Pod 是 Kubernetes 中最小的可部署单元,它封装了一个或多个容器(通常是 Docker 容器),以及这些容器共享的存储、网络和配置信息。
  • 一个 Pod 内的所有容器共享相同的网络命名空间,可以通过 localhost 相互通信。

作用

  • Pod 是 Kubernetes 调度的基本单位,每个 Pod 都运行在一个 Node 上。
  • Pod 内的容器共同协作完成某个任务,通常一个 Pod 会包含一个主容器,可能还有一些辅助容器(如日志处理容器)。

特点

  • 短生命周期: Pod 通常是短暂的,当 Pod 被删除、崩溃或被替换时,会由控制器(如 Deployment)自动创建新的 Pod 来代替。
  • 不可变性: 在 Kubernetes 中,Pod 是不可变的,更新 Pod 会创建一个新的 Pod 来替换旧的。

pods 在 kubernetes 中主要有两种使用方式:运行单个容器和运行多个需要协同工作的容器。

2. Node

定义

  • Node 是 Kubernetes 集群中的一个工作节点,代表一台物理机或虚拟机。每个 Node 都包含多个 Pod,并负责运行这些 Pod 的容器。
  • Node 上运行着 Kubernetes 的关键组件,如 kubeletkube-proxy 和容器运行时(如 Docker)。

作用

  • 资源管理: Node 管理其上的计算资源(CPU、内存、存储等),并将这些资源分配给运行的 Pod。
  • Pod 运行环境: Node 提供了容器运行时环境和必要的系统资源,确保 Pod 能正常运行。

特点

  • 集群组成部分: 一个 Kubernetes 集群由多个 Node 组成,集群中的 Node 数量可以动态伸缩。
  • 节点状态: Node 可能处于不同的状态,如 Ready(就绪)、NotReady(未就绪)等,这些状态会影响 Pod 的调度。

3. Worker Node

定义

  • Worker Node 通常是指用于运行应用负载的 Node。Kubernetes 中的 Worker Node 和 Node 在概念上是相同的,Worker Node 是 Node 的一种类型或角色。

作用

  • Worker Node 专门负责运行用户的应用容器(Pod),处理工作负载。相比之下,Master Node(控制节点)负责管理和调度整个集群,而不运行应用负载。
  • 每个 Worker Node 都报告其状态和资源使用情况到 Kubernetes 控制平面(如 API Server),并接受调度指令。

特点

  • Pod 承载: Worker Node 是实际承载和运行 Pod 的节点。
  • 集群扩展: 集群扩展时,通常会增加 Worker Node 的数量,以增加集群的计算资源和负载能力。

4. Pod、Node 和 Worker Node 的关系

  • Pod 与 Node 的关系:

    • Pod 是 Kubernetes 中的基本运行单元,Pod 在 Node 上运行。
    • 每个 Node 上可以运行多个 Pod,不同的 Pod 可以在同一个 Node 上,也可以分布在不同的 Node 上。
    • Pod 由调度器(Scheduler)决定在哪个 Node 上运行,调度的依据是资源需求和 Node 的资源状况。
  • Node 与 Worker Node 的关系:

    • Node 是 Kubernetes 集群的构成元素,Worker Node 是专门用于运行用户工作负载的 Node。
    • 集群的 Worker Node 越多,能够承载的 Pod 数量越多,因此集群的负载能力也越强。
  • 集群管理:

    • 集群中的 Master Node 管理 Worker Node,Master Node 不直接运行工作负载,而是管理调度、控制、监控等功能。
    • Worker Node 接受 Master Node 的指令,运行实际的 Pod,并通过 kubelet 与 Master Node 保持通信。

总结

  • Pod 是最小的运行单元,包含一个或多个容器。
  • Node 是运行 Pod 的物理或虚拟机,提供必要的计算资源。
  • Worker Node 是运行应用负载的 Node,实际承载了集群中的 Pod。

这三者构成了 Kubernetes 集群中基本的运行和调度体系,Pod 依赖于 Node 的资源,而 Node 又是由 Kubernetes 控制平面管理的基础设施单元。

参考资料

Kubernetes Doc: nodes
Kubernetes Doc: pods


Kubernetes 学习 —— node 🆚 pod
https://github.com/zhililab/2024/08/22/Learning-Kubernetes-002/
作者
Zhi Li
发布于
2024年8月22日
许可协议