티스토리 뷰
✏️ 환경
- 쿠버네티스 클러스터 (마스터 1대, 워커 1대)
- MinIO: ClusterIP 서비스, hostPath 볼륨 사용
- 로컬: Mac
✏️ MinIO 서비스 및 자격증명 확인
먼저 MinIO 서비스 이름과 네임스페이스를 확인한다.
kubectl get svc -A | grep minio
# semosan minio ClusterIP IP <none> 9000/TCP,9001/TCP
자격증명은 k8s secret에서 꺼낸다
kubectl get secret minio-secret -n semosan -o yaml
값이 base64 인코딩이므로 디코딩한다.
kubectl get secret minio-secret -n semosan \
-o jsonpath='{.data.MINIO_ROOT_USER}' | base64 -d
kubectl get secret minio-secret -n semosan \
-o jsonpath='{.data.MINIO_ROOT_PASSWORD}' | base64 -d
✏️ 방법 A - Mac 로컬에서 바로 하기
Mac에서 직접 mc를 사용하는 방법이다. 터미널이 3개 필요하다.
① 마스터 노드에서 port-forward 실행
Forwarding from 127.0.0.1:19000 -> 9000 메시지가 뜨면 성공. 이 터미널은 유지한다.
kubectl port-forward svc/minio 19000:9000 -n semosan
② Mac 터미널에서 SSH 터널 연결 => ~/.ssh/config에 등록했다면 더 간단하다.
로그인 후 이 터미널도 유지한다. 흔한 실수: 마스터의 내부 IP(10.0.x.x)로 SSH를 시도하면 타임아웃이 난다. 반드시 공인 IP 또는 SSH config에 등록된 이름을 사용해야 한다.
Host k8s-master
HostName 64.110.117.214
User ubuntu
IdentityFile ~/.ssh/k8s-master.key
ssh -L 19000:localhost:19000 k8s-master
③ Mac 새 터미널에서 mc 설치 및 다운로드
# mc 설치
brew install minio/stable/mc
# alias 등록
mc alias set semosan http://localhost:19000 minio-admin minio-secret-password
# 버킷 확인
mc ls semosan
# 다운로드
mc cp --recursive semosan/semofeed ~/Desktop/semofeed-backup/
✏️ 방법 B - 마스터 노드에서 받고 scp로 가져오기
Mac에서 SSH 터널이 안 되는 환경이거나, 파일 용량이 크지 않을 때 유용하다.
① 마스터에 mc 설치
# 아키텍처 확인
uname -m
# x86_64
wget https://dl.min.io/client/mc/release/linux-amd64/mc
# aarch64 (arm)
wget https://dl.min.io/client/mc/release/linux-arm64/mc
chmod +x mc && sudo mv mc /usr/local/bin/
② port-forward + mc로 다운로드
kubectl port-forward svc/minio 19000:9000 -n semosan &
mc alias set local http://localhost:19000 minio-admin minio-secret-password
mc ls local # 버킷 확인
mc cp --recursive local/semofeed ~/semofeed-backup/ # 다운로드
③ Mac으로 scp
scp -r -i ~/.ssh/k8s-master.key \
ubuntu@64.110.117.214:~/semofeed-backup ~/Desktop/semofeed-backup
✏️ 방법 C - MinIO 웹 콘솔에서 다운로드
소량의 파일을 브라우저 UI로 편하게 받고 싶을 때 사용한다.
① 마스터에서 콘솔 포트 포워드
kubectl port-forward svc/minio 19001:9001 -n semosan
② Mac에서 SSH 터널
ssh -L 19001:localhost:19001 k8s-master
③ 브라우저에서 접속
http://localhost:19001 에 접속 후 로그인 → 버킷 → 파일 선택 → 다운로드.
✏️ 시도했다가 실패한 방법들
kubectl cp => MinIO 공식 이미지에 tar가 없어서 불가능하다.
kubectl cp semosan/<minio-파드>:/data/semofeed ./semofeed-backup/
# error: exec: "tar": executable file not found in $PATH
MinIO 데이터 디렉토리 직접 복사 => 파일이 복사는 되지만 Finder에서 열면 전부 폴더로 보인다. MinIO가 객체를 내부적으로 아래 구조로 저장하기 때문이다
cp -r /data/minio/semofeed ~/semofeed-backup
scp -r ubuntu@<마스터>:~/semofeed-backup ~/Desktop/
이 상태로는 이미지를 바로 열 수 없다. 반드시 mc cp로 받아야 정상 jpg 파일로 추출된다.
semofeed/
image-uuid.jpg/ ← 폴더
xl.meta ← 메타데이터 + 이미지 데이터 (바이너리 인라인)
✏️ 정리
| 방법 | 결과 | 비고 |
| Mac에서 SSH 터널 + mc | ✅ 성공 | 공인 IP로 SSH 해야 함 |
| 마스터에서 mc → scp | ✅ 성공 | 두 단계지만 안정적 |
| MinIO 웹 콘솔 | ✅ 성공 | 소량 파일에 편함 |
| kubectl cp | ❌ 실패 | 컨테이너에 tar 없음 |
| /data/minio 직접 복사 | ❌ 실패 | xl.meta 포맷, 이미지 추출 불가 |
'Back-End > 개인 공부' 카테고리의 다른 글
| [K8s / 쿠버네티스] 쿠버네티스(Kubernetes) 수업 정리 (0) | 2026.06.02 |
|---|---|
| [Spring Boot / 스프링 부트] 축제 부스앱 결제 자동화 도전기 - Portone 반려부터 RT PAY까지 (2) | 2026.05.18 |
| [Spring Boot / 스프링 부트] Spring Boot의 Command 객체 (0) | 2026.05.17 |
| Nginx + SSL + DNS (0) | 2026.04.30 |
| 무중단 배포 방식 정리 - Rolling, Blue-Green, Canary (0) | 2026.03.30 |
- Total
- Today
- Yesterday
- 반복문
- 자료구조
- 카운팅 정렬
- 세그먼트 트리
- 우선순위 큐
- 유니온 파인드
- 자바스크립트
- DFS
- 알고리즘 공부
- 스프링 부트 crud 게시판 구현
- 알고리즘
- CSS
- 이분 매칭
- java
- html
- 투 포인터
- C++
- Do it!
- C++ Stack
- 백준 풀이
- 에라토스테네스의 체
- 유클리드 호제법
- DP
- 자바
- HTML5
- BFS
- js
- 백준
- 스택
- c++ string
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
