안녕하세요. MinIO의 S3 호환성 및 성능 벤치마킹 도구인 WARP를 쿠버네티스 환경에서 WARP Operator를 사용하여 테스트하는 절차와 필요한 YAML 파일을 안내해 드리겠습니다.
WARP Operator를 사용하면 kubectl을 통해 선언적으로 벤치마크 테스트를 정의하고 실행할 수 있어 매우 편리합니다.
WARP Operator 테스트 전체 절차
설치가 완료되면, 다음 명령어로 warp-operator 파드가 정상적으로 실행 중인지 확인합니다.
kubectl get pods -n default -l app=warp-operator
Base64 인코딩 명령어 예시:
echo -n 'http://minio.minio.svc.cluster.local:9000' | base64
echo -n 'YOUR_ACCESS_KEY' | base64
echo -n 'YOUR_SECRET_KEY' | base64
위 01-minio-secret.yaml 파일을 작성한 후, 클러스터에 적용합니다.
kubectl apply -f 01-minio-secret.yaml
WARP 테스트 실행 (Custom Resource 생성)
이제 실제 벤치마크 시나리오를 정의하는 Warp Custom Resource(CR) YAML 파일을 작성합니다. 이 파일에서 동시성, 테스트 시간, 테스트 종류(GET, PUT, 혼합) 등을 설정할 수 있습니다.
아래는 읽기(GET)와 쓰기(PUT)를 혼합하여 5분간 16개의 동시 쓰레드로 테스트하는 예제입니다.
02-warp-mixed-test.yaml
apiVersion: minio.min.io/v1alpha1
kind: Warp
metadata:
name: mixed-benchmark-test # 실행할 테스트의 고유 이름
spec:
server:
secretName: minio-credentials
concurrent: 16
duration: "5m"
warp:
# --mixed: 혼합 모드 테스트를 활성화합니다.
# --mixed.ratio=1:1 : 읽기(GET)와 쓰기(PUT) 비율을 1:1로 설정합니다.
# --obj.size=64KiB : 테스트에 사용할 객체 크기를 지정합니다.
# --host=warp-service-name:port (자동으로 설정되므로 명시할 필요 없음)
# --bucket=warp-benchmark... (자동으로 생성되므로 명시할 필요 없음)
args: "--mixed --mixed.ratio=1:1 --obj.size=64KiB"
위 02-warp-mixed-test.yaml 파일을 작성한 후, 클러스터에 적용하여 테스트를 시작합니다.
kubectl apply -f 02-warp-mixed-test.yaml
적용 즉시 WARP Operator는 spec에 정의된 내용에 따라 concurrent 수만큼의 WARP Pod를 생성하여 테스트를 시작합니다.
5. 테스트 결과 확인
테스트가 실행되는 동안 또는 완료된 후, WARP Pod의 로그를 통해 결과를 확인할 수 있습니다.
WARP Pod 목록 확인:
app=warp 레이블을 사용하여 테스트를 위해 생성된 Pod들을 확인합니다.
kubectl get pods -l app=warp
mixed-benchmark-test-xxxx 와 같은 이름의 Pod들이 보일 것입니다.
개별 Pod 로그 확인:
Pod 중 하나의 이름을 선택하여 로그를 확인합니다. 테스트가 진행되면서 실시간으로 통계가 출력되며, 테스트가 완료되면 최종 요약 결과가 나타납니다.
kubectl logs -f <WARP_POD_NAME>
결과 예시 (로그 마지막 부분):
...
WARP Mix Summary:
Operation: DELETE, Concurrency: 16, Duration: 2m59.991s
Requests: 973, 5.41 req/s
Bandwidth: 354.38 KiB/s
Latency: avg: 2.92s, 50%: 2.91s, 90%: 3s, 99%: 3.25s
Errors: 0
Operation: GET, Concurrency: 16, Duration: 2m59.991s
Requests: 972, 5.40 req/s
Bandwidth: 354.03 KiB/s
Latency: avg: 2.92s, 50%: 2.91s, 90%: 3s, 99%: 3.25s
Errors: 0
Operation: PUT, Concurrency: 16, Duration: 2m59.991s
Requests: 974, 5.41 req/s
Bandwidth: 354.73 KiB/s
Latency: avg: 2.92s, 50%: 2.91s, 90%: 3s, 99%: 3.25s
Errors: 0
Operation: STAT, Concurrency: 16, Duration: 2m59.991s
Requests: 973, 5.41 req/s
Bandwidth: 354.38 KiB/s
Latency: avg: 2.92s, 50%: 2.91s, 90%: 3s, 99%: 3.25s
Errors: 0
Mixed workload total:
Requests: 3892, 21.62 req/s
Bandwidth: 1.38 MiB/s
kubectl delete -f 02-warp-mixed-test.yaml
kubectl delete -f 01-minio-secret.yaml
kubectl delete -f https://raw.githubusercontent.com/minio/warp/master/operator/operator.yaml
이 절차를 통해 쿠버네티스 환경에서 WARP Operator를 활용하여 체계적으로 MinIO 성능 벤치마크를 수행할 수 있습니다. 02-warp-mixed-test.yaml 파일의 spec.warp.args 부분을 수정하여 다양한 시나리오의 테스트를 진행해 보시기 바랍니다.