K8s常用组件学习笔记

K8s常用组件学习笔记

Kubernetes(简称K8s)是开源的容器编排平台,核心架构采用主从架构(控制平面+工作节点),所有组件协同实现容器的自动部署、调度、扩缩容、自愈及运维管理。本文整理K8s生产环境核心常用组件,涵盖架构核心组件、核心资源对象、必备附加组件,包含组件作用、核心特性、工作原理及使用场景,适合入门学习与实操复盘。

一、K8s整体架构概述

K8s集群分为两大核心层级,组件各司其职、解耦协作:

  1. 控制平面(Master节点):集群"大脑",负责全局调度、资源管理、状态监控、指令下发,不承载业务负载,保障集群稳定运行。

  2. 工作平面(Node节点):集群"执行端",负责运行具体的容器业务、执行控制平面下发的指令,处理实际业务流量。

二、控制平面核心组件(Master核心)

控制平面组件仅部署在Master节点(高可用集群多副本部署),是集群管理的核心,所有组件通过APIServer交互数据。

1. kube-apiserver(API服务)

核心定位:K8s集群的唯一入口、网关,所有组件交互的核心枢纽。

核心作用

  • 提供RESTful API接口,接收用户、其他组件的所有操作请求(创建/删除/更新资源);

  • 统一完成请求的认证、授权、准入控制,拦截非法操作;

  • 所有组件(控制器、调度器、kubelet)均通过APIServer读写数据,不直接交互;

  • 支持水平扩展,是集群唯一可横向扩容的控制平面组件。

核心特性:无状态组件、高可用、请求限流、资源校验,是集群最核心的基础组件。

2. etcd(分布式键值存储)

核心定位:K8s集群的"数据库",唯一持久化存储组件。

核心作用:存储集群所有资源的状态数据、配置数据、元数据(Node、Pod、Deployment、Service等所有资源信息)。

核心特性

  • 强一致性、高可用、分布式事务,保证集群数据精准同步;

  • 仅被kube-apiserver访问,其他组件不直接操作etcd;

  • 生产环境必须部署奇数节点(3/5节点),保障集群选举容错。

3. kube-controller-manager(控制器管理器)

核心定位:集群状态"运维管家",负责持续监控集群资源,驱动集群状态趋近用户期望状态。

核心原理:循环监控(Watch)资源实际状态,对比用户定义的期望状态,存在偏差则自动修复。

内置常用控制器

  • 节点控制器:监控Node节点状态,节点故障时自动标记、驱逐Pod;

  • 副本控制器:保障Deployment/RS的Pod副本数始终符合配置期望;

  • 端点控制器:维护Service与后端Pod的映射关系(Endpoints);

  • 命名空间控制器:管理命名空间生命周期,清理删除命名空间下的所有资源。

4. kube-scheduler(调度器)

核心定位:集群"资源分配官",负责新建Pod的节点调度决策。

核心作用:监听未绑定节点的新Pod,根据集群节点资源使用率、亲和性、污点、资源配额等规则,筛选最优Node节点,将Pod调度到对应节点运行。

调度流程:预选(过滤不符合条件节点)→ 优选(打分排序最优节点)→ 绑定节点。

5. cloud-controller-manager(云控制器管理器)

核心定位:云厂商资源与K8s集群的对接组件,仅云环境集群使用。

核心作用:联动云厂商负载均衡、弹性网卡、云服务器等资源,实现Service负载均衡、节点弹性伸缩等云原生能力。

三、工作节点核心组件(Node核心)

所有工作节点必须部署的组件,负责执行业务容器运行、上报节点状态、处理网络流量,是业务运行的基础。

1. kubelet(节点代理)

核心定位:每个Node节点的"代理管家",节点级核心组件。

核心作用

  • 与kube-apiserver通信,接收控制平面下发的Pod创建、删除、更新指令;

  • 管理节点上所有Pod的生命周期:拉取镜像、启动容器、健康检查、重启异常容器;

  • 定期上报节点、Pod的资源状态、运行状态到控制平面;

  • 执行容器的资源配额限制(CPU、内存)。

2. kube-proxy(网络代理)

核心定位:集群网络流量转发组件,保障集群内外、Pod之间网络通信。

核心作用

  • 监听Service和Endpoints资源变化,实时维护节点的路由规则、iptables/ipvs规则;

  • 实现Service的负载均衡、流量转发,支持Pod集群内互通、外部访问;

  • 支持三种模式:userspace(老旧)、iptables(默认)、ipvs(高性能生产首选)。

3. 容器运行时(Container Runtime)

核心定位:容器运行的底层依赖,负责真正启动、运行容器。

常用类型

  • Docker(传统主流,旧版本K8s默认);

  • containerd(新版K8s默认,轻量化、高性能);

  • CRI-O(专用K8s容器运行时)。

核心作用:镜像拉取、容器创建、启动、停止、销毁,实现容器资源隔离。

四、K8s核心资源组件(常用业务资源)

K8s通过资源对象定义业务,以下为日常开发、运维最常用的核心资源组件。

1. Pod(最小调度单元)

K8s最小的资源调度单元,一个Pod包含一个或多个紧密耦合的容器,共享网络、存储、命名空间资源。

核心特性:短暂性(可随时重建)、最小部署单元、不直接管理,通过控制器调度。

2. Deployment(无状态应用控制器)

最常用核心控制器,用于管理无状态应用(Nginx、后端服务等)。

核心能力:副本管理、滚动更新、版本回退、自动扩缩容、故障自愈。

底层依赖:通过ReplicaSet(副本集)间接管理Pod,记录版本历史,支持迭代更新。

3. StatefulSet(有状态应用控制器)

专门管理有状态应用(MySQL、Redis、Zookeeper等)。

核心特性:Pod名称固定、有序部署/销毁、稳定网络标识、持久化存储独立绑定Pod,重建后数据不丢失。

4. DaemonSet(节点守护控制器)

确保集群每个符合条件的节点运行一个Pod副本。

使用场景:节点监控、日志收集(ELK)、网络插件、安全代理等全局节点级服务。

5. Service(服务暴露与负载均衡)

为一组Pod提供统一访问入口,解决Pod动态变化导致的访问不稳定问题。

常用类型

  • ClusterIP(默认):集群内部访问,仅内网互通;

  • NodePort:节点端口暴露,外网可通过节点IP+端口访问;

  • LoadBalancer:云环境专属,对接云负载均衡,公网统一入口。

6. Ingress(七层路由网关)

统一管理HTTP/HTTPS七层流量,实现域名路由、路径转发、SSL证书配置、限流熔断。

优势:替代大量NodePort,统一入口、规范域名管理、节省端口资源,生产环境必备。

7. ConfigMap/Secret(配置与密钥管理)

  • ConfigMap:存储非敏感配置(配置文件、环境变量、脚本),明文存储;

  • Secret:存储敏感数据(密码、密钥、令牌、证书),Base64加密存储,保障数据安全。

核心作用:配置与容器解耦,无需重新打包镜像即可修改业务配置。

五、集群必备附加组件(生产刚需)

1. CoreDNS(集群DNS服务)

集群核心域名解析组件,默认部署在集群内。核心作用:实现Service、Pod的域名解析,支持集群内部服务通过域名互通,替代传统IP访问,适配Pod动态变化特性。

2. Metrics-Server(监控指标采集)

集群资源指标采集组件,替代老旧Heapster。核心作用:采集节点、Pod的CPU、内存、磁盘资源使用率,为kubectl top、HPA自动扩缩容提供数据支撑。

3. Ingress-Nginx(Ingress实现组件)

Ingress的具体实现控制器,通过Nginx实现七层流量转发,是生产环境最常用的入口网关组件。

4. Prometheus+Grafana(监控可视化)

生产环境标准监控组件:Prometheus负责采集集群、组件、业务指标,Grafana负责可视化展示、配置告警,实现集群全维度监控运维。

六、核心学习总结

  1. 控制平面:管全局、无业务负载,APIServer入口、etcd存数据、控制器控状态、调度器分资源;

  2. 工作节点:执行业务、跑容器,kubelet管Pod、kube-proxy管网络、运行时启容器;

  3. 业务资源:Deployment跑无状态、StatefulSet跑有状态、Service管访问、Ingress管路由;

  4. 附加组件:DNS保障通信、Metrics支撑运维、监控保障集群稳定。

相关推荐
星恒随风9 小时前
从零开始理解 ResNet(上):为什么 CNN 需要“残差连接”?
人工智能·笔记·神经网络·学习·cnn
z小猫不吃鱼9 小时前
08 BERT 论文精读:双向 Transformer 如何学习语言表示?
学习·bert·transformer
shuaiqinke9 小时前
【分享】医维度解剖 3D人体模型 解剖学习超直观
学习·3d
星秀日9 小时前
rust学习入门
开发语言·学习·rust
Wils0nEdwards9 小时前
claude.md 使用方法
笔记
库奇噜啦呼9 小时前
【iOS】源码学习-类的加载
学习·ios·cocoa
Engineer邓祥浩9 小时前
宏观认知(1):AI 是什么——吴恩达《AI for Everyone》Week1 学习笔记
人工智能·笔记·学习
暴躁小师兄数据学院10 小时前
【AI大模型应用开发工程师特训笔记】第04讲(第五章):条件判断与流程控制
大数据·人工智能·python·学习
我是一只码蚁10 小时前
记一次苍穹外卖项目 Maven 编译报错的排查与解决全过程
java·经验分享·笔记·后端·架构·maven