Karmada大规模测试报告发布:突破100倍集群规模( 二 )

  • Num of Nodes
  • Num of Pods
对于多集群系统而言想要无限制地扩展各个维度而且又满足 SLIs/SLOs 各项指标显然是不可能实现的 。各个维度不是完全独立的,某个维度被拉伸相应的其他维度就要被压缩,可以根据使用场景进行调整 。以 Clusters 和 Nodes 两个维度举例,在 100 集群下将单集群的 5k 节点拉伸到 10k node 的场景或者在单集群规格不变的同时扩展集群数量到 200 集群,其他维度的规格势必会受到影响 。如果各种场景都进行测试分析工作量是非常巨大的,在本次测试中 , 我们会重点选取典型场景配置进行测试分析 。在满足 SLIs/SLOs 的基础上 , 实现单集群支持 5k 节点 , 20k pod规模的100数量的集群接入和管理 。
SLIs/SLOs可扩展性和性能是多集群联邦的重要特性 。作为多集群联邦的用户 , 我们期望在以上两方面有服务质量的保证 。在进行大规模性能测试之前,我们需要定义测量指标 。在参考了 Kubernetes 社区的 SLI(Service Level Indicator)/SLO(Service Level Objectives)和多集群的典型应用,Karmada 社区定义了以下 SLI/SLO 来衡量多集群联邦的服务质量 。
  • API Call Latency

Karmada大规模测试报告发布:突破100倍集群规模

文章插图
  • Resource Distribution Latency

Karmada大规模测试报告发布:突破100倍集群规模

文章插图
  • Cluster Registration Latency

Karmada大规模测试报告发布:突破100倍集群规模

文章插图
  • Resource usage

Karmada大规模测试报告发布:突破100倍集群规模

文章插图
Note:
  1. 上述指标不考虑控制面和成员集群的网络波动 。同时,单集群内的 SLO 不会考虑在内 。
  2. 资源使用量是一个对于多集群系统非常重要的指标,但是不同多集群系统提供的上层服务不同,所以对各个系统来说资源的要求也会不同 。我们不对这个指标进行强制的限制 。
  3. 集群注册时延是从集群注册到控制面到集群在联邦侧可用的时延 。它在某种程度上取决于控制面如何收集成员集群的状态 。
测试工具ClusterLoader2ClusterLoader2 是一款开源 Kubernetes 集群负载测试工具,该工具能够针对 Kubernetes 定义的 SLIs/SLOs 指标进行测试,检验集群是否符合各项服务质量标准 。此外 ClusterLoader2 为集群问题定位和集群性能优化提供可视化数据 。ClusterLoader2 最终会输出一份 Kubernetes 集群性能报告,展示一系列性能指标测试结果 。然而,在 Karmada 性能测试的过程中,由于 ClusterLoader2 是一个为 Kubernetes 单集群定制的测试工具,且在多集群场景下它不能获取到所有集群的资源, 因此我们只用 ClusterLoader2 来分发被 Karmada 管理的资源 。
PrometheusPrometheus 是一个开源的用于监控和告警的工具, 它包含数据收集、数据报告、数据可视化等功能 。在分析了 Clusterloader2 对各种监控指标的处理后,我们使用 Prometheus 根据具体的查询语句对控制面的指标进行监控 。
KindKind 是一个是用容器来运行 Kubernetes 本地集群的工具 。为了测试 Karmada 的应用分发能力,我们需要一个真实的单集群控制面来管理被联邦控制面分发的应用 。Kind 能够在节约资源的同时模拟一个真实的集群 。
Fake-kubeletFake-kubelet 是一个能模拟节点且能维护虚拟节点上的 Pod 的工具 。与 Kubemark 相比,fake-kubelet 只做维护节点和 Pod 的必要工作 。它非常适合模拟大规模的节点和 Pod 来测试控制面的在大规模环境下的性能 。
测试集群部署方案Kubernetes 控制面部署在单 master 的节点上 。etcd,kube-apiserver,kube-scheduler 和 kube-controller 以单实例的形式部署 。Karmada 的控制面组件部署在这个 master 节点上 。他们同样以单实例的形式部署 。所有的 Kubernetes 组件和 Karmada 组件运行在高性能的节点上,且我们不对他们限制资源 。我们通过 kind 来模拟单 master 节点的集群,通过 fake-kubelet 来模拟集群中的工作节点 。
测试环境信息控制面操作系统版本
Ubuntu 18.04.6 LTS (Bionic Beaver)
Kubernetes 版本
Kubernetes v1.23.10
Karmada 版本
Karmada v1.3.0-4-g1f13ad97
Karmada 控制面所在的节点配置
  • CPU
Architecture:x86_64CPU op-mode(s): 32-bit, 64-bitByte Order:Little EndianCPU(s): 64On-line CPU(s) list: 0-63Thread(s) per core: 2Core(s) per socket: 16Socket(s): 2NUMA node(s): 2Vendor ID: GenuineIntelCPU family: 6Model: 85Model name: Intel(R) Xeon(R) Gold 6266C CPU @ 3.00GHzStepping: 7CPU MHz: 3000.000BogoMIPS: 6000.00Hypervisor vendor: KVMVirtualization type: fullL1d cache: 32KL1i cache: 32KL2 cache: 1024KL3 cache: 30976KNUMA node0 CPU(s): 0-31NUMA node1 CPU(s): 32-63

推荐阅读