k8s的主要构成及核心组件

---------------------------------------------------------------------------------

Kubernetes(简称 K8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它最初由 Google 开发,现在由 Cloud Native Computing Foundation(CNCF)维护。Kubernetes 的主要构成可以分为 控制平面(Control Plane)​ 和 工作节点(Worker Nodes / Data Plane)​ 两大部分,每个部分都包含多个核心组件,共同协作以管理容器化应用。


一、Kubernetes 的主要构成

1. 控制平面(Control Plane / Master Node)

控制平面是 Kubernetes 的“大脑”,负责整个集群的管理与决策,包括调度、维护集群状态、应用配置等。控制平面通常可以运行在 一个或多个节点上(高可用部署时),主要包括以下核心组件:

(1)kube-apiserver

  • 作用:Kubernetes 的前端接口,所有的操作(如 kubectl 命令、其他组件通信)都通过它进行。
  • 功能:
    • 提供 REST API,是集群的统一访问入口。
    • 验证并处理 REST 请求。
    • 与其他组件(如 controller-manager、scheduler)交互。

(2)etcd

  • 作用:分布式键值存储数据库,用于保存整个集群的配置数据和状态信息。
  • 功能:
    • 存储所有 Kubernetes 对象的状态(如 Pod、Service、Deployment 等)。
    • 是集群数据的唯一真实来源(Single Source of Truth)。
    • 必须高可用部署(通常以集群方式运行)。

(3)kube-scheduler

  • 作用:负责将新创建的 Pod 调度到合适的 Node 上运行。
  • 功能:
    • 根据资源需求、硬件/软件约束、亲和性等条件选择最佳节点。
    • 监听未调度的 Pod,并为其找到合适节点。

(4)kube-controller-manager

  • 作用:运行各种控制器(Controller),确保集群的实际状态趋近于期望状态。
  • 功能:
    • 包含多个内置控制器,如:
      • Node Controller(节点管理)
      • Replication Controller(副本管理)
      • Deployment Controller
      • Endpoint Controller
      • ServiceAccount & Token Controller 等
    • 持续监控集群状态,并做出相应调整以匹配声明式配置。
⚠️ 注意:在较新版本中,kube-controller-manager和 kube-scheduler可以以高可用模式运行,并支持 leader election。

2. 工作节点(Worker Node / Data Plane)

工作节点是实际运行用户容器(Pod)的地方。每个节点都运行必要的服务以支持容器运行。每个工作节点通常包括以下核心组件:

(1)kubelet

  • 作用:运行在每个 Node 上的“代理”,负责与控制平面通信,并确保 Pod 中的容器正常运行。
  • 功能:
    • 接收来自 kube-apiserver 的指令,启动/停止 Pod 中的容器。
    • 定期向 master 汇报节点和 Pod 的状态。
    • 管理 Pod 生命周期和容器运行时(如 containerd、Docker)。

(2)kube-proxy

  • 作用:负责为 Service 提供网络代理和负载均衡功能,实现集群内服务发现和流量路由。
  • 功能:
    • 维护节点上的网络规则(如 iptables 或 IPVS 规则)。
    • 实现 ClusterIP、NodePort、LoadBalancer 等 Service 类型的流量转发。
    • 支持 Kubernetes 服务网络模型的基础。

(3)容器运行时(Container Runtime)

  • 作用:负责真正运行容器(如 Docker、containerd、CRI-O 等)。
  • 功能:
    • 拉取镜像、创建和运行容器。
    • Kubernetes 通过 CRI(Container Runtime Interface)​ 与不同的容器运行时交互。
    • 常见运行时:containerd(推荐)、Docker(逐渐淘汰直接集成)、CRI-O 等。

二、Kubernetes 核心组件总结表

组件所属部分主要功能
kube-apiserver 控制平面 提供 API 接口,集群统一访问入口
etcd 控制平面 分布式键值存储,保存集群所有配置和状态数据
kube-scheduler 控制平面 负责将 Pod 调度到合适的 Node
kube-controller-manager 控制平面 运行多个控制器,保证集群状态符合期望
kubelet 工作节点 与 master 通信,管理本节点上的 Pod 和容器
kube-proxy 工作节点 提供 Service 网络代理和负载均衡
容器运行时(如 containerd) 工作节点 实际运行容器的软件

三、附加组件(非必须但常用)

除了上述核心组件外,Kubernetes 生态中还有许多常用附加组件,例如:

  • CNI 插件(如 Calico、Flannel、Cilium):提供 Pod 之间的网络互联。
  • Ingress Controller(如 Nginx Ingress、Traefik):管理外部访问集群服务的路由。
  • CSI(Container Storage Interface)插件:为集群提供持久化存储支持。
  • Dashboard:Kubernetes 的 Web UI 管理界面。
  • Metrics Server:提供资源使用情况的监控指标。
  • Prometheus + Grafana:监控和可视化工具。
  • Helm:Kubernetes 的包管理工具,用于简化应用部署。

四、Kubernetes 架构简图(文字描述)

 
[用户/管理员] | kubectl 或 API 调用 | [ kube-apiserver ] ←→ [ etcd ] (控制平面) | | 通信 | [ kube-scheduler ] [ kube-controller-manager ] | | [ 工作节点1 ] [ 工作节点2 ] ... [ 工作节点N ] | | | kubelet kubelet kubelet kube-proxy kube-proxy kube-proxy 容器运行时 容器运行时 容器运行时 ↓ ↓ ↓ Pod / 容器 Pod / 容器 Pod / 容器
 
 

五、总结

Kubernetes 的核心是通过 声明式的配置,让系统自动管理应用的部署、伸缩和运维。其架构设计高度模块化,各组件分工明确,既可以独立升级,也支持高可用部署。

  • 控制平面:负责决策(调度、管理状态、API 服务等)
  • 工作节点:负责执行(运行容器、网络代理、与控制平面通信)

掌握这些核心组件是理解和使用 Kubernetes 的基础。

---------------------------------------------------------------------------------

---------------------------------------------------------------------------------

---------------------------------------------------------------------------------

---------------------------------------------------------------------------------

posted @ 2025-11-07 16:18  hanease  阅读(0)  评论(0)    收藏  举报