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

  • 资源使用量是一个对于多集群系统非常重要的指标,但是不同多集群系统提供的上层服务不同,所以对各个系统来说资源的要求也会不同 。我们不对这个指标进行强制的限制 。
  • 集群注册时延是从集群注册到控制面到集群在联邦侧可用的时延 。它在某种程度上取决于控制面如何收集成员集群的状态 。
  • 测试工具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
    • 内存
    Maximum Capacity: 512 GB
    • 磁盘
    Disk /dev/vda: 200 GiB, 214748364800 bytes, 419430400 sectors组件参数配置
    • karmada-apiserver
    --max-requests-inflight=2000--max-mutating-requests-inflight=1000
    • karmada-aggregated-server
    --kube-api-qps=200--kube-api-burst=400
    • karmada-scheduler
    --kube-api-qps=200--kube-api-burst=400
    • karmada-controller-manager
    --kube-api-qps=200--kube-api-burst=400
    • karmada-agent
    --kube-api-qps=40--kube-api-burst=60
    • karmada-etcd
    --quota-backend-bytes=8G测试执行在使用 Clusterloader2 进行性能测试之前,我们需要自己通过配置文件定义性能测试策略 。我们使用的配置文件如下:
    unfold me to see the yaml

    经验总结扩展阅读