运维小白看这里,Kubernetes架构那些你得懂的东西,不然真难入门
- 问答
- 2026-01-26 09:12:40
- 6
运维小白看这里,Kubernetes架构那些你得懂的东西,不然真难入门 主要综合了Kubernetes官方文档和常见的入门解读,用大白话讲给你听)
别怕,你可以把Kubernetes(简称K8s)想象成一个数据中心的“操作系统”,它干的核心活儿就是管理你那些用容器(比如Docker打包的应用)跑的服务,确保它们能按照你希望的样子去运行、扩容和保持健康。
它的架构很像一个“大脑”和一群“工人”的组合。
指挥中心:Master节点(大脑)

Master节点是集群的“总指挥部”,一般由几台机器组成(生产环境为了高可用会多台),它里面住着几个核心“官员”,各司其职:
- API Server(总服务台/唯一入口):这是整个集群的“门面”和“通讯中心”,你想对集群做任何操作,比如部署应用、查看状态,都必须通过它(用kubectl命令或发送请求),它负责验证你的身份、处理你的指令,并更新整个集群的状态。(来源:K8s官方文档核心组件描述)
- etcd(超级大账本):这是集群的“记忆库”,一个高可用的键值数据库,集群里所有重要的配置数据、状态信息(比如哪个应用跑在哪台机器上,有多少个副本)都安全地存在这里,API Server一有状态变更,就会写到etcd里,它保证了集群状态的一致性。
- Scheduler(调度大师):这位是“包工头”,当你说要运行一个服务(比如需要3个副本)时,API Server收到指令,但还没决定具体派到哪台机器去跑,这时Scheduler就出马了,它根据每台“工人”机器的资源情况(CPU、内存够不够)、你的要求(比如要挂载特定硬盘),精心挑选出最合适的机器来跑这个任务。
- Controller Manager(管控大叔/一群幕后管家):它不是一个人,而是一组“管家”的集合,这些管家们时刻不停地对比“当前状态”(从etcd里看)和“你期望的状态”(比如你声明要3个副本),如果发现不对,就立刻动手纠正,负责副本的管家发现某个应用只剩2个副本了,它会立刻下令再启动1个,确保始终是你想要的3个,它管理着节点、副本、端点等各种东西。
干活的主力:Node节点(工人)
Node节点就是那些干实际工作的虚拟机或物理机,你的容器最终就是跑在这些机器上,每个Node上也有几个关键组件:

- Kubelet(车间主任):它是Node节点上的“一把手”,直接和Master节点通讯,负责接收从Master发来的任务(在这台机器上启动一个容器”),然后指挥本机的容器运行时去执行,它也像个监工,不断向Master汇报自己这台机器的健康状况和上面跑的任务状态。
- Container Runtime(容器引擎/具体干活的):真正负责拉取容器镜像、创建和运行容器的软件,比如Docker、Containerd等,Kubelet通过它来操作容器。
- Kube-Proxy(网络代理):它是集群里的“网络服务员”,负责维护节点上的网络规则,实现服务的网络访问,你访问一个服务(比如一个网站后端),kube-proxy会想办法把流量正确地转发到背后干活的、健康的容器上去,它让服务之间能够互相发现和通信。
你必须理解的几个核心概念
光知道组件还不够,你得明白K8s组织工作的方式:
- Pod(豆荚/最小工作单元):这是K8s里最小的调度和管理单位,一个Pod里可以装一个或多个关系紧密的容器(比如一个应用容器和一个辅助它收集日志的容器),它们共享网络和存储空间,就像住在一个小房间里。(来源:K8s官方Pod概念文档) 你的应用最终是在Pod里运行的。
- Deployment(部署管理器):这是你最常用的一个“蓝图”,你不需要直接去管单个Pod,而是通过定义一个Deployment(写明要用什么镜像、要几个副本),Deployment控制器(就是Controller Manager里的一个管家)会确保始终有指定数量的Pod副本在运行,如果某个Pod挂了,它会自动创建一个新的;你想升级应用,它也能帮你滚动更新。
- Service(服务/稳定的访问入口):Pod是“ ephemeral ”(短暂的),可能会被销毁重建,IP地址会变,Service就是为解决这个问题而生的,它定义了一个稳定的访问策略(比如一个固定的IP和端口),并充当了一个负载均衡器,将访问它的流量,自动分发到后端匹配的所有健康Pod上,这样,其他服务要访问你的应用,只需要找对应的Service就行了,不用关心后面具体是哪些Pod在干活。
- Namespace(命名空间/虚拟集群):这就像一个“资源文件夹”,把集群在逻辑上划分成不同的空间(比如按项目分:开发环境、测试环境;按团队分),大部分资源都在Namespace里,方便管理和隔离。
你想在K8s里跑一个应用,大致流程是:你写一个Deployment的配置文件(告诉K8s要什么),通过kubectl命令发给API Server。Scheduler 看到这个任务,挑一个合适的Node节点,那个节点的Kubelet 接到指令,指挥Container Runtime 拉镜像启动一个Pod。Controller Manager 里的管家们会持续监督,确保Pod数量一直符合要求,为了能让别人访问到这个应用,你还需要定义一个Service,Kube-proxy 会帮你把访问流量导到对应的Pod上去,而所有这些元信息,都安全地保存在 etcd 里。
先把“大脑(Master)”和“工人(Node)”的关系,以及Pod、Deployment、Service这几个最核心的概念搞明白,你就算成功推开Kubernetes大门了,别一开始就钻太深的细节,动手搭个简单环境,照教程部署个nginx服务,感受一下这个流程,理解起来会快很多。
本文由邝冷亦于2026-01-26发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:https://ixpr.haoid.cn/wenda/86126.html
