Kubernetes 平台管理软件压力测试方案

Kubernetes 平台管理软件运行在 Kubernetes ,用于管理运行在 Kubernetes 上的资源对象。

1. 测试思路

测试在一定负载一定集群规模下,平台软件的管理能力,而不是 Kubernetes 的管理能力。平台软件的管理能力主要体现在能通过 UI 对负载、PV 进行增删改查,在 UI 上能够直接查看负载的监控和日志。明确测试内容和目的非常重要。测试对象不是 Kubernetes 。Kubernetes 相关的测试,社区会给出更好的答案。这里需要测试的是平台软件对 Kubernetes 资源对象的管理能力。

2. 测试组合

根据 Kubernetes 社区的建议:
  • 节点数不超过 5000
  • Pod 总数不超过 150000
  • 容器总数不超过 300000
  • 每个节点的 pod 数量不超过 100
  • Go app with Redis - https://github.com/kubernetes/examples
  • Java shopping - https://github.com/danielbryantuk/oreilly-docker-java-shopping/tree/master/kubernetes
  • Nginx - https://github.com/kubernetes/examples/blob/master/staging/pod
  • 能够管理 Workload 的最大数量
  • 能够管理 PV 的最大数量
  • 能够承受的最大日志量(频次、大小,与 Node 数量相关)
  • 能够承受的最大的监控量(与 Node 数量相关)
  • 各个梯度下的推荐配置
  • 各个梯度下的管理能力
  • 各个梯度负载下,平台管理软件的容错恢复能力(HA)
  • 查询负载
  • 管理负载/PV
  • 查询/检索日志
  • 查看监控
  • …(核心功能)
  • 速度 (2 秒以内,超过 10 秒算失败)
  • 准确度(操作是否正常,返回数据是否正常)
  • 高可用(HA)
  • https://cloud.google.com/compute/docs/machine-types
  • https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/hardware.md