AI 协助说明: 本页由 Codex 协助核验和修复站内链接;正文的技术事实和适用范围未因本次修改而改变,仍以文中来源及当前官方文档为准。
本文边界:本文是 Kubernetes 关键组件与概念的分类总览,用于建立全局地图;组件间的协作链路和单个组件的实现细节另有专文展开。
推荐深读:控制平面组件详解、节点组件详解、API Server 详解、Kubelet 详解、kube-proxy 详解 与 Containerd 深度解析。
Kubernetes 是一个复杂的分布式系统,由众多相互协作的组件构成。下面按照架构层次对所有关键组件和概念进行系统化分类:
1. 控制平面组件 (Control Plane)#
控制平面是集群的大脑,负责全局决策和状态管理。
| 组件 | 核心功能 | 关键特性 |
|---|---|---|
| kube-apiserver | 集群的前端,暴露 Kubernetes API | RESTful 接口,认证授权,准入控制,API 聚合 |
| etcd | 一致且高可用的键值存储 | 保存集群所有状态数据,Raft 一致性算法,快照备份 |
| kube-scheduler | 监控新创建的 Pod 并将其分配到节点 | 多阶段调度(过滤、评分),亲和性/反亲和性,拓扑感知 |
| kube-controller-manager | 运行控制器进程 | 节点控制器、副本控制器、端点控制器、服务账户控制器 |
| cloud-controller-manager | 与云提供商特定功能集成 | 节点生命周期管理,路由配置,负载均衡器创建 |
2. 节点组件 (Node Components)#
节点组件在每个工作节点上运行,负责 Pod 的实际执行。
| 组件 | 核心功能 | 关键特性 |
|---|---|---|
| kubelet | 节点代理,确保容器在 Pod 中运行 | 静态 Pod 管理,健康检查,资源监控,CRI 交互 |
| kube-proxy | 维护节点上的网络规则 | Service 负载均衡,iptables/IPVS 模式,连接跟踪 |
| Container Runtime | 负责运行容器 | Containerd, CRI-O, Docker(已弃用) |
| CoreDNS | 集群 DNS 服务 | 服务发现,DNS 记录自动创建,插件化架构 |
3. 核心工作负载 (Core Workloads)#
定义应用如何在集群中运行。
| 资源 | 适用场景 | 关键特性 |
|---|---|---|
| Pod | 最小部署单元 | 共享网络/存储命名空间,单容器或多容器协作 |
| Deployment | 无状态应用 | 副本管理,滚动更新,回滚,HPA 集成 |
| StatefulSet | 有状态应用 | 稳定网络标识,有序部署/扩缩容,持久化存储 |
| DaemonSet | 节点级守护进程 | 每节点一个 Pod,节点加入自动部署,监控/日志收集 |
| Job/CronJob | 批处理任务 | 完成后终止,定时执行,并行处理,重试策略 |
4. 服务发现与网络 (Service Discovery & Networking)#
实现集群内部和外部的网络通信。
| 概念 | 功能 | 实现方式 |
|---|---|---|
| Service | 服务抽象 | ClusterIP, NodePort, LoadBalancer, ExternalName |
| Ingress | HTTP/HTTPS 路由 | Ingress Controller (Nginx, Traefik, ALB) |
| NetworkPolicy | 网络隔离 | 入站/出站规则,标签选择器,CIDR 限制 |
| CNI (Container Network Interface) | 容器网络标准 | Calico (BGP), Flannel (VXLAN), Cilium (eBPF), Weave Net |
| Service Mesh | 高级流量管理 | Istio, Linkerd, Consul Connect |
5. 配置与存储 (Configuration & Storage)#
管理应用配置和数据持久化。
| 资源 | 用途 | 关键特性 |
|---|---|---|
| ConfigMap | 非敏感配置数据 | 环境变量,命令行参数,配置文件卷 |
| Secret | 敏感数据 | TLS 证书,Docker 镜像拉取凭证,加密存储 |
| Volume | 容器数据持久化 | emptyDir, hostPath, configMap, secret |
| PersistentVolume (PV) | 集群存储资源 | 存储容量,访问模式,回收策略 |
| PersistentVolumeClaim (PVC) | 存储请求 | 动态供应,存储类选择,大小请求 |
| StorageClass | 存储类型定义 | 供应器参数,卷绑定模式,回收策略 |
6. 安全与策略 (Security & Policies)#
保障集群安全和合规。
| 组件 | 功能 | 关键特性 |
|---|---|---|
| RBAC (Role-Based Access Control) | 权限管理 | Role/ClusterRole, RoleBinding/ClusterRoleBinding |
| ServiceAccount | Pod 身份 | 令牌挂载,API 访问权限,自动令牌轮换 |
| Pod Security Admission | Pod 安全策略 | privileged, baseline, restricted 级别 |
| SecurityContext | 安全上下文 | runAsUser, runAsGroup, readOnlyRootFilesystem |
| Policy Engines | 高级策略执行 | OPA/Gatekeeper, Kyverno, Falco |
7. 扩展与自定义 (Extensions & Customization)#
扩展 Kubernetes 功能。
| 机制 | 用途 | 实现方式 |
|---|---|---|
| Custom Resource Definitions (CRD) | 扩展 API | 自定义资源类型,验证规则,子资源 |
| Operators | 应用特定逻辑自动化 | Controller 模式,自定义资源状态管理 |
| Admission Controllers | 拦截 API 请求 | MutatingAdmissionWebhook, ValidatingAdmissionWebhook |
| Scheduler Framework | 自定义调度 | 预过滤,过滤,评分,绑定扩展点 |
| Device Plugins | 硬件加速器支持 | GPU, FPGA, InfiniBand, SR-IOV |
8. 可观测性 (Observability)#
监控、日志和追踪。
| 组件 | 功能 | 集成工具 |
|---|---|---|
| Metrics Server | 资源指标收集 | 支持 HPA, kubectl top 命令 |
| kube-state-metrics | 对象状态指标 | Prometheus 指标暴露,集群状态监控 |
| Logging 架构 | 容器日志收集 | EFK (Elasticsearch, Fluentd, Kibana), Loki |
| Distributed Tracing | 请求链路追踪 | Jaeger, Zipkin, OpenTelemetry |
| Cluster Monitoring | 全局监控 | Prometheus, Grafana, Thanos |
9. 自动扩缩容 (Autoscaling)#
动态调整资源。
| 机制 | 作用对象 | 扩缩容依据 |
|---|---|---|
| Horizontal Pod Autoscaler (HPA) | Pod 副本数 | CPU/内存使用率,自定义指标,外部指标 |
| Vertical Pod Autoscaler (VPA) | Pod 资源请求 | 历史资源使用,推荐值,自动更新 |
| Cluster Autoscaler | 节点数量 | 调度失败 Pod,节点资源利用率,云提供商 API |
10. 集群生命周期管理 (Cluster Lifecycle)#
集群部署、升级和维护。
| 工具 | 用途 | 特点 |
|---|---|---|
| kubeadm | 集群引导工具 | 初始化控制平面,加入节点,证书管理 |
| Cluster API | 声明式集群管理 | 跨环境一致,自定义基础设施提供者 |
| kops | 生产级集群管理 | AWS 原生支持,滚动升级,高可用 |
| kubectx/kubens | 上下文切换工具 | 快速切换集群和命名空间 |
| Velero | 备份与迁移 | 资源备份,集群迁移,灾难恢复 |
11. 应用交付与 GitOps (Application Delivery & GitOps)#
现代应用部署模式。
| 模式 | 工具 | 核心理念 |
|---|---|---|
| Helm | Chart 管理 | 模板化部署,版本控制,依赖管理 |
| Kustomize | 原生配置管理 | 叠加配置,无需模板,kubectl 集成 |
| Argo CD | GitOps 持续交付 | 声明式配置,自动同步,可视化 |
| Flux | GitOps 操作器 | 自动部署,镜像更新自动化,多租户 |
| Tekton | CI/CD 流水线 | Kubernetes 原生,可扩展,任务编排 |
12. 多集群与联邦 (Multi-cluster & Federation)#
跨集群管理。
| 方案 | 用途 | 实现 |
|---|---|---|
| KubeFed (Cluster Federation) | 多集群资源分发 | 跨集群服务发现,配置同步 |
| Cluster Gateway API | 多集群网络 | 统一入口,跨集群流量分发 |
| Service Mesh 跨集群 | 服务网格扩展 | Istio Multi-Mesh, Consul Service Mesh |
| Cluster API | 统一集群管理 | 跨云/本地环境,声明式 API |
| Open Cluster Management | 集中式管理 | 应用部署,策略执行,可观测性 |
13. 边缘计算 (Edge Computing)#
Kubernetes 扩展到边缘。
| 项目 | 用途 | 特点 |
|---|---|---|
| K3s | 轻量级 Kubernetes | 低资源需求,单二进制,边缘优化 |
| KubeEdge | 云边协同 | 边缘节点管理,设备 CRD,离线操作 |
| OpenYurt | 云原生边缘计算 | 零侵入,边缘自治,流量闭环 |
| MicroK8s | 单节点集群 | 轻量,快速部署,内置插件 |
架构交互图#
graph TD
subgraph Control Plane
A[kube-apiserver] --> B[etcd]
A --> C[kube-scheduler]
A --> D[kube-controller-manager]
A --> E[cloud-controller-manager]
end
subgraph Node 1
F[kubelet] --> G[Container Runtime]
H[kube-proxy] --> I[Network]
J[CoreDNS] --> I
end
subgraph Node 2
K[kubelet] --> L[Container Runtime]
M[kube-proxy] --> N[Network]
end
subgraph Workloads
O[Deployment] --> P[Pod]
Q[StatefulSet] --> R[Pod]
S[DaemonSet] --> T[Pod]
end
subgraph Networking
U[Service] --> V[ClusterIP]
W[Ingress] --> X[HTTP Router]
Y[NetworkPolicy] --> Z[Firewall Rules]
end
subgraph Storage
AA[ConfigMap/Secret] --> AB[Volume]
AC[PersistentVolume] --> AD[PersistentVolumeClaim]
end
A --> F
A --> K
A --> Workloads
Workloads --> Networking
Workloads --> Storage
F --> H
K --> M
H --> Networking
M --> Networking这个架构分类提供了 Kubernetes 生态系统的全景视图。在实际生产环境中,各组件不是孤立工作的,而是相互协作形成一个高度集成的系统。理解这些组件如何协同工作,以及它们在整体架构中的位置,是构建和运维高效、可靠 Kubernetes 集群的关键。
根据您的使用场景和需求,可以从这个全景图中选择适合的组件进行深入研究和实施。例如,对于初创公司可能专注于核心工作负载和服务发现;而对于大型企业,安全、多集群管理和 GitOps 可能更为关键。
参考#
kubernetes in Action