云原生核心技术科普文档
一、K8S云原生核心组件Kubernetes(K8S)作为云原生生态的核心编排标准,其组件体系分为原生核心组件(负责基础容器编排能力)、生态扩展插件(补足场景化能力)以及配套工具链(提升运维效率)三个层级。1.原生核心组件K8S原生组件分为控制平面(集群大脑,负责全局调度和状态管理)、工作节点(负责实际运行容器应用)两个部分:1.1控制平面(ControlPlane)组件名称核心功能关键特性kube-apiserver集群唯一入口,处理所有RESTAPI请求,负责认证、授权、准入控制唯一直接与etcd交互的组件,支持多实例水平扩展实现高可用etcd分布式键值存储数据库,持久化保存集群所有配置、状态数据基于Raft一致性算法保证数据可靠,通常以3/5节点集群部署kube-scheduler为新创建的Pod分配合适的工作节点调度策略综合考虑节点资源余量、Pod亲和性、污点容忍等规则kube-controller-manager运行各类控制器进程,持续对比集群实际状态与期望状态,自动修正偏差内置节点控制器、副本控制器、端点控制器、服务控制器等cloud-controller-manager(可选)对接公有云基础设施API,管理云厂商提供的负载均衡、存储卷、弹性节点等资源仅在公有云部署场景下需要,实现K8S与云平台能力的解耦1.2工作节点(WorkerNode)组件名称核心功能关键特性kubelet运行在每个节点的代理,与控制平面通信,管理本节点Pod的全生命周期负责拉取镜像、挂载存储、上报节点/Pod资源状态,不管理非K8S创建的容器kube-proxy维护节点网络规则,实现Service的流量转发与负载均衡支持iptables(默认)、IPVS(高性能,支持更多调度算法)两种工作模式容器运行时实际运行容器的底层软件主流选择为containerd,符合CRI(容器运行时接口)规范,替代早期的Docker1.3核心组件职责详解所有核心组件的职责设计严格遵循分层解耦、高可用、声明式API三大架构原则,各组件仅聚焦自身核心能力,通过kube-apiserver实现协同,具体职责如下:1.3.1控制平面组件(全局调度管理层,部署在Master节点)控制平面组件是集群的大脑,负责全局状态管理、调度决策和异常修正,不直接处理业务流量:组件名称核心职责协同关系kube-apiserver集群唯一的API入口与通信枢纽:1.处理所有外部请求(用户/管理工具操作)和内部组件通信请求2.负责全链路的身份认证、权限校验、准入控制,拦截非法请求3.是唯一能够直接读写etcd的组件,所有集群状态变更都需要通过它提交所有组件都只能通过kube-apiserver交互,不允许组件间直接通信etcd集群唯一的状态存储数据库:1.持久化存储所有集群资源的配置、状态数据(包括节点信息、Pod配置、Service规则、访问策略等)2.基于Raft一致性算法保证多节点部署时的数据强一致,是集群的唯一事实来源3.内置版本控制机制,支持资源变更的历史追溯与回滚仅接受kube-apiserver的读写请求,其他组件需要访问数据必须通过apiserver中转kube-scheduler智能调度器:1.持续监听状态为「未调度」的Pod资源2.执行两级调度策略:•预选阶段:过滤不符合资源要求、亲和性规则、污点策略的节点•优选阶段:对剩余节点按资源利用率、拓扑分布等维度打分,选出最优节点3.将Pod与目标节点的绑定关系提交到apiserver,完成调度决策仅对接kube-apiserver,不直接和节点、kubelet交互kube-controller-manager控制器集合(状态修正引擎):运行多个独立的控制器进程,持续监听集群资源状态,对比实际运行状态和用户声明的期望状态,自动执行修正操作,常见控制器职责:•节点控制器:监控节点健康状态,节点故障时自动疏散该节点上的Pod•副本控制器:保证Deployment/StatefulSet等工作负载的Pod副本数符合用户声明的数量•端点控制器:维护Service和后端PodIP的对应关系•服务控制器:管理负载均衡、Ingress等流量资源的生命周期所有控制器都通过apiserver监听资源变化,修正结果也通过apiserver提交cloud-controller-manager(可选)公有云对接组件:对接云厂商基础设施API,实现K8S与云平台能力解耦,负责管理云厂商提供的弹性节点、负载均衡、云存储卷等资源,仅在公有云部署场景需要仅和apiserver、云厂商API交互,不感知集群内部细节1.3.2工作节点组件(业务负载运行层,部署在所有Worker节点)工作节点组件负责实际运行业务容器,保障本地网络、存储、运行时环境正常:组件名称核心职责协同关系kubelet节点本地代理:1.持续监听apiserver下发到本节点的Pod配置2.调用容器运行时完