2. Kubernetes 核心概念回顾:Pod、ReplicaSet、Deployment、Service、Node、节点池(Node Pool)的定义与关系

在深入 Deployment 滚动中断与集群升级治理之前,必须对 Kubernetes 的核心抽象层有精确的理解。这些概念构成了节点池巡检与排错的所有操作对象。以下按从最小调度单元到集群资源池的层次进行梳理。

2.1 核心概念定义

概念 API 对象(Group/Version) 定义 关键属性
Pod v1/Pod Kubernetes 中最小的可部署计算单元,封装一个或多个容器、存储资源与网络 IP。 spec.containers、status.phase、spec.nodeName
ReplicaSet apps/v1/ReplicaSet 确保指定数量的 Pod 副本始终运行。通过 spec.selector 匹配 Pod 标签,管理 Pod 的创建与删除。 spec.replicas、spec.selector.matchLabels、spec.template
Deployment apps/v1/Deployment 声明式管理 ReplicaSet 与 Pod 的更新策略。支持滚动更新、回滚、扩缩容。是生产工作负载的标准控制器。 spec.replicas、spec.strategy、spec.revisionHistoryLimit
Service v1/Service 为一组 Pod 提供稳定的网络端点与负载均衡。通过标签选择器将流量路由到后端 Pod。 spec.selector、spec.type(ClusterIP/NodePort/LoadBalancer)、spec.ports
Node v1/Node 集群中的工作节点(物理机或虚拟机),运行 kubelet、kube-proxy 与容器运行时。承载 Pod 的实际计算资源。 status.conditions、status.capacity、spec.taints
节点池(Node Pool) 云厂商扩展(如 cluster-api 或托管集群 CRD) 一组具有相同配置(实例规格、镜像、磁盘、标签、污点)的 Node 集合。用于实现节点分组管理与差异化运维。 spec.nodeTemplate、spec.autoscaling、status.nodes
排错视角提示: 节点池并非原生 Kubernetes API 对象,而是云厂商(如 GKE Node Pool、AKS Agent Pool、EKS Managed Node Group)或 Cluster API 提供的抽象。在巡检时,需要同时关注 v1/Node 状态与节点池 CRD 状态之间的映射关系。

2.2 概念关系:从 Deployment 到节点池的完整链路

下图展示了从用户声明 Deployment 到最终调度到节点池中某个 Node 的完整对象关系链。理解这条链路是定位滚动中断与升级故障的基础。

Kubernetes 核心概念关系图:Deployment 到节点池 Kubernetes 核心概念关系链路 Deployment spec.template ReplicaSet spec.selector + template Pod (副本组) 标签选择器 Service spec.nodeName Node 节点池标签/污点匹配 节点池 (Node Pool) 说明:Deployment 通过 ReplicaSet 控制 Pod 副本数;Pod 被调度到 Node 上;Node 按配置归属到节点池;Service 通过标签选择器将流量分发到 Pod。

2.3 关键关系详解

2.3.1 Deployment → ReplicaSet → Pod:三层控制链

  • Deployment 不直接管理 Pod。 每次更新(镜像、环境变量等)时,Deployment 会创建一个新的 ReplicaSet,并逐步增加新 ReplicaSet 的副本数、减少旧 ReplicaSet 的副本数——这就是滚动更新的本质。
  • ReplicaSet 通过标签选择器(selector) 匹配 Pod 的 labels。如果手动修改 Pod 标签使其脱离选择器,ReplicaSet 会立即创建新 Pod 补足副本数。
  • Pod 的 status.phase 反映其生命周期:Pending、Running、Succeeded、Failed、Unknown。排错时,Pending 通常意味着资源不足或调度失败。
滚动中断关键点: 当 Deployment 执行滚动更新时,如果新 ReplicaSet 的 Pod 无法通过就绪探针(readinessProbe),旧 ReplicaSet 不会缩容,导致新旧 Pod 共存,可能引发流量异常。这是节点池巡检时需要重点关注的场景。

2.3.2 Service → Pod:流量路由

  • Service 通过 spec.selector 匹配 Pod 标签,自动将 Endpoints 或 EndpointSlice 更新为匹配 Pod 的 IP 列表。
  • 滚动更新期间,旧 Pod 被移除、新 Pod 加入,Service 的 Endpoints 会动态变化。如果新 Pod 就绪延迟,可能导致部分请求超时。
  • 排错命令: kubectl get endpoints <service-name> 可查看当前后端 Pod IP 列表,确认是否有异常 Pod 被路由。

2.3.3 Node → 节点池:分组与隔离

  • Node 通过标签(labels)和污点(taints) 标识其所属节点池。例如:cloud.google.com/gke-nodepool: pool-1。
  • 节点池通常具有统一的实例规格(如 4vCPU/16GB),便于资源管理与自动扩缩容。巡检时需确认节点池内所有 Node 的 status.capacity 是否一致。
  • 节点池升级 是集群升级的最小操作单元。升级时,节点池内的 Node 会逐个被腾空(drain)并替换为新版本镜像。

2.4 概念关系总结表

关系对 关联方式 排错关注点
Deployment → ReplicaSet spec.template 生成 ReplicaSet 模板 新 ReplicaSet 是否成功创建;旧 ReplicaSet 是否正常缩容
ReplicaSet → Pod 标签选择器 + PodTemplate Pod 是否全部 Running;是否有 CrashLoopBackOff
Service → Pod 标签选择器 → Endpoints Endpoints 是否包含目标 Pod IP;是否有未就绪 Pod 被路由
Pod → Node spec.nodeName 绑定 Pod 是否被调度到预期节点;节点资源是否充足
Node → 节点池 节点标签/污点 + 云厂商 CRD 节点池内 Node 版本是否一致;是否有异常 Node 未纳入池管理

2.5 节点池视角下的核心对象关系

下图从节点池运维角度,展示节点池、Node、Pod 与 Deployment 之间的依赖关系,以及升级时的影响范围。

节点池视角下的对象关系 节点池运维视角:对象依赖与升级影响范围 节点池 (Node Pool) Node-1 (v1.27.3) Node-2 (v1.27.3) Node-3 (v1.27.3) 管理 Node 集合 Pod-A (app=v1) Pod-B (app=v1) Pod-C (app=v1) 调度 Deployment 控制 升级影响范围: 当节点池升级(如 kubelet 版本 v1.27.3 → v1.28.0)时,节点池内所有 Node 会逐个被腾空并替换。运行在这些 Node 上的 Pod 会被重新调度到其他节点池或等待新 Node 就绪。如果 Deployment 的 Pod 副本数不足或节点池资源不够,滚动更新可能中断。
节点池巡检关键指标:
  • 节点池版本一致性: 同一节点池内所有 Node 的 kubelet 版本必须一致。版本不一致会导致调度异常与升级失败。
  • 节点池资源水位: 检查 kubectl top node 确认 CPU/内存使用率。如果节点池资源接近饱和,滚动更新时新 Pod 可能无法调度。
  • Pod 分布均衡性: 使用 kubectl get pods -o wide 查看 Pod 是否均匀分布在节点池内的 Node 上。避免单点故障。

2.6 核心概念在排错中的实际应用

在后续章节的巡检与排错场景中,你会反复用到以下映射关系:

  • Pod 调度失败 → 检查 Node 资源与污点: kubectl describe pod <pod-name> 查看 Events 中的调度错误,然后检查对应 Node 的 status.capacity 与 spec.taints。
  • 滚动更新卡住 → 检查 ReplicaSet 与 Pod 就绪状态: kubectl rollout status deployment <deploy-name> 结合 kubectl get rs 查看新旧 ReplicaSet 的副本数变化。
  • 节点池升级失败 → 检查节点池 CRD 与 Node 版本: 对比节点池期望版本与 Node 实际 kubelet 版本,确认是否有 Node 未完成升级。
快速记忆口诀: “Deployment 管版本,ReplicaSet 管数量,Pod 管运行,Service 管流量,Node 管资源,节点池管分组。” 巡检时按这个链路逐层排查,不会遗漏关键点。