클라우드 GCP GPU 인스턴스 마이그레이션 - 100-hours-a-week/16-Hot6-wiki GitHub Wiki
GCP GPU 인스턴스 마이그레이션
1. 개요
본 문서는 commanding-fact-457111-s6
프로젝트에서 운영되던 GPU 기반 인스턴스를 gpu3-460507
프로젝트로 이전하기 위한 과정을 정리한 문서입니다.
초기에는 머신 이미지만 존재하였으며, 직접 참조가 불가능하다는 제한으로 인해 복구 가능한 커스텀 이미지를 생성하고, 이를 GCS를 통해 옮긴 후 대상 프로젝트에서 인스턴스를 복원하는 과정을 수행하였습니다.
최종적으로 새로운 프로젝트에서 인스턴스가 성공적으로 재생성되어 네트워크 연결까지 완료되었으며, 이를 기반으로 향후 동일한 작업을 자동화하거나 반복 수행할 수 있는 참고자료로 사용될 수 있습니다.
2. 목표
- 원본 프로젝트에서 생성된 머신 이미지 기반의 인스턴스를 새 프로젝트로 마이그레이션
- 퍼블릭 공개 없이도 안전하게 이미지 이전
- 인스턴스가 재생성된 후 서비스 접근이 가능한 상태까지 구성
3. 계획 (Planning)
3.1 대상 리소스 정의
- 원본 인스턴스 이름:
ott-gpu-server
- 머신 이미지:
onthetop-machineimage-v1-ai
- 커스텀 이미지로 변환 후 이름:
onthetop-image-v1-ai
- 대상 GCS 버킷:
gs://onthetop-image-bucket
- 대상 프로젝트 ID:
gpu3-460507
3.2 주요 제약 조건
- GPU 리소스 부족으로 인해 동일한 환경에서 VM 재생성 불가능
- 머신 이미지는 프로젝트 간 공유되지 않음
.tar.gz
로 export된 이미지 파일은images import
에서 직접 사용 불가gcloud compute images import
명령은 압축 파일 미지원
3.3 해결 전략
- 머신 이미지로부터 GPU 없는 일반 VM 생성
- 해당 VM 디스크에서 커스텀 이미지 생성
- 커스텀 이미지를
.tar.gz
로 export 후 GCS에 저장 - GCS 버킷 객체에
AllUsers:R
ACL 부여 - 대상 프로젝트에서
images create
명령으로 이미지 복원 - VM 재생성 및 네트워크 구성
4. 실행 (Execution)
4.1 머신 이미지 → GPU 없는 VM 복원
gcloud compute instances create temp-vm \
--source-machine-image=onthetop-machineimage-v1-ai \
--machine-type=e2-standard-2 \
--zone=asia-northeast3-a \
--project=commanding-fact-457111-s6
4.2 디스크로부터 커스텀 이미지 생성
gcloud compute images create onthetop-image-v1-ai \
--source-disk=temp-vm \
--source-disk-zone=asia-northeast3-a \
--project=commanding-fact-457111-s6
4.3 이미지 → GCS로 Export
gsutil mb -l asia-northeast3 -p commanding-fact-457111-s6 gs://onthetop-image-bucket
gcloud compute images export \
--image=onthetop-image-v1-ai \
--destination-uri=gs://onthetop-image-bucket/onthetop-image-v1-ai.tar.gz \
--project=commanding-fact-457111-s6
4.4 객체에 퍼블릭 읽기 권한 부여
gsutil acl ch -u AllUsers:R gs://onthetop-image-bucket/onthetop-image-v1-ai.tar.gz
이 ACL 설정은 GCP Console에서는 객체 리스트를 보지는 못하지만, URL을 알고 있으면 직접 다운로드할 수 있는 권한을 제공합니다.
4.5 대상 프로젝트에서 이미지 복원
gcloud compute images create imported-onthetop-image \
--source-uri=gs://onthetop-image-bucket/onthetop-image-v1-ai.tar.gz \
--project=gpu3-460507
images create
명령은.tar.gz
압축 파일을 기반으로 새로운 커스텀 이미지를 생성할 수 있습니다.
4.6 인스턴스 생성 및 네트워크 구성
gcloud compute instances create onthetop-prod-vm \
--image=imported-onthetop-image \
--image-project=gpu3-460507 \
--zone=asia-northeast3-a \
--machine-type=e2-standard-2 \
--network=default \
--tags=http-server,https-server
방화벽이 필요하다면 다음 명령을 추가로 실행합니다:
gcloud compute firewall-rules create allow-http-https \
--allow=tcp:80,tcp:443 \
--target-tags=http-server,https-server \
--direction=INGRESS \
--priority=1000 \
--network=default
5. 결과 (Outcome)
5.1 최종 확인 사항
gpu3-460507
프로젝트 내에imported-onthetop-image
이미지 생성 완료- 해당 이미지를 기반으로
onthetop-prod-vm
생성 성공 - 포트 80/443에 대한 접근 가능 (방화벽 규칙 적용)
- GCP 외부 IP를 통해 실제 서비스 확인 가능
6. 회고 체크리스트
성공적으로 수행된 점
- VM을 정지하지 않고 운영 중인 상태에서 이미지 생성
- 대용량(110GB) 이미지도 로컬 다운로드 없이 GCS 간 이전 성공
- UI 및 CLI의 한계를 명확히 인지하고 우회 경로로 해결
체크리스트
- 운영 중인 인스턴스 디스크에서 커스텀 이미지 생성 완료
- 커스텀 이미지를 GCS로 무중단 export
- 이미지 압축 파일에 공개 접근 권한 설정
-
.tar.gz
형식의 이미지에 대해images create
명령으로 복구 - 대상 프로젝트에서 커스텀 이미지 생성 성공
- 해당 이미지를 기반으로 인스턴스 정상 생성
- 외부 IP 및 포트 80/443 연결 확인
- 방화벽 규칙 및 태그 설정 완료
- 서비스 접근을 위한 네트워크 구성 검증 완료
7. 결론
본 이미지 마이그레이션 작업은 GCP의 리소스 공유 제약과 CLI 도구의 세부 제약 조건에도 불구하고,
전반적으로 안정적이며 신속하게 인프라 복원을 수행한 사례입니다.
문서화된 이 과정을 통해 향후 동일한 상황 발생 시 반복 가능한 절차로 재활용할 수 있으며,
권한 문제와 CLI 동작 방식에 대한 실전 이해를 팀 내부에 공유할 수 있는 좋은 기회가 되었습니다.