1. Kubernetes容器平台架构解读

Kubernetes是一种开源的容器编排平台,帮助管理大规模分布式容器化应用,推动云计算演进。它由谷歌早期托管的容器管理理念发展而来,结合了先进的控制器和灵活的调度能力。应用被打包为与环境分离的容器镜像,能够实现自动化配置、部署与资源跟踪。
Kubernetes强调面向应用的架构与理念,向下屏蔽基础设施差异,实现底层资源的统一调度与编排;向上通过容器镜像实现应用的标准化部署;在中间通过通用编排能力、开放API以及自定义扩展等,构建云原生操作系统的能力。此架构旨在帮助研发团队高效构建标准化、弹性强、可维护的应用系统,提升交付效率、降低运维复杂度。技术层面具备以下核心能力:
• 敏捷的弹性伸缩能力:容器应用可实现毫秒级的伸缩响应,超越传统虚拟机的分钟级弹性。
• 智能的自愈能力:容器应用具备强自愈能力,能自动摘除故障组件并重构服务。
• 大规模的复制分发能力:标准化的交付制品支持跨平台、跨区域的分发与部署。
1.1 Kubernetes整体架构

Kubernetes采用典型的主从分布式架构,由集中管理的主节点和分布式工作节点组成,并辅以多种辅助工具与组件。
集中式管理节点承担集群调度与管理,核心组件包括:
API Server:作为集群的网关,提供统一认证与鉴权,对外服务并充当与节点/Pod资源的代理通道。
Scheduler:资源调度器,除了默认调度器外,也支持自定义调度器。
ETCD:集群状态的统一存储,类似于分布式键值存储。
控制器管理器:实现自愈、扩容、应用生命周期管理、服务发现、路由与服务绑定等能力;默认提供多种控制器,例如ReplicationController、NodeController、NamespaceController、ServiceController、EndpointsController、PersistentVolumeController、DaemonSetController等。
分布式工作节点负责运行实际的容器化应用,默认包含三大核心组件:
Kubelet:与主节点通信并触发执行指令,管理网络、存储及容器运行时。
Kube Proxy:通过网络规则实现服务发现与负载均衡,确保流量正确路由到后端应用。
Container Runtime:容器运行时,支持通过CNI和CSI标准实现网络与存储扩展,同时通过CRI与OCI标准规范镜像及运行时。当前CRI支持的运行时包括Docker、Containerd、CRI-O、rkt等,以及其他兼容实现。
辅助工具,主要用于集群管理与网络扩展:
kubectl 通过 API Server 与集群交互,提供命令行管理能力。
Dashboard 提供基于网页的管理与监控界面。
CoreDNS 为集群提供可扩展的域名解析能力,实现服务发现。
1.2 Kubernetes核心理念
1.2.1 Pod:Kubernetes最小的调度与资源分配单元

Pod 是最小的调度单元,多个 Pod 之间相互独立。通常一个 Pod 内只运行一个容器,但当容器之间关系紧密时,可以在同一个 Pod 内运行多个容器以便共享资源与调度。通过部署多个 Pod,可以实现应用的水平扩展。Pod 本身没有自愈能力,若调度或执行失败,需要由控制器触发 Pod 的重启、重建或迁移等操作。

从 Pod 的启动过程看,Pod 容器主要包括 Pause 容器、Init 容器以及应用容器三种类型:
Pause 容器:又称 Infra 容器,负责实现 Pod 内部网络命名空间共享,并绑定唯一 IP 地址与网络资源。Pause 容器通常镜像很小,始终处于暂停状态,官方镜像通常为 Pause 的实现版本。
Init 容器:在应用容器之前启动,用于执行辅助任务,如脚本执行、文件准备、日志收集等,以解耦主业务容器与辅助能力。
应用容器:承载实际业务的容器,若需要微服务治理等能力,可能与 Sidecar 容器共同运行。在 Init 容器就绪后,应用容器才会并行启动,并在所有应用容器就绪后,整个 Pod 才视为启动完成。
在 Pod 的资源隔离方面,主要通过 Linux 命名空间和控制组实现;命名空间提供进程间隔离,控制组实现资源限制与分配。命名空间包括 IPC、UTS、网络、挂载、PID 等资源域。
1.2.2 卷存储架构,Kubernetes的复杂存储体系

存储是关键且复杂的领域,Kubernetes 为了吗兼容多种存储平台,采用 in-tree 插件对接多种存储系统,同时也支持基于 FlexVolume 和 CSI 插件的 out-of-tree 扩展,以实现自定义存储服务。
存储场景包括应用的配置读取、密钥管理、数据持久化、以及跨应用的数据共享等。目前支持的卷插件类型包括本地、持久化、网络等多种形式,以及多种云提供商的块存储、文件存储和对象存储能力。引入 PV、PVC、StorageClass 之后,资源管理更加灵活,开发人员可专注于存储需求,底层细节由集群与存储管理员处理。
CSI 自 Kubernetes 1.9 版本起成为标准化存储接口,提供 CSI Controller 与 CSI Node 两部分,Controller 实现创建、挂载、卸载等控制功能,Node 端实现 Mount/Unmount 等操作,进一步实现与存储服务驱动的解耦。
1.2.3 Ingress 与 Service:多样化的网络解决方案

Kubernetes 的网络架构复杂,涉及 Pod 网络、Service、集群 IP、NodePort、LoadBalancer 与 Ingress 等概念。为便于理解,网络被抽象为四层结构:
第0层:Node 之间的网络,确保节点间能够互通,通常由底层网络基础设施提供。
第1层:Pod 网络,确保集群中所有 Pod 在逻辑上处于同一平面网络中,能够彼此寻址和通信,通过各类网络插件实现不同网络需求,并遵循 CNI 标准进行扩展。
第3层:尽管每个 Pod 都有其 IP,仍需要对一组相同 Pod 的稳定访问进行聚合,提供一致的访问地址与负载均衡能力。
