本文是一份 K8s 组件学习笔记,覆盖了:
1.控制平面 5 大组件(apiserver、etcd、scheduler、controller-manager、kubectl)
2.节点 3 大组件(kubelet、kube-proxy、容器运行时)
3.插件与附件(CoreDNS、Ingress、CNI、Dashboard、监控、日志)
4.各组件的管理关系图(systemd → kubelet → Pod)
如果你是正在学 K8s 的运维,或者刚接手集群不久,看完这篇至少能让你少踩坑。

1.控制平面组件(Control Plane Components)
作用:为集群做全局决策(调度、检测、响应)。
| 组件 | 一句话核心作用 | 关键补充 |
|---|---|---|
| kubectl | 命令行工具,用户通过它向集群发指令 | 是客户端工具,不是集群内部组件 |
| kube-apiserver | 集群的唯一入口,所有操作都得经过它 | 负责认证、授权、准入控制 ,是控制平面的前端 |
| etcd | 数据库,存储集群所有数据 | 分布式、高可用,基于 RAFT协议 保证一致性 |
| kube-scheduler | 调度器 ,为新Pod选一个最合适的节点运行 | 考虑资源、约束、亲和性等因素 |
| kube-controller-manager | 控制器总管 ,确保集群状态始终符合期望 | 负责副本数、故障恢复、滚动更新等 |
你通过 kubectl 发指令给 kube-apiserver ,它把数据存到 etcd ,scheduler 给新Pod找节点,controller-manager 确保Pod数量始终正确。
2.节点组件(Node Components)
作用 :每个节点上都要运行的组件,负责真正把Pod跑起来。
| 组件 | 一句话核心作用 | 关键补充 |
|---|---|---|
| kubelet | 节点的"包工头 ",负责创建/管理/销毁Pod里的容器 | 只认API Server的指令;不管理非K8s容器(如手动docker run的) |
| kube-proxy | 节点的"网络规则维护员 ",负责服务发现+负载均衡 | 维护iptables/IPVS规则,让流量能正确找到Pod;理论上可以不用(由其他网络插件替代) |
| 容器运行时 | 真正启动/停止容器的底层软件 | 如 containerd、CRI-O ,必须实现CRI接口 |
kubelet 接到API Server指令 → 调用容器运行时 启动容器 → kube-proxy 写好网络规则让别人能访问到这个Pod。
3.插件与附件(Addons)
本质 :它们都是以Pod形式运行 在 kube-system 命名空间下的扩展组件,非必需,按需安装 。
("插件"和"附件"在英文里都是 Addons,只是书中按功能分了类),官网也没有分类,这里分一下方便理解
3.1插件(核心功能)
| 插件 | 一句话作用 | 关键说明 |
|---|---|---|
| CoreDNS | 集群内部的DNS电话簿 | 让Pod能通过服务名 (如 my-service)访问彼此,而不是靠会变的IP |
| Ingress Controller | 7层(HTTP/HTTPS)入口网关 | Service做的是4层转发(IP+端口),它让你能按域名/URL路径路由流量到不同服务 |
| 网络插件(CNI) | 给Pod分配IP并打通网络 | 实现K8s网络模型的底层保障,没有它Pod无法跨节点通信 |
3.2附件(运维工具)
| 附件 | 一句话作用 | 关键说明 |
|---|---|---|
| Dashboard | K8s的图形化控制台 | 在浏览器里管理集群,适合日常巡检 |
| Federation | 多集群统一管理 | 跨云/跨机房,把多个K8s集群拼成一个大集群 |
| 容器资源监控 | 收集并展示CPU/内存等指标 | 通常由 Prometheus + Grafana 实现 |
| 集群层面日志 | 集中收集所有Pod的日志 | 把分散在各节点的日志汇总到一起(如 EFK/ELK) |
手写笔记:
(帮助理解& 解答一些困惑)

各组件管理关系
text
节点操作系统
└── systemd(系统进程管理器)
├── 管理 kubelet 进程(系统服务)
├── 管理 containerd 进程(系统服务)
└── 管理 kube-proxy 进程(系统服务,传统安装方式)
│
▼
kubelet(启动后,开始管理 Pod)
├── 管理 静态 Pod(控制平面组件)
│ └── apiserver、etcd、scheduler、controller-manager
│ (YAML 在 /etc/kubernetes/manifests/)
│
└── 管理 普通 Pod(插件/业务应用)
└── CoreDNS、Calico、Nginx...
(通过 API Server 下发指令)