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 架构的基础。实际部署时,根据集群规模和使用场景,可能需要对这些组件进行特定的配置和优化。

相关推荐
敖行客 Allthinker32 分钟前
云原生安全观察:零信任架构与动态防御的下一代免疫体系
安全·ai·云原生·架构·kubernetes·ebpf
鹏程十八少1 小时前
10.Android 设计模式 核心模式之四动态代理 在商业项目中的落地
架构
星辰大海的精灵1 小时前
FastAPI开发AI应用,多厂商模型使用指南
人工智能·后端·架构
前端付豪1 小时前
2、前端架构三要素:模块化、工程化、平台化
前端·javascript·架构
timeweaver2 小时前
前端救星:玩转 Nginx 配置,10 倍提升你的项目部署体验 🚀
前端·架构
蓝纹绿茶2 小时前
【Mac】实现Docker下载安装【正在逐步完善】
macos·docker·容器
uhakadotcom2 小时前
刚刚,Golang更新了, 1.24.5 与 Go 1.23.11有啥新能力?
后端·面试·架构
2401_861615282 小时前
跨平台的ARM 和 x86 Docker 镜像:汇编语言实验环境搭建
linux·汇编·ubuntu·docker·容器
DemonAvenger2 小时前
Go中UDP编程:实战指南与使用场景
网络协议·架构·go