在云原生技术飞速发展的今天,“K8”几乎成了基础设施领域的代名词。无论是互联网大厂还是正在转型的传统企业,Kubernetes(通常因其名称中的K和s之间有8个字母,而简称为K8s)都已经成为了编排容器的标准。但很多人虽然在使用K8s,却并不清楚它到底是如何工作的,更不清楚其庞大的底层架构是如何构建的。
作为“圈子科普”类的深度解析,本文将抛开琐碎的安装运维,带你从架构层面一探K8s究竟是一个怎样的底层系统。
一、 宏观视角:K8s的双重架构
要理解K8s的底层架构,首先要明白它的核心设计哲学:控制面与数据面分离。
如果把一个Kubernetes集群想象成一家公司,那么:
控制面就是公司的管理层、董事会和中枢大脑,负责制定战略、调度资源和监控状态。
数据面就是一线的员工和执行者,负责实际跑业务代码。
K8s的底层架构正是围绕这两个核心部分展开的,并通过API Server作为唯一的通道实现双向通信。
二、 控制面:中枢神经系统
控制面是K8s集群的大脑,它负责维护集群状态。K8s极其依赖控制面组件的协同工作,主要有以下几个核心部分:
API Server (API Server)
API Server是K8s集群的统一入口点。所有的请求(无论是人工命令行输入的还是程序代码调用)都必须经过它。
核心作用: 它不负责业务逻辑计算,而是负责“录备忘录”和“发通知”。数据库(Etcd)里有数据变更,它通知Scheduler或Controller;Scheduler调整了调度策略,它通知Kubelet。
Etcd (分布式键值存储)
这是一个高可用的键值数据库。K8s认为“一切皆配置,一切皆状态”,而Etcd就是存储这些状态的地方。
核心作用: 它是K8s的单一事实来源(Single Source of Truth)。Pod的IP地址、节点的健康状态、配置的存储卷信息,全部都存放在Etcd中。为了保证高可用,通常会有多个Etcd节点组成集群。
Scheduler (调度器)
这是一个“上帝视角”的组件。当一个新的Pod被创建时,它不知道该去哪个节点上运行。

核心作用: 调度器会监听API Server关于新Pod的信息,浏览集群现有的节点资源(CPU、内存、磁盘I/O),结合预先定义的调度策略(亲和性、反亲和性等),计算出最优的运行节点,并将该信息写入Etcd。
Controller Manager (控制器管理器)
K8s的核心思想叫“声明式API”。意思是用户告诉K8s“我想要一个Nginx副本数为3的Service”,Controller Manager的工作就是盯着Etcd,发现“愿望”和“现实”不符时,确保最终状态达成。
核心作用: 它由多个控制器组成(如Replication Controller、Node Controller、Endpoints Controller等),负责不断的修正集群状态。
三、 数据面:具体的执行单元
如果说不控制面是做什么的,那么数据面实实在在地在物理机上干着活。每个节点(Node)上都有一个组件,构成了数据面:
Kubelet
这是节点上的“大管家”。它是一个运行在每个Node上的常驻进程。
核心作用: 它接收来自API Server的指令,告诉底层的容器运行时(如Containerd或Docker)去拉取镜像、启动/停止容器,并监控容器的健康状态。
Kube-proxy
这是一个网络代理。在K8s中,每个Pod都有独立的IP(虽然只是集群内的IP)。
核心作用: 为了让外部服务能通过一个固定的Service IP访问到后端的无数个Pod,Kube-proxy负责在Node上维护网络转发规则(通常是iptables或IPVS),确保流量被正确负载均衡到各个Pod上。
Container Runtime Interface (CRI
容器运行时接口)
这是K8s与底层操作系统之间的一座桥梁。
* 核心作用: K8s并不直接和Docker打交道(虽然早期是这样),而是一套标准的CRI接口。这意味着K8s可以抽离出通用的容器管理逻辑,而在底层支持多种运行时(Containerd, CRI-O等)。这是K8s实现轻量化和灵活性的重要底层设计。
四、 它是如何“底层”的?
通过以上解析,我们可以清晰地看到,云原生Kubernetes的底层架构并非凭空产生,它是构建在以下三层基础之上的:
标准接口层(CRI): 规范了如何调用容器运行环境。
分布式存储与控制层(Etcd + 控制面): 提供了去中心化、高可用的决策和记忆机制。
标准化通信层(API Server): 将异构的硬件和网络抽象为统一的K8s原生对象。
云原生Kubernetes本质上是一个“分布式操作系统”。它不是在裸机上跑代码,而是在裸机上跑容器运行时,在容器运行时之上通过K8s的底层架构重新定义了资源分配、服务发现和状态管理的逻辑。
这正是为什么K8s能成为云原生基石的原因——它用一套标准化的底层架构,屏蔽了底层异构硬件的复杂性,让应用开发者和运维人员能够专注于业务本身。
感兴趣的伙伴可以在下方添加一下,也是为了大家有个属于纯爱好者的、纯净的平台来交流沟通、入圈、寻找自己的partner,少走弯路、少踩坑,毕竟鱼龙混杂、知己难觅~
(备用微信号: domsm789 )
