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 转发

  • 工作模式:

    bash 复制代码
    # 查看当前模式
    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 (默认)

    yaml 复制代码
    # 查看部署
    kubectl get deployment -n kube-system coredns

2. 网络插件

常见选择

  • Calico
  • Flannel
  • Weave Net
  • Cilium

3. Dashboard

  • Web 管理界面

    bash 复制代码
    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-server Master 多实例 + LB
etcd Master 3/5节点集群
scheduler Master 多实例 leader选举
controller Master 多实例 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数据)

七、组件健康检查

bash 复制代码
# 检查控制平面组件
kubectl get componentstatuses

# 详细检查
kubectl get --raw='/readyz?verbose'

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

相关推荐
梦梦代码精16 小时前
2026年PHP开源商城系统实测对比:架构、多商户、商用授权,谁才是真·省心?
vue.js·docker·架构·开源·代码规范
杨了个杨898217 小时前
Keepalived + Nginx + HAProxy 高可用架构部署实战案例
java·nginx·架构
56AI18 小时前
360 智语 AI 企业智能体平台深度评测:从 L4 蜂群架构到政企落地实战
人工智能·架构
鹤落晴春19 小时前
【K8s】Pod调度、configMaps
云原生·容器·kubernetes
张忠琳19 小时前
【runc 1.4.2】(Part 2)runc 1.4.2 超深度分析 — CLI层:main.go、命令文件、runner、信号处理、TTY
云原生·kubernetes·runc
youngerwang19 小时前
【从搬运工到协处理器:网卡芯片架构、算法、验证与边缘演进深度剖析】
网络·算法·架构·芯片
老毛肚20 小时前
JeecgBoot 后端架构与技术栈全景导读 01
架构
极客先躯20 小时前
高级java每日一道面试题-2026年02月02日-实战篇[Docker]-如何实现容器的持久化存储?
docker·容器·面试宝典·持久化·存储·韵味·java高级面试题
@insist12320 小时前
系统架构设计师-操作系统进程管理核心知识点详解
架构·系统架构·软考·系统架构设计师·软件水平考试
●VON21 小时前
AtomGit Flutter鸿蒙客户端:用户资料
flutter·华为·架构·跨平台·harmonyos·鸿蒙