前言
Kubernetes 简称 K8s,是谷歌基于 Borg 开源的容器编排与集群管理系统,核心定位是:自动化部署、弹性伸缩、生命周期管控容器化应用,解决海量容器的调度、运维、高可用问题,是云原生技术体系的核心基石。
一、Kubernetes 核心架构
Kubernetes 采用经典的主从分布式架构,集群节点分为两大核心角色,所有组件各司其职、松耦合设计,整体架构无单点故障,支持无限水平扩容,核心架构遵循 控制面管理、数据面执行 的设计思想。
1.1 集群整体架构分层
- 控制平面(Control Plane / Master 节点):集群的「大脑」,负责全局决策、调度、管控、存储集群状态,不直接运行业务容器,可单节点/多节点高可用部署。
- 数据平面(Node / Worker 节点):集群的「手脚」,负责实际运行业务容器(Pod),接收控制平面的指令执行具体操作,可横向扩容任意数量。
- 通信规则:控制平面和数据平面之间通过
kube-apiserver单向通信,Node 节点主动向 Master 上报状态,Master 向 Node 下发指令,所有通信均基于 HTTPS 加密。
1.2 控制平面(Master)核心组件
所有组件为集群级核心服务,缺一不可,生产环境必须高可用部署,所有组件的配置和状态最终持久化到 etcd 中。
kube-apiserver:集群的唯一入口,所有操作(kubectl 命令、组件通信、Pod 调度)都必须经过该组件,核心能力:提供 RESTful API、权限认证、请求限流、数据校验、集群状态读写入口。是整个集群的「网关」,无它则集群瘫痪。etcd:集群的分布式键值数据库,K8s 的「数据仓库」,仅存储集群的核心元数据(Pod 信息、Service 配置、控制器状态、命名空间等),不存储业务数据。特性:强一致性、高可用、持久化存储,集群的核心状态源,etcd 丢失=集群彻底不可用。kube-scheduler:集群的调度器,核心职责:为待创建的 Pod 选择最合适的 Node 节点。调度逻辑为「预选 + 优选」两步走,最终输出最优的节点调度结果,仅做调度决策,不执行具体创建操作。kube-controller-manager:集群的控制器管理器,集合了所有核心控制器(Deployment/StatefulSet/Namespace/Node 等控制器),核心职责:监控集群状态、实现「声明式 API」的核心调和逻辑。核心工作模式:对比「期望状态」和「实际状态」,不一致时自动触发修复动作,比如 Pod 挂了自动重建、副本数不够自动扩容。cloud-controller-manager:云厂商适配组件,可选部署,负责对接公有云(阿里云/腾讯云/AWS)的云服务,实现云资源联动(比如创建 LoadBalancer 类型的 Service 自动申请云厂商的公网 IP),纯私有部署可忽略。
1.3 数据平面(Node/Worker)核心组件【业务执行节点】
每个 Node 节点都会独立运行以下组件,负责本节点的容器生命周期管理、网络、服务转发,所有组件为节点级服务,节点宕机仅影响本节点 Pod,不影响集群整体。
kubelet:Node 节点的核心代理,是 Master 和 Node 之间的「桥梁」,核心职责:接收kube-apiserver的指令,在本机创建/删除/启停 Pod、监控 Pod 健康状态、上报节点和 Pod 的状态到 Master。Pod 的全生命周期由 kubelet 全权管理,是 Node 节点的核心组件。kube-proxy:Node 节点的,核心职责:实现 K8s 的 服务发现和负载均衡能力。通过在节点上维护 iptables/ipvs 规则,将对 Service 的请求转发到后端的 Pod 上,支持 TCP/UDP 协议,保证服务的可用性和负载均衡。

