在K8S中,主节点的作用是什么?

在 Kubernetes(K8S)中,主节点(Master Node) 是集群的控制中心,负责管理整个集群的状态、调度决策、API 访问和安全策略。它不运行用户的应用容器(Pod),而是运行一系列关键的控制平面(Control Plane)组件,确保集群的稳定运行和自动化管理。


主节点的核心作用

1. 集群管理与协调

  • 全局大脑:主节点是集群的决策中心,所有集群级别的操作(如创建/删除资源、扩缩容、更新配置)都通过主节点协调。
  • 状态存储:通过 etcd 存储集群的所有持久化状态(如 Pod、Service、Node 等对象的状态),确保数据一致性和高可用性。

2. API 暴露与访问控制

  • 唯一入口kube-apiserver 组件运行在主节点上,提供 Kubernetes RESTful API,是所有用户(kubectl)、工作节点(Kubelet)和其他组件访问集群的唯一入口。
  • 安全网关:处理认证(Authentication)、授权(Authorization)和准入控制(Admission Control),确保集群操作的安全合规。

3. 资源调度

  • 智能调度器kube-scheduler 组件监听未调度的 Pod,根据资源需求、节点负载、亲和性规则等策略,选择最优工作节点运行 Pod。

4. 集群状态维护

  • 控制器管理kube-controller-manager 运行一系列控制器(Controller),持续监控集群状态并驱动其向期望状态收敛:
    • 节点控制器(Node Controller):监控节点健康状况(如宕机时标记 NotReady)。
    • 副本控制器(Replication Controller):确保 Deployment/ReplicaSet 的 Pod 副本数符合预期。
    • 服务控制器(Service Controller):管理 Service 与 Endpoints 的映射关系。
    • 其他控制器(如命名空间控制器、服务账号控制器等)。

5. 网络策略与通信管理

  • 网络规则:控制平面组件(如 kube-controller-manager)负责配置 Service 的负载均衡规则(通过 Cloud Provider 或 kube-proxy)。
  • DNS 服务CoreDNS 通常部署在主节点上,为集群提供域名解析服务(如 my-svc.my-namespace.svc.cluster.local)。

6. 高可用与容灾

  • 多主节点架构:生产集群通常部署多个主节点(通过负载均衡暴露 API),避免单点故障:
    • etcd 以分布式集群运行,保障数据一致性(Raft 协议)。
    • kube-apiserver 可水平扩展,多个副本同时服务。
    • kube-schedulerkube-controller-manager 采用领导者选举机制,同一时间仅一个副本处于活跃状态。

主节点核心组件

组件 作用
kube-apiserver 集群 API 入口,处理所有操作请求并读写 etcd
etcd 分布式键值数据库,存储集群所有状态数据(唯一数据源)。
kube-scheduler 为新创建的 Pod 选择最优工作节点。
kube-controller-manager 运行各类控制器,确保集群实际状态与期望状态一致。
cloud-controller-manager (可选)对接云厂商 API,管理节点、路由、负载均衡等云资源。

主节点 vs 工作节点

特性 主节点(Master Node) 工作节点(Worker Node)
角色 控制平面(集群管理) 数据平面(运行业务负载)
运行组件 kube-apiserver, etcd, scheduler, controller-manager kubelet, kube-proxy, 容器运行时(如 containerd)
运行业务 Pod ❌ 一般不运行用户 Pod(可通过污点禁止调度) ✅ 运行用户 Pod
高可用要求 ✅ 需多副本部署 ⚠️ 可扩展但非必须

为什么主节点至关重要?

  1. 单点故障风险:主节点宕机将导致集群无法管理(无法创建/修改资源),但已运行的 Pod 通常不受影响(工作节点仍继续运行容器)。
  2. 安全核心:所有认证、授权策略由主节点执行,一旦被攻破,集群将完全失控。
  3. 调度决策:无主节点则新 Pod 无法调度,自动扩缩容(HPA)等功能失效。

💡 生产环境建议

  • 至少部署 3 个主节点以实现高可用(奇数台避免脑裂)。
  • 使用负载均衡器暴露 kube-apiserver
  • 为主节点设置 node-role.kubernetes.io/control-plane:NoSchedule 污点,禁止用户 Pod 调度。

总结

主节点是 Kubernetes 集群的“指挥中心”,负责:
✅ 提供集群 API 入口和安全控制
✅ 存储全局状态(通过 etcd)
✅ 调度 Pod 到工作节点
✅ 通过控制器维护集群状态
✅ 保障集群高可用与自动化运维

理解主节点的作用,是掌握 Kubernetes 架构设计的核心基础!

posted @ 2025-08-13 14:21  天道酬勤zjh  阅读(29)  评论(0)    收藏  举报