云原生是大型架构的核心,下面我重点详解K8S核心架构@mikechen
K8S架构
Kubernetes(简称 K8S),已成为容器编排的事实标准。
理解其核心架构有助于设计可靠、可扩展的云原生平台。
Kubernetes采用经典,的主从架构(Master-Node架构)。
整体架构,如下图所示:
整体分为控制平面(Master节点)、和数据平面(Node节点)。
Master节点(控制平面)
Master节点负责整个集群的管理和调度,相当于大脑和指挥中心,协调集群所有资源的分配和调度。
主要组件
kube-apiserver
API Server(kube-apiserver):集群的统一入口。
所有的 REST 操作都通过 API Server。
它是权威的数据访问点,负责认证、授权、资源校验和审计。
etcd
分布式键值存储,保存集群的全部状态数据(声明式的对象)。要求强一致性与高可用。
kube-scheduler
负责将待调度的Pod分配到合适的Node节点。
kube-controller-manager
运行多个控制循环(controllers),如 ReplicaSet、Node、Deployment、Namespace 等,负责将实际状态调整为期望状态。
Node节点(工作负载节点)
Node节点用于实际运行容器化的应用和服务,是集群的“执行层”,负责容器的创建、运行和维护。
主要组件:
kubelet
Node节点上的代理,负责接收Master下发的Pod调度指令,管理容器生命周期,实时汇报Pod状态。
kube-proxy
负责维护网络规则,实现集群内部和外部Pod间的通信与服务负载均衡。
容器运行时(如Docker、containerd),负责容器的实际创建和管理。
K8S工作原理
整体工作流程,如下:
用户通过kubectl
或API接口提交资源创建请求,首先到达kube-apiserver
。
API Server校验请求并更新etcd
存储资源状态。
kube-scheduler
监听到未调度的Pod,选择资源充足的Node并绑定。
kube-controller-manager
负责监控系统,自动启动副本、维护状态。
目标Node节点的kubelet
根据调度结果启动对应容器,并持续向Master报告运行状况。
kube-proxy
确保服务网络访问与负载均衡。