K8s---组件

K8s官网---组件

本文是一份 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 ,它把数据存到 etcdscheduler 给新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 下发指令)
相关推荐
行业研究员1 小时前
云原生数据库推荐排行与选型
数据库·云原生·云原生库
Maynor9961 小时前
「原子弹爆炸」级别:Astra 复刻游戏合集(含实机截图)
java·linux·运维·数据库·gpt·游戏
陈皮糖..1 小时前
基于 Kubernetes 与 GitLab CI/CD 的云原生自动化交付平台
运维·ci/cd·云原生·架构·kubernetes·自动化·gitlab
脚踏实地,坚持不懈!1 小时前
Android 系统工程师(性能/功耗/稳定性)岗位问题深度解析:从内核源码到实战排查(完善版)
android·linux·运维·服务器
0+1111 小时前
Linux --进程信号
linux·运维·服务器
Lethehong2 小时前
服务器越来越多怎么统一监控?Beszel 接入 Agent、SMTP 告警与公网访问
运维·服务器
gs801402 小时前
Docker Desktop 报 Wsl/CommandTimedOut、wsl -l -v 卡死、0x80080005 的完整排查与解决
运维·docker·容器
其实防守也摸鱼2 小时前
CVE / NVD 漏洞数据库详解:从入门到实战
大数据·运维·人工智能·web安全·自动化
分布式存储与RustFS2 小时前
把 RustFS 当 ClickHouse 的 S3 存储盘:冷热分层落对象存储
云原生·开源·对象存储·分布式存储·s3·rustfs·性能基准