You need to enable JavaScript to run this app.
导航
Kubernetes 集群稳定性优化
最近更新时间:2024.11.06 10:46:25首次发布时间:2024.08.06 20:52:41

本文主要介绍容器服务稳定性建设中 Kubernetes 集群稳定性相关配置和操作建议。

背景信息

随着容器业务的增长,系统将面临更大的压力和更复杂的挑战。稳定性建设有助于确保系统能够适应增长的需求,支持业务的扩展。容器服务以工作负载与 Kubernetes 集群为核心,在非侵入性改造的前提下,为提升业务稳定性提供参考。

本文主要介绍 Kubernetes 集群稳定性相关内容,更多稳定性优化相关内容,请参见:

集群水位与节点水位

集群创建完成后即可提供集群资源的水位信息,您可以根据该水位信息静态调整集群中的节点规模。详情请参见 创建集群创建无 ECS 节点集群

节点加入集群后即可提供节点的资源水位、Pod 已申请的资源用量等信息。详情请参见 新增节点

集群与组件升级

建议将已有集群与组件升级到最新版本,以适配新特性和缺陷修复。详情请参见:

同时,建议将存在 GA 版本但当前处于 Beta 版本的 Kubernetes 资源对象,使用 GA 版本重新创建。典型的 Kubernetes 资源对象如下所示:

资源API 版本Kubernetes 版本
HPAautoscaling/v2beta2=1.20.x
autoscaling/v2≥1.24.x
CronJobbatch/v1beta1=1.20.x
batch/v1≥1.24.x

集群动态伸缩

托管版集群支持 Cluster Autoscaler(CA),用于集群内节点的动态伸缩,CA 会依据集群中的 Pending Pod 数量通过调度策略对开启弹性伸缩的节点池进行动态扩容,同时也支持监听资源利用率的节点,实现动态缩容。CA 的原理与使用,请参见 Cluster Autoscaler 最佳实践

使用命名空间隔离资源

在多租户或多业务混合部署的场景下,通常使用命名空间(Namespace)隔离负载,Kubernetes 提供对命名空间可用资源额度的限制。可以参考 设置资源配额 内容,为不同的命名空间设置资源配额。

使用 VCI 隔离资源

在常规 云服务器(ECS)节点上运行工作负载,Pod 之间会存在资源争用和影响,尤其是网络带宽和其他无法由 Kubernetes 管理的资源。弹性容器实例(VCI)运行在虚拟节点上,每个 VCI 独占一个虚拟节点,如果您的业务应用需要更好的隔离性与弹性能力,建议将工作负载运行在 VCI 上。详情请参见 在 VPC-CNI 网络模型集群中使用 VCI在 Flannel 网络模型集群中使用 VCI

使用 VCI 与 ECS 混合弹性

弹性资源优先级调度 允许工作负载同时运行在 VCI 和 ECS 上,当 ECS 资源不足时支持触发 CA 实现集群的动态扩容,提供更丰富的弹性资源调度能力,保障业务运行的稳定性。

使用自定义系统镜像

自定义系统镜像可以加速节点的拉起速度,对于大规模节点扩容场景的扩容速度和成功率都至关重要。
如果您的业务集群需要在短时间内扩容数十至上千节点,推荐在节点池中使用自定义系统镜像。自定义系统镜像支持通过 ECS 或 Docker 制作,详情请参见 基于 ECS 制作自定义镜像基于 Docker 制作自定义镜像

其余常规情况下使用公共镜像即可。更多信息,请参见 操作系统镜像概述

集群垂直分片

将不同的业务部署在不同的集群中,可以有效地隔离故障和风险。部署业务的多个集群中,单个集群出现的问题,不会影响到其他集群的运行。这种隔离机制可以防止集群层面的单点故障或局部问题扩散到整个系统。同时,多集群架构允许更灵活的扩展策略。您可以根据业务需求,单独扩展某个集群的资源或节点数量,而不必影响其他集群。此外,每个集群可以实施独立的安全策略和访问控制,减少潜在的安全风险。

集群水平分片

单个集群的负载存在限制,当集群负载逐渐增加并接近上限时,可以构建多个相同的业务集群疏解业务负载。容器服务托管版集群规模、节点池配额限制和组件限制等信息,请参见 使用限制

多地域部署

通过在不同的地理位置部署集群,可以在地域性灾难(例如自然灾害、电力故障、网络问题等)发生时,保证至少有一个或多个集群能够继续提供服务。这种地理上的分散性减少了单点故障的风险,通过在全国/全球范围内分布集群,可以实现更好的负载均衡。用户的请求可以被路由到最近的集群,从而减少延迟,提高用户体验,并分散负载。容器服务支持的地域信息,请参见 地域和可用区