当前位置: 首页 > news >正文

k8s的核心组件整理

Kubernetes(k8s)是一个复杂的容器编排系统,其架构由多个核心组件和可选插件组成,共同协作以管理容器化应用。以下是其系统组件的详细分类和说明:


一、控制平面(Control Plane/Master 组件)

控制平面负责集群的全局决策和状态管理,通常部署在独立的 Master 节点上。核心组件包括:

1. API Server(kube-apiserver)

作用:集群的中央枢纽,处理所有 REST 请求(如 kubectl 命令),验证并更新集群状态到 etcd。
关键特性
• 提供 Kubernetes API,是唯一直接与 etcd 交互的组件。
• 支持水平扩展,通过多实例实现高可用。

2. Scheduler(kube-scheduler)

作用:将未调度的 Pod 分配到合适的 Node 上运行。
调度策略:基于资源需求(CPU/内存)、亲和性(Affinity)、污点(Taint)等规则选择节点。

3. Controller Manager(kube-controller-manager)

作用:运行多个控制器,确保集群实际状态与期望状态一致。
核心控制器
Deployment 控制器:管理副本数及滚动更新。
Node 控制器:监控节点状态(如宕机时标记为不可用)。
Service 控制器:创建云平台负载均衡器(如 AWS ELB)。
Endpoint 控制器:维护 Service 与 Pod 的映射关系。

4. etcd

作用:分布式键值数据库,存储集群的所有配置和状态数据(如 Pod、Service、Secret 等)。
高可用:通常以奇数节点(如 3、5)组成集群,通过 Raft 协议保证数据一致性。

5. Cloud Controller Manager(可选)

作用:集成云平台特性(如负载均衡器、存储卷),仅在公有云环境中需要。
示例功能:自动创建云存储(AWS EBS)或负载均衡器(GCP Load Balancer)。


二、工作节点(Worker Node 组件)

工作节点负责运行容器化应用,每个节点包含以下核心组件:

1. kubelet

作用:与 API Server 通信,管理本节点上的 Pod 生命周期。
关键职责
• 启动/停止容器(通过容器运行时)。
• 挂载存储卷、拉取镜像、监控资源使用并上报节点状态。

2. kube-proxy

作用:维护节点网络规则,实现 Service 的流量转发。
工作模式
iptables(默认):通过规则匹配将流量转发到后端 Pod。
IPVS:高性能负载均衡,支持更多调度算法(如轮询、加权轮询)。

3. 容器运行时(Container Runtime)

作用:实际运行容器的底层软件(如 Docker、containerd、CRI-O)。
接口标准:遵循 Kubernetes CRI(Container Runtime Interface)。


三、插件与附加组件

这些组件扩展了 Kubernetes 的功能,通常以 Pod 形式部署在集群中。

1. 网络插件(CNI 插件)

作用:实现 Pod 跨节点通信(覆盖网络或路由方案)。
常见插件:Calico(策略网络)、Flannel(简单覆盖网络)、Cilium(eBPF 高性能)。

2. CoreDNS

作用:集群内部 DNS 服务,解析 Service 和 Pod 的域名。
替代方案:Kube-DNS(旧版本)。

3. Ingress 控制器

作用:管理外部访问(HTTP/HTTPS 路由),如 Nginx Ingress、Traefik。
依赖:需配合 Ingress 资源定义路由规则。

4. Metrics Server

作用:收集集群资源指标(CPU/内存),供 HPA(自动扩缩)和 kubectl top 使用。

5. Dashboard

作用:Web UI 界面,可视化查看和管理集群资源。

6. 存储插件(CSI 驱动)

作用:动态提供持久化存储(如 AWS EBS、NFS)。
接口标准:遵循 CSI(Container Storage Interface)。


四、工具与客户端

1. kubectl

作用:命令行工具,用于与集群交互(创建资源、查看日志等)。

2. kubeadm

作用:快速引导 Kubernetes 集群(初始化 Master 和加入 Node)。

3. Helm

作用:包管理工具,通过 Charts 定义和部署复杂应用(如 MySQL、Redis)。


五、组件交互流程示例

  1. 用户创建 Deployment
    kubectl apply -f deployment.yaml
    
    • 请求发送到 API Server,写入 etcd。
  2. Scheduler 分配 Pod
    • 发现未调度的 Pod,根据策略选择目标 Node。
  3. kubelet 启动容器
    • 目标 Node 的 kubelet 拉取镜像,通过容器运行时启动 Pod。
  4. kube-proxy 配置网络
    • 创建 Service 后,kube-proxy 更新 iptables/IPVS 规则,将流量转发到 Pod。
  5. Controller Manager 监控状态
    • 若 Pod 崩溃,Deployment 控制器会创建新副本以维持期望状态。

总结

核心组件:API Server、Scheduler、Controller Manager、etcd、kubelet、kube-proxy。
扩展插件:网络插件(CNI)、CoreDNS、Ingress 控制器、Metrics Server。
工具生态:kubectl、kubeadm、Helm、Dashboard。
设计原则:模块化、高可用、声明式 API,通过组件协作实现自动化容器编排。

相关文章:

  • 多阶段构建实现 Docker 加速与体积减小:含文件查看、上传及拷贝功能的 FastAPI 应用镜像构建
  • Android 接 Twitter Share ,常见问题及解决方案
  • 流畅如丝:利用requestAnimationFrame优化你的Web动画体验
  • 基于Web大学生创新服务平台(源码+lw+部署文档+讲解),源码可白嫖!
  • 摄影工作室预约管理系统基于Spring BootSSM
  • Sympy入门之微积分基本运算
  • 【中间件】Rabbit离线部署操作
  • windows单节点验证victoriametrics结合AlertManger实现告警推送webhook
  • 对接马来西亚、印度、韩国、越南等全球金融数据示例
  • 个人作品集模板!除了Figma还可以选择什么软件?
  • neo4j-如何让外部设备访问wsl中的neo4j
  • Python 类与对象概念全解析:从零到实战
  • Ubuntu上安装Docker
  • 统计哲学的频率学派和贝叶斯学派
  • Redis的大Key问题如何解决?
  • 基于单片机的农作物自动灌溉系统
  • sougou AI close
  • Milvus WeightedRanker 对比 RRF 重排机制
  • Linux信号的诞生与归宿:内核如何管理信号的生成、阻塞和递达?
  • Mysql-经典实战案例(10):如何用PT-Archiver完成大表的自动归档
  • 嫩黑线货物列车脱轨致1名路外人员死亡,3人被采取刑事强制措施
  • 南京江宁区市监局通报:盒马一批次猕猴桃检出膨大剂超标
  • 马上评|中学生被操场地面烫伤,谁的“大课间”?
  • 澎湃·镜相第二届非虚构写作大赛初选入围名单公示
  • 男子不满和睦家医院手术效果还遇到了“冒牌医生”?院方回应
  • 4月份全国企业销售收入同比增长4.3%