本文介绍使用中心群集作为 Azure Kubernetes 机群管理器的控制平面的 Kubernetes 资源管理的概念。
随着 Azure 客户越来越多地大规模采用 Kubernetes,运营范例从管理单一群集发展到协调复杂的多群集环境。 这种体系结构转变是由基本业务需求推动的,包括地理分布、法规合规性、灾难恢复和资源优化。 但是,这种演变引入了现有的 Kubernetes 工具无法解决的重大复杂性。
跨多个群集管理 Kubernetes 资源给平台管理员和应用程序开发人员带来了重大挑战。 当组织将 Kubernetes 基础结构扩展到单个群集之外时,它们通常会遇到与资源分配、一致性维护和手动管理开销相关的复杂性。 管理每个集群的传统方法会导致操作孤岛,这些孤岛随着集群规模的增长变得越来越难以维护。
从几个群集到多群集 Kubernetes 基础结构的转换引入了一种新的作挑战,这些挑战超出了传统容器业务流程的范围。 这些挑战对于组织内的各个利益干系人组不同,每个群体都有不同的要求和约束。
平台管理员 通常需要出于各种原因将 Kubernetes 资源部署到多个群集,例如:
- 运行基础结构应用程序:关键系统组件(例如监视解决方案(Prometheus、Grafana)、持续部署工具(Flux、ArgoCD)、网络策略、安全扫描程序以及日志记录聚合器必须一致地部署到所有群集,以保持作可见性和合规性。
- 资源优化:组织希望更好地利用具有不同特征的群集,包括不同的成本配置文件(现成实例与按需)、专用硬件功能(支持 GPU 的节点、高内存实例)和性能层,以根据要求和预算约束优化工作负荷放置。
- 合规性和治理:法规框架要求特定的数据驻留要求、安全控制和审核功能,这些要求需要仔细选择群集和资源放置策略。
同样, 应用程序开发人员 通常需要出于各种原因将 Kubernetes 资源部署到多个群集,例如:
- 地理分布:新式应用程序通常更倾向于靠近最终用户,以最大程度地减少延迟,遵守数据主权要求,并提供最佳的用户体验。 邻近度首选项需要跨多个地理区域部署应用程序组件,同时保持一致性和协调。
- 高可用性:业务关键型应用程序必须在区域性中断、基础结构故障或计划内维护时段期间维护服务可用性。 使用自动故障转移功能的跨区域部署可确保业务连续性并满足严格的服务级别协议(SLA)要求。
当组织尝试扩展到多个群集时,手动多群集管理的复杂性变得明显。 随着基础结构的增长,适用于小型群集机群的手动流程会很快成为瓶颈。
- 操作复杂性:随着群集数量的增加,单独创建、更新和跟踪资源的管理负担呈指数级增长。 每个群集都需要单独的身份验证、上下文切换和手动验证,从而导致时间投入增加,并增加人为错误概率。
- 配置偏移:没有集中式控制机制,手动过程不可避免地会导致群集随时间推移不一致。 这些不一致可以表现为不同的资源版本、不同的配置或缺少的组件,从而产生不可预知的行为和调试挑战。
- 可伸缩性限制:随着组织扩展到数十个或数百个群集,为小型机队充分运行的手动流程变得越来越不切实际。 管理开销的线性增加最终超过了可用的管理容量。
- 缺乏可见性:跨多个群集对资源版本、资源运行状况和作指标的全面跟踪需要大量的协调和自定义工具。 如果没有集中可观测性,团队将难以保持情境意识,并有效地应对问题。
Azure Kubernetes Fleet Manager 通过基于 开源云原生项目 和 Kubernetes 原生 API 构建的综合平台解决多群集资源管理的根本难题。 该解决方案利用自定义资源定义(CRDs)的强大功能和灵活性,将 Kubernetes 的声明性模型扩展到多群集方案。 此方法维护熟悉的 Kubernetes 操作模型,同时扩展其功能来处理集群级别操作。 下面是解决方案的一些主要原则和优势:
中心-辐射型体系结构将集中式中心集群指定为控制平面,无需独立管理每个集群。 此体系结构模式提供:
- 集中管理:用于车队范围的运营的单一控制点,从而减少管理开销。
- 一致的 API 体验:跨整个基础结构进行统一的交互,确保易于使用。
- 增强可观测性:集中监视和管理功能,以提高情况意识和更快的问题解决速度。
该解决方案基于 CNCF 项目构建,通过自定义资源定义(CRD)扩展 Kubernetes 的声明性模型,而不是替换它。 这可确保:
- 熟悉性:Kubernetes 从业者可以利用现有的知识和工具。
- 兼容性:与现有 Kubernetes 工作流和工具无缝集成。
- Cloud-Native 一致性:遵循云原生原则和与CNCF生态系统的兼容性。
该解决方案包含高级计划机制和渐进式推出策略,可实现:
- 声明性放置策略:基于群集特征(例如成本、资源可用性和地理位置)放置工作负荷。
- 渐进式推出:使用安全机制控制更新的部署,以最大程度地降低风险。
- 漂移管理:确保跨群集的资源版本和配置一致,减少操作不一致。
通过采用 Azure Kubernetes Fleet Manager,组织可以实现:
- 可伸缩性:高效管理任意大小的机群,从几个群集到数百个。
- 运营效率:通过自动化和集中控制减少手动工作量和人为错误。
- 复原能力:通过智能资源放置和故障转移策略确保高可用性和灾难恢复。
下图显示了如何使用 Azure Kubernetes Fleet Manager API 管理多群集工作负荷的示例 YAML 文件。