이 문서에서는 베어메탈용 Anthos 클러스터를 실행하는 애플리케이션 소유자를 대상으로 합니다. 이 문서에서는 Anthos VM 런타임을 사용하는 가상 머신(VM)에 대해 디스크 리소스를 만들고 관리하는 방법을 보여줍니다.
시작하기 전에
이 문서를 완료하려면 다음 리소스에 대해 액세스 권한이 필요합니다.
- 베어메탈용 Anthos 클러스터 버전 1.12.0(
anthosBareMetalVersion: 1.12.0
) 이상 클러스터에 대한 액세스 권한. 워크로드 실행이 가능한 모든 클러스터 유형을 사용할 수 있습니다. 필요한 경우 Compute Engine에서 베어메탈용 Anthos 클러스터를 사용하거나 클러스터 만들기 개요를 참조하세요. kubectl
의 플러그인으로 설치되는virtctl
클라이언트 도구. 필요한 경우 virtctl 클라이언트 도구를 설치합니다.
연결된 디스크가 있는 VM 만들기
VM을 만들 때는 기존 부팅 또는 데이터 디스크를 연결하거나, 이미지에서 디스크를 만들거나(부팅 디스크 포함), 빈 디스크를 만들 수 있습니다.
빈 디스크
이 시나리오에서는 빈 디스크를 만들고 이를 VM에 연결합니다. 이 시나리오에서는 애플리케이션 데이터를 저장하기 위해 데이터 디스크를 만들 수 있습니다.
원하는 편집기에서 my-vm.yaml과 같이
VirtualMachineDisk
및VirtualMachine
을 정의하는 매니페스트를 만듭니다.nano my-vm.yaml
다음 YAML 정의를 복사하여 붙여넣습니다.
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: DISK_NAME spec: size: 10Gi --- apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: VM_NAME spec: interfaces: - name: eth0 networkName: pod-network default: true disks: - boot: true virtualMachineDiskName: VM_NAME-boot-dv - virtualMachineDiskName: DISK_NAME
이 예시에서는
DISK_NAME
이라는 빈10Gi
(10기비바이트) 디스크를 만듭니다. VM의spec.disks
섹션에서는 다음 섹션에 표시된 것처럼 이미지에서와 같이 부팅 디스크를 연결해야 합니다.편집기에서 매니페스트 파일을 저장하고 닫습니다.
kubectl
을 사용하여 VM 및 디스크를 만듭니다.kubectl apply -f my-vm.yaml
이미지에서
이 시나리오에서는 이미지에서 디스크를 만들고 이를 VM에 연결합니다. 이 시나리오에서는 예를 들어 이미지에서 부팅 디스크를 만들 수 있습니다. 또한 이미지에서 데이터 디스크를 만들고 연결할 수 있습니다.
원하는 편집기에서 my-vm.yaml과 같이
VirtualMachineDisk
및VirtualMachine
을 정의하는 매니페스트를 만듭니다.nano my-vm.yaml
다음 YAML 정의를 복사하여 붙여넣습니다.
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: VM_NAME-boot-dv spec: size: 20Gi source: http: url: https://cloud-images.ubuntu.com/releases/focal/release/ubuntu-20.04-server-cloudimg-amd64.img --- apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: VM_NAME spec: interfaces: - name: eth0 networkName: pod-network default: true disks: - boot: true virtualMachineDiskName: VM_NAME-boot-dv
이 예시에서는 공개 Ubuntu 이미지를 사용하여
VM_NAME-boot-dv
이라는20Gi
(20기비바이트) 디스크를 만듭니다. VM의spec.disks
섹션에서는 디스크가boot: true
로 설정됩니다.편집기에서 매니페스트를 저장하고 닫습니다.
kubectl
을 사용하여 VM 및 디스크를 만듭니다.kubectl apply -f my-vm.yaml
기존 디스크
이 시나리오에서는 빈 디스크를 만들고 이를 VM에 연결합니다. 이 시나리오에서는 애플리케이션 데이터를 저장하기 위해 데이터 디스크를 만들 수 있습니다.
원하는 편집기에서 my-vm.yaml과 같은
VirtualMachine
매니페스트를 만듭니다.nano my-vm.yaml
다음 YAML 정의를 복사하여 붙여넣습니다.
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: VM_NAME spec: interfaces: - name: eth0 networkName: pod-network default: true disks: - boot: true virtualMachineDiskName: VM_NAME-boot-dv - virtualMachineDiskName: EXISTING_DISK_NAME
이 예시에서는
EXISTING_DISK_NAME
이라는 기존 디스크를 연결합니다.VM의
spec.disks
섹션에서는 이전 섹션에 표시된 것처럼 이미지에서와 같이 부팅 디스크를 연결해야 합니다.편집기에서 VM 매니페스트를 저장하고 닫습니다.
kubectl
을 사용하여 VM을 만듭니다.kubectl apply -f my-vm.yaml
디스크를 만들고 기존 VM에 연결
기존 VM이 있으면 디스크를 만들고 연결하여 애플리케이션 수명 주기를 지원할 수 있습니다. VM은 디스크를 연결하기 전에 중지된 상태여야 합니다.
빈 디스크
이 시나리오에서는 빈 디스크를 만들고 이를 VM에 연결합니다. 이 시나리오에서는 애플리케이션 데이터를 저장하기 위해 데이터 디스크를 만들 수 있습니다.
필요한 경우
kubectl
을 사용하여 VM을 중지합니다.kubectl virt stop vm VM_NAME
VM_NAME
을 중지하려는 VM의 이름으로 바꿉니다.my-vm
과 같은 기존 VM 리소스를 수정합니다.kubectl edit gvm VM_NAME
VirtualMachine
YAML 매니페스트를 업데이트하여 위에VirtualMachineDisk
섹션을 추가한 후 VM의spec.disks
섹션의 끝에 디스크를 연결합니다.apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: DISK_NAME spec: size: 10Gi --- apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: VM_NAME spec: interfaces: - name: eth0 networkName: pod-network default: true disks: - boot: true virtualMachineDiskName: VM_NAME-boot-dv - virtualMachineDiskName: DISK_NAME
이 예시에서는
DISK_NAME
이라는 빈10Gi
(10기비바이트) 디스크를 만듭니다.편집기에서 업데이트된 VM 매니페스트를 저장하고 닫습니다.
kubectl
을 사용하여 VM을 시작합니다.kubectl virt start vm VM_NAME
VM_NAME
을 시작하려는 VM의 이름으로 바꿉니다.
이미지에서
이 시나리오에서는 소스 이미지에서 디스크를 만들고 이를 VM에 연결합니다.
필요한 경우
kubectl
을 사용하여 VM을 중지합니다.kubectl virt stop vm VM_NAME
VM_NAME
을 중지하려는 VM의 이름으로 바꿉니다.my-vm
과 같은 기존 VM 리소스를 수정합니다.kubectl edit gvm VM_NAME
VirtualMachine
매니페스트를 업데이트하여 위에VirtualMachineDisk
섹션을 추가한 후 VM의spec.disks
섹션 끝에 디스크를 연결합니다.apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: DISK_NAME spec: size: 10Gi source: http: url: http://example.com/my-disk-img.qcow2 --- apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: VM_NAME spec: interfaces: - name: eth0 networkName: pod-network default: true disks: - boot: true virtualMachineDiskName: VM_NAME-boot-dv - virtualMachineDiskName: DISK_NAME
이 예시에서는
http://example.com/my-disk-img.qcow2
HTTP 소스에서DISK_NAME
이라는10Gi
(10기비바이트) 디스크를 만듭니다.편집기에서 업데이트된 VM 매니페스트를 저장하고 닫습니다.
kubectl
을 사용하여 VM을 시작합니다.kubectl virt start vm VM_NAME
VM_NAME
을 시작하려는 VM의 이름으로 바꿉니다.
디스크 만들기
이 시나리오에서는 VM 리소스와 별개로 디스크 리소스를 만듭니다. 이 시나리오에서는 미리 디스크를 만든 후 필요에 따라 VM에 연결할 수 있습니다.
빈 디스크
빈 디스크를 만들려면 다음 단계를 완료합니다.
원하는 편집기에서 my-disk.yaml과 같은
VirtualMachineDisk
매니페스트를 만듭니다.nano my-disk.yaml
다음 YAML 정의를 복사하여 붙여넣습니다.
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: DISK_NAME spec: size: 10Gi
이 예시에서는
DISK_NAME
이라는 빈10Gi
(10기비바이트) 디스크를 만듭니다.편집기에서 디스크 매니페스트를 저장하고 닫습니다.
kubectl
을 사용하여 디스크를 만듭니다.kubectl apply -f my-disk.yaml
이미지에서
이미지에서 디스크를 만들려면 다음 단계를 완료합니다.
원하는 편집기에서 my-disk.yaml과 같은
VirtualMachineDisk
매니페스트를 만듭니다.nano my-disk.yaml
다음 YAML 정의를 복사하여 붙여넣습니다.
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: DISK_NAME spec: size: 20Gi source: http: url: https://cloud-images.ubuntu.com/releases/focal/release/ubuntu-20.04-server-cloudimg-amd64.img
이 예시에서는 공개 Ubuntu 이미지를 사용하여
DISK_NAME
이라는20Gi
(20기비바이트) 디스크를 만듭니다.편집기에서 디스크 매니페스트를 저장하고 닫습니다.
kubectl
을 사용하여 디스크를 만듭니다.kubectl apply -f my-disk.yaml
다음 단계
- 사용자 인증 정보를 만들고 사용하여 Cloud Storage에서 이미지 가져오기
- 베어메탈용 Anthos 클러스터에서 스토리지 클래스 만들기 및 사용
- VM 또는 가상 디스크 리소스가 더 이상 필요하지 않으면 베어메탈용 Anthos 클러스터에서 VM을 삭제합니다.