本来已经打算对于IKS的跨区域持久化存储封笔,突然看了同事写了文件存储、块存储和对象存储的性能报告,就想到了既然已经研究了Portworx,就应该继续深入挖掘Portworx的性能。这样也能把IBM Kubernetes Service持久化存储的性能报告补全,也是为了企业青睐的Redhat OpenShift Kubernetes Service(ROKS) 测试一下企业级的Portworx。由于Portworx也可以挂载到基于SDS的ROKS集群,所以在IKS上的测试结果适用于IBM Cloud上的OpenShift。
在开始性能测试前,需要先找个合适的工具,有了前人摘树很快定位到了的dbench这个工具:https://github.com/leeliu/dbench
同时还需要准备个基于SDS的IKS环境以及Portworx,具体安装和配置可以参考我之前两篇文章。一切就绪后,我们首先打开IKS集权访问权和cloudshell。
配置完后,就可以访问此IKS集群了。接下来我们查看下Portworx的存储类:
我们继续查看一下“portworx-db-sc"的描述,其中参数io_profile=db,归类为性能非常好。
dbench的参考文档中提到的dbench.yaml示例: https://raw.githubusercontent.com/logdna/dbench/master/dbench.yaml
我们可以根据这个示例进行修改,使用存储类“portworx-db-sc”来构建PVC,修改后的yaml如下:
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: px-pvc
annotations:
volume.beta.kubernetes.io/storage-class: portworx-db-sc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 500Gi
---
apiVersion: batch/v1
kind: Job
metadata:
name: px-dbench
spec:
template:
spec:
containers:
- name: px-dbench
image: ndrpnt/dbench:1.0.0
imagePullPolicy: Always
# command: ['sh', '-c', 'fio -v']
env:
- name: DBENCH_MOUNTPOINT
value: /data
- name: DBENCH_QUICK
value: "no"
- name: FIO_SIZE
value: 1G
#- name: FIO_OFFSET_INCREMENT
# value: 256M
- name: FIO_DIRECT
value: "1"
volumeMounts:
- name: px-vol
mountPath: /data
restartPolicy: Never
volumes:
- name: px-vol
persistentVolumeClaim:
claimName: px-pvc
backoffLimit: 4
需要注意的是dbench的镜像库已经迁移到了ndrpnt/dbench
我将上面的内容保存为文件px-fio.yaml,并上传到cloudshell,然后执行:kubectl create -f px-fio.yaml
这一步会创建pvc,pod和job,容器生成后会自动执行job进行存储的性能测试。我们除了查看pod和pvc,同时还能看到工作节点的资源使用情况,来判断是在哪个工作节点运行的测试脚本。
一般在两分钟左右测试完成,这时我们可以查看容器中job日志:kubectl logs -c px-dbench -f job/px-dbench
通常会输出很多测试内容,一般我们只要看个“Dbench Summary”就行,如下图所示:
罗列一下我们测试环境:
IKS跨区域部署集群,3个工作节点,每个工作节点使用的是裸金属规格:ms3c.16x64.1.9tb.ssd,Kubernetes版本1.17.7_1529。
最终我们转换一下上面的数据,此次的Portworx性能测试如下图所示,总结一句就是:除了贵,没毛病。