728x90
✅ 목표: Kubernetes 클러스터 내부에서 MinIO의 DNS 기반 네트워크 구조를 이해하고,
Spark 등 워크로드가 s3a:// 방식으로 MinIO에 접근할 수 있는지 실제로 테스트해봅니다.
🔎 이번 글에서 수행할 작업 요약
- MinIO 서비스의 DNS 구조 및 접근 주소 확인
- Spark 또는 테스트 파드에서 s3a:// 프로토콜로 접근 테스트
- Spark 설정에 필요한 핵심 fs.s3a.* 항목 정리 및 테스트
🌐 1단계: MinIO 서비스 DNS 구조 확인
이 단계의 목적: MinIO가 내부에서 어떤 DNS 주소로 노출되는지 확인하고,
s3a:// 경로로 접근할 때 사용할 수 있는 주소 형식을 파악합니다.
# MinIO 서비스 정보 확인
kubectl get svc -n minio
예시 출력:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
minio LoadBalancer 10.96.x.x 127.0.0.1 9000/TCP 2d
✅ 내부 DNS 주소: http://minio.minio.svc.cluster.local:9000
이는 Spark 또는 다른 Pod에서 s3a:// 접근 시 설정에 사용됩니다.
🧪 2단계: Spark 또는 테스트 파드에서 s3a:// 접근 테스트
이 단계의 목적: Spark 작업 또는 PySpark 셸을 통해 MinIO에 s3a:// 경로로 접근이 가능한지 확인하고,
기본적인 파일 쓰기 테스트를 통해 설정 유효성을 검증합니다.
# Spark 실행 시 필요한 설정 옵션들
--conf spark.hadoop.fs.s3a.access.key=minioadmin \ # MinIO Access Key
--conf spark.hadoop.fs.s3a.secret.key=minioadmin \ # MinIO Secret Key
--conf spark.hadoop.fs.s3a.endpoint=http://minio.minio.svc.cluster.local:9000 \ # 내부 접근용 엔드포인트
--conf spark.hadoop.fs.s3a.path.style.access=true \ # MinIO는 path-style 필수
--conf spark.hadoop.fs.s3a.connection.ssl.enabled=false # HTTP 사용 시 SSL 비활성화
✅ 위 설정을 통해 Spark는 MinIO를 AWS S3처럼 인식하고 s3a:// 경로로 파일을 읽고 쓸 수 있습니다.
📁 3단계: 파일 업로드 및 버킷 내용 확인 테스트
이 단계의 목적: s3a:// 경로로 파일을 업로드해보고,
MinIO 클라이언트(mc)를 사용해 실제로 업로드가 성공했는지 확인합니다.
# PySpark 셸에서 테스트
spark.read.text("file:///etc/hosts") \ # 로컬 파일을 읽고
.write.text("s3a://my-bucket1/hosts-copy") # MinIO 버킷에 업로드 (s3a 사용)
# MinIO Client를 통해 업로드 확인
mc alias set local http://minio.minio.svc.cluster.local:9000 minioadmin minioadmin # MinIO 연결 설정
mc ls local/my-bucket1 # 버킷 내용 확인
✅ 위 파일이 버킷에 잘 저장되면 s3a:// 접근 설정이 정상적으로 구성된 것입니다.
🧰 4단계: 자주 사용하는 Spark → MinIO 설정 정리
이 단계의 목적: 성능 최적화, 오류 방지, 안정적 연결을 위한 추가 설정을 정리하고
필요에 따라 실무 프로젝트에 쉽게 복사해서 사용할 수 있도록 구성합니다.
--conf spark.hadoop.fs.s3a.impl=org.apache.hadoop.fs.s3a.S3AFileSystem \ # s3a 구현체 명시
--conf spark.hadoop.fs.s3a.connection.timeout=5000 \ # 연결 타임아웃 설정
--conf spark.hadoop.fs.s3a.attempts.maximum=3 \ # 재시도 횟수 제한
--conf spark.hadoop.fs.s3a.fast.upload=true # 빠른 업로드 활성화
✅ 실무 적용 팁 요약
설정 키 | 의미 및 권장 사항 |
endpoint | 내부 DNS 주소를 정확히 입력해야 함 |
access.key / secret.key | 테스트용은 하드코딩 가능, 실무에서는 Secret 연동 권장 |
path.style.access | MinIO는 AWS와 달리 반드시 true로 설정해야 함 |
fast.upload | S3 업로드 병렬화에 필수로 권장되는 설정 |
📎 요약 및 핵심 정리
- MinIO가 Kubernetes 클러스터 내부에서 어떻게 DNS로 접근 가능한지 확인하고, Spark 등에서 사용할 s3a:// 주소를 명확히 파악함
- Spark 작업에서 fs.s3a.* 관련 설정 항목들을 구성하고, MinIO와의 연동을 위한 필수 설정을 테스트함
- 실제 파일을 MinIO 버킷으로 업로드하고 mc CLI를 통해 정상적으로 저장되었는지 검증함
728x90