一、K8s 核心组件
Kubernetes(简称 K8s)采用 Master / Node 架构模式。一个 K8s 集群至少需要一个 Master 节点和一个 Node 节点:Master 节点为控制节点,负责整个集群的管理与控制,主要用于暴露 API、调度任务和管理 Node 节点;而 Node 工作节点负责运行各种任务容器。
Master 组件
- ApiServer:资源操作的唯一入口,接收用户输入的命令(创建、查询、删除),提供认证、授权、API 注册和发现等机制
- Scheduler:负责集群资源调度,按照预定的调度策略将 Pod 调度到相应的 Node 节点上
- Controller-Manager:负责维护集群的状态,比如程序部署安排、故障检测、自动扩展、滚动更新等(负责发送指令到对应的 Node 节点)
- Etcd:负责存储集群中各种资源对象的信息(Node 的数量,Pod 的 CPU、内存等)
Node 组件
- Kubelet:负责维护容器的生命周期,即通过控制 Docker,来创建、更新、销毁容器(接受 Controller-Manager 指令、执行,并返回执行结果)
- KubeProxy:负责提供集群内部的服务发现和负载均衡
- Docker:负责节点上容器的各种操作
工作原理
下面以部署一个 Nginx 服务为例,说明 K8s 的工作流程:
- 一个 Nginx 服务的安装请求会首先被发送到 Master 节点的 ApiServer 组件
- ApiServer 组件会调用 Scheduler 组件来决定到底应该把这个服务安装到哪个 Node 节点上
- 此时,它会从 Etcd 中读取各个 Node 节点的信息,然后按照一定的算法进行选择,并将结果告知 ApiServer
- ApiServer 调用 Controller-Manager 去调度 Node 节点安装 Nginx 服务
- Kubelet 接收到指令后,会通知 Docker,然后由 Docker 来启动一个 Nginx 的 Pod
- Pod 是 Kubernetes 的最小操作单元,容器必须运行在 Pod 中
- 至此一个 Nginx 服务就运行了,如果需要访问 Nginx,就需要通过 Kube-Proxy 来对 Pod 产生访问的代理
二、K8s 核心概念
- Master:集群控制节点,每个集群至少需要一个 Master 节点负责集群的管控
- Node:工作负载节点,由 Master 分配容器到这些 Node 工作节点上,然后 Node 节点上的 Docker 负责容器的运行
- Pod:Kubernetes 的最小控制单元,容器都运行在 Pod 中,一个 Pod 中可以有 1 个或者多个容器
- Controller:控制器,通过它来实现对 Pod 的管理,比如启动 Pod、停止 Pod、伸缩 Pod 的数量等
- Service:Pod 对外服务的统一入口,下面可以维护着同一类的多个 Pod
- Label:标签,用于对 Pod 进行分类,同一类 Pod 会拥有相同的标签
- NameSpace:命名空间,用来逻辑隔离 Pod 的运行环境
三、架构总结
K8s 的 Master/Node 架构实现了控制面与数据面的分离:Master 节点负责全局决策(调度、部署、响应集群事件),Node 节点负责实际运行工作负载。这种设计使得 K8s 具备强大的自动化运维能力——从自动调度、自动修复、滚动更新,到水平扩缩容,都通过声明式配置即可完成。
对于初学者来说,理解这七个核心概念(Master、Node、Pod、Controller、Service、Label、NameSpace)和 Master/Node 各组件的职责,就掌握了 K8s 的骨架。后续学习 Deployment、Ingress、ConfigMap、PVC 等高级资源时,本质上都是在这些基础概念之上的抽象与组合。
- THE END -
最后修改:2026年6月15日
共有 0 条评论