测试环境
测试机型:
harbor机型:I2 IO优化型, 4C8G
测试镜像大小: 1.7G
测试工具:harbor perftest
测试集群:
准备k8s集群,通过 k8s node 节点拉取harbor镜像,
准备测试镜像:
1 | docker pull garima0079/bigimage |
测试工具准备:
1 | git clone git@github.com:seamounts/perftest.git -d $GOPATH/src |
准备测试集群node docker daemon 配置:
批量更新 k8s node docker daemon,将 harbor lb地址加入到 insecure-registries 列表
1 | $GOPATH/src/perftest/cmd/harbor/script/prepare.sh |
清除镜像缓存:
批量清除 k8s node 节点镜像缓存
1 | $GOPATH/src/perftest/cmd/harbor/script/clear-image-cache.sh {harbor LB地址}/bigimage |
测试指标
镜像无缓存并发拉取大镜像的平均耗时,99值耗时
harbor 实例数和拉取时间的关系
harbor 支持的最大并发
无缓存拉取大镜像测试
2 HA harbor测试
测试环境:
harbor 2个实例,主机I2 IO优化型,4C8G,内网LB,内网KS3
测试数据:
执行: $GOPATH/src//perftest harbor pullimage –image 10.21.1.4/hsxue/bigimage –kubeconfig /root/.kube/config, 在集群所有节点并发拉取镜像。
50 node 并发拉取测试
1 | Summary: |
100 node 并发拉取测试
1 | Summary: |
200 node 并发拉取测试
1 | Summary: |
300 node 并发拉取测试
1 | Summary: |
400 node 并发拉取测试
1 | Summary: |
4 HA harbor测试
测试环境:
harbor 4个实例,主机I2 IO优化型,4C8G,内网LB,内网KS3
测试数据:
执行: $GOPATH/src//perftest harbor pullimage –image 10.21.1.4/hsxue/bigimage –kubeconfig /root/.kube/config, 在集群所有节点并发拉取镜像。
50 node 并发拉取测试
1 | Summary: |
100 node 并发拉取测试
1 | Summary: |
300 node 并发拉取测试
1 |
|
harbor 性能总结
2 HA harbor 性能
2.1 并发拉取镜像数和拉取延迟关系
拉取 1.7G 大镜像所需要的时间和并发拉取node的数量基本成线性正比的关系,并发度每增加100,拉取时间就相应增加一分钟。
2.2 并发拉取镜像数和cpu 使用率关系
并发拉取量每增加 100,cpu 使用率就增加 10%,当并发达到 500 时,cpu使用率为50%左右 。可知当拉取镜像的并发数达到500以上时,对 harbor 的压力会比较大。
推荐增加harbor 实例个数来缓解压力。
2 HA harbor 和 4HA harbpr 拉取镜像平均时间对比
50 nodes | 100 nodes | 300 nodes | |
---|---|---|---|
2HA harbor | 49.8971 s | 70.0965 s | 152.4312 s |
4HA harbor | 45.7705 s | 70.5216 s | 138.6291 s |
增加 harbor 实例个数,拉取镜像所花费时间没有明显的的减少。时间增加应该和后端存储的性能和网络带宽有关。