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

Kubernetes 核心组件架构详解

Kubernetes 核心组件架构详解

Kubernetes 是一个由多个核心组件组成的分布式系统,这些组件协同工作以提供容器编排能力。以下是 Kubernetes 的核心组件及其功能:

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

1. kube-apiserver

功能:集群的统一入口和前端

  • 暴露 Kubernetes API
  • 处理 REST 操作请求
  • 验证和配置数据
  • 是所有其他组件通信的中枢

2. etcd

功能:分布式键值存储

  • 保存集群所有配置数据和状态
  • 采用 Raft 算法保证一致性
  • 默认只运行在 master 节点
  • 关键数据包括:Nodes, Pods, Configs, Secrets

3. kube-scheduler

功能:资源调度器

  • 监听未调度的 Pod
  • 根据资源需求、策略等选择合适 Node
  • 考虑因素:
    调度决策
    资源需求
    亲和/反亲和
    数据位置
    污点和容忍

4. kube-controller-manager

功能:运行各种控制器

  • Node Controller:监控节点状态
  • Replication Controller:维护 Pod 副本数
  • Endpoint Controller:维护 Service-Endpoint 关联
  • Service Account & Token Controller:管理命名空间账户

5. cloud-controller-manager (可选)

功能:与云平台交互

  • 对接云提供商 API
  • 管理负载均衡器、路由等
  • 实现节点控制器、路由控制器

二、节点组件 (Node Components)

1. kubelet

功能:节点代理

  • 管理 Pod 生命周期
  • 挂载 Pod 所需 Volume
  • 执行容器健康检查
  • 向 master 报告节点状态

2. kube-proxy

功能:网络代理

  • 维护节点网络规则
  • 实现 Service 的 VIP 转发
  • 工作模式:
    # 查看当前模式
    ps aux | grep kube-proxy | grep -- --proxy-mode
    
    • iptables (默认)
    • ipvs (高性能)
    • userspace (已废弃)

3. 容器运行时 (Container Runtime)

常见实现

  • Docker
  • containerd
  • CRI-O
  • Mirantis Container Runtime

三、插件组件 (Addons)

1. DNS 服务

  • CoreDNS (默认)
    # 查看部署
    kubectl get deployment -n kube-system coredns
    

2. 网络插件

常见选择

  • Calico
  • Flannel
  • Weave Net
  • Cilium

3. Dashboard

  • Web 管理界面
    kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
    

4. Ingress Controller

常见实现

  • Nginx Ingress
  • Traefik
  • HAProxy Ingress
  • Istio Ingress Gateway

四、组件交互关系

kubectl
注册/心跳
拉取配置
获取规则
User
api-server
etcd
Scheduler
Controller
kubelet
kube-proxy

五、组件部署方式对比

组件典型部署位置高可用方案
api-serverMaster多实例 + LB
etcdMaster3/5节点集群
schedulerMaster多实例 leader选举
controllerMaster多实例 leader选举
kubelet所有Node-
kube-proxy所有Node-

六、关键配置文件位置

  1. 组件配置

    • /etc/kubernetes/manifests/ (静态Pod方式)
    • /etc/systemd/system/kubelet.service.d/
  2. 认证文件

    • /etc/kubernetes/pki/ (CA证书)
    • /etc/kubernetes/kubelet.conf
  3. 网络配置

    • /etc/cni/net.d/ (CNI配置)
    • /var/lib/kubelet/ (kubelet数据)

七、组件健康检查

# 检查控制平面组件
kubectl get componentstatuses# 详细检查
kubectl get --raw='/readyz?verbose'

理解这些核心组件及其交互关系,是掌握 Kubernetes 架构的基础。实际部署时,根据集群规模和使用场景,可能需要对这些组件进行特定的配置和优化。

相关文章:

  • PostgreSQL中的SSL
  • Nginx核心功能02
  • 【android bluetooth 协议分析 01】【HCI 层介绍 2】【Malformed Packet 介绍】
  • IsaacLab最新2025教程(7)-创建Interactive Scene
  • jmeter读取CSV文件中文乱码的解决方案
  • JavaScript 中循环控制语句跳出与示例说明
  • 测试 用例篇
  • 一种基于光源评估并加权平均的自动白平衡方法(一)
  • 用Python构建自动驾驶传感器融合算法:从理论到实践
  • foxmail时不时发送不了邮件问题定位解决过程
  • EasyRTC嵌入式音视频实时通话SDK技术,打造低延迟、高安全的远程技术支持
  • Java使用xmind8提供plugin sdk导出图片
  • 零基础学指针2
  • 第三部分:特征提取与目标检测
  • 计算机视觉综合实训室解决方案
  • Java:List集合size>0但元素为:ALL elements are null
  • 前端开发 Markdown 编辑器与富文本编辑器详解
  • 湖北理元理律师事务所:从法律视角看债务优化的合规实践
  • 腾讯云web服务器配置步骤是什么?web服务器有什么用途?
  • OpenHarmony - 小型系统内核(LiteOS-A)(完),内核编码规范
  • 贵州锦屏县委原书记舒健已任黔东南州政府办主任
  • 经济日报社论:书写新征程上奋斗华章
  • 人物|德国新外长关键词:总理忠实盟友、外交防务专家、大西洋主义者
  • 万科:一季度营收近380亿元,销售回款率超100%
  • 大学男生被捉奸后将女生推下高楼?桂林理工大学辟谣
  • 看展览|建造上海:1949年以来的建筑、城市与文化