이 문서는 Google Distributed Cloud의 VM 런타임을 사용하여 베어메탈용 GKE에서 가상 머신(VM)을 실행하는 애플리케이션 소유자를 대상으로 작성되었습니다. 이 문서에서는 GKE 클러스터에서 실행 중인 VM을 수정하는 방법을 설명합니다. 예를 들어 CPU 및 메모리와 같은 리소스 할당을 수정하거나 VM이 연결되는 네트워크를 변경할 수 있습니다.
VirtualMachine
리소스의 spec
섹션에서 모든 필드를 수정할 수 있습니다.
VM의 라벨을 수정할 수도 있습니다. VM 이름(metadata.name
)과 같은 다른 필드는 수정할 수 없습니다. 기본적으로 리소스를 수정하려면 먼저 VM이 Stopped
상태여야 합니다. 하지만 베어메탈용 GKE 버전 1.13.0부터는 구성을 변경할 때마다 VirtualMachine
리소스가 자동으로 다시 시작되도록 구성할 수 있습니다.
VirtualMachine
리소스 수정을 저장할 때 오류가 포함된 경우 변경사항이 거부되고 알림이 표시됩니다. 오류를 수정하고 VirtualMachine
리소스를 다시 저장합니다. 변경 후 VM이 시작되지 않으면 kubectl describe gvm VM_NAME
명령어를 사용하여 문제 해결 정보를 확인하고 오류를 수정합니다.
시작하기 전에
이 문서를 완료하려면 다음 리소스에 대해 액세스 권한이 필요합니다.
- 클러스터 중 하나에서 실행되는 VM. 필요한 경우 베어메탈용 GKE에 VM을 만듭니다.
kubectl
의 플러그인으로 설치되는virtctl
클라이언트 도구. 필요한 경우 virtctl 클라이언트 도구를 설치합니다.
컴퓨팅 리소스 수정
컴퓨팅 워크로드를 요구사항이 변경되면 VM에 할당하는 가상 CPU 수와 가상 메모리 양을 업데이트할 수 있습니다. 컴퓨팅 워크로드를 수정하려면 다음 단계를 완료합니다.
수정하려는 VM을 중지합니다.
kubectl virt stop VM_NAME
VM_NAME
을 중지하려는 VM의 이름으로 바꿉니다.kubectl
을 사용하여 VM을 수정합니다.kubectl edit gvm VM_NAME
VM_NAME
을 수정하려는 VM의 이름으로 바꿉니다.편집기에서 변경하려는 컴퓨팅 리소스 값을 업데이트합니다.
예를 들어 다음 샘플
VirtualMachine
매니페스트는 VM 리소스에 할당된 vCPU가2
개임을 보여줍니다.apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: vm1 spec: ... compute: cpu: vcpus: 2 ...
할당된 vCPU 수를 업데이트하려면 다음 예시와 같이 편집기에서 값을 변경합니다.
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: vm1 spec: ... compute: cpu: vcpus: 4 ...
VM 매니페스트를 저장하고 닫습니다.
수정한 VM을 시작합니다.
kubectl virt start VM_NAME
VM_NAME
을 수정한 VM의 이름으로 바꿉니다.VM의
STATUS
를 확인합니다.kubectl get gvm VM_NAME
VM이
Running
상태인지 확인합니다. VM이 호스트가 제공할 수 있는 것보다 많은 컴퓨팅 리소스를 요청하는 경우 VM을 시작할 수 없습니다. VM이Running
상태가 아니면VirtualMachine
리소스 매니페스트와 호스트의 컴퓨팅 리소스 가용성을 확인합니다.다음 출력 예시는
Running
상태의 VM을 보여줍니다.NAME STATUS AGE IP vm1 Running 1m 192.168.2.72
kubectl describe gvm
을 사용하여 VM에 대한 자세한 정보를 봅니다.kubectl describe gvm VM_NAME
VM_NAME
을 수정한 VM의 이름으로 바꿉니다.다음 출력 예시는 성공적으로 적용된 vCPU 수의 변경을 포함하여 VM에 대한 요약 정보를 보여줍니다.
Name: vm1 Namespace: default Labels: <none> Annotations: <none> API Version: vm.cluster.gke.io/v1 Kind: VirtualMachine ... Spec: Compute: Cpu: Vcpus: 4 ...
자세한 내용은 특정 vCPU 및 메모리 컴퓨팅 구성으로 VM을 만드는 방법을 참조하세요.
디스크 리소스 수정
스토리지 요구사항이 변경되면 VM에 가상 디스크를 추가하거나 삭제할 수 있습니다. VM에 연결된 디스크를 수정하려면 다음 단계를 완료합니다.
수정하려는 VM을 중지합니다.
kubectl virt stop VM_NAME
VM_NAME
을 중지하려는 VM의 이름으로 바꿉니다.kubectl
을 사용하여 VM을 수정합니다.kubectl edit gvm VM_NAME
VM_NAME
을 수정하려는 VM의 이름으로 바꿉니다.편집기에서
spec.disks
섹션을 업데이트하여 디스크를 연결하거나 분리합니다.예를 들어 다음 샘플
VirtualMachine
매니페스트는 부팅 디스크만 VM에 연결되어 있음을 보여줍니다.apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: vm1 spec: ... disks: - boot: true virtualMachineDiskName: vm1-boot-dv ...
기존의 빈 디스크를 추가하려면 다음 예시와 같이 편집기에서 디스크 구성을 업데이트합니다.
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: vm1 spec: ... disks: - boot: true virtualMachineDiskName: vm1-boot-dv - virtualMachineDiskName: DISK_NAME ...
DISK_NAME
을 연결할 디스크의 이름으로 바꿉니다.VM 매니페스트를 저장하고 닫습니다.
수정한 VM을 시작합니다.
kubectl virt start VM_NAME
VM_NAME
을 수정한 VM의 이름으로 바꿉니다.VM의
STATUS
를 확인합니다.kubectl get gvm VM_NAME
VM이
Running
상태인지 확인합니다. VM이 호스트가 제공할 수 없는StorageClass
또는 디스크 할당을 요청하면 VM을 시작할 수 없습니다. VM이Running
상태가 아니면VirtualMachine
및VirtualMachineDisk
리소스 매니페스트와 호스트 스토리지 지원을 확인합니다.kubectl describe gvm
을 사용하여 VM에 대한 자세한 정보를 봅니다.kubectl describe gvm VM_NAME
VM_NAME
을 수정한 VM의 이름으로 바꿉니다.다음 출력 예시는 연결된 디스크의 변경사항이 성공적으로 적용된 VM에 대한 요약 정보를 보여줍니다.
Name: vm1 Namespace: default Labels: <none> Annotations: <none> API Version: vm.cluster.gke.io/v1 Kind: VirtualMachine ... Spec: Disks: Name: vm1-boot-dv Name: data-disk-01 ...
자세한 내용은 디스크 만들기 및 관리 방법을 참조하세요.
네트워크 리소스 수정
인프라가 변경되면 VM의 네트워크 구성을 변경해야 할 수 있습니다. 예를 들어 VM을 다른 가상 네트워크에 연결하거나 IP 주소를 수동으로 할당할 수 있습니다. VM의 네트워크 구성을 수정하려면 다음 단계를 완료합니다.
수정하려는 VM을 중지합니다.
kubectl virt stop VM_NAME
VM_NAME
을 중지하려는 VM의 이름으로 바꿉니다.kubectl
을 사용하여 VM을 수정합니다.kubectl edit gvm VM_NAME
VM_NAME
을 수정하려는 VM의 이름으로 바꿉니다.편집기에서 변경하려는 네트워크 구성 설정을 업데이트합니다.
예를 들어 다음 샘플
VirtualMachine
매니페스트는 VM이backend-vlan100
이라는 네트워크에 연결하고 IP 주소가 정의되어 있지 않으므로 DHCP를 사용하는 것을 보여줍니다.apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: vm1 spec: ... interfaces: - name: eth0 networkName: backend-vlan100 default: true ...
VM이 연결되는 네트워크를 변경하거나 수동 IP 주소를 할당하려면 다음 예시와 같이 편집기에서 네트워크 구성을 업데이트합니다.
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: vm1 spec: ... interfaces: - name: eth0 networkName: NETWORK_NAME ipAddresses: - IP_ADDRESS default: true ...
NETWORK_NAME
을 연결할 네트워크의 이름으로 바꾸거나ipAddresses
섹션을 추가하고 VM에서 사용할IP_ADDRESS
를 지정합니다.VM 매니페스트를 저장하고 닫습니다.
수정한 VM을 시작합니다.
kubectl virt start VM_NAME
VM_NAME
을 수정한 VM의 이름으로 바꿉니다.VM의
STATUS
를 확인합니다.kubectl get gvm VM_NAME
VM이
Running
상태인지 확인합니다. VM이 호스트가 제공할 수 없는 네트워크 연결을 요청하면 VM은 시작할 수 없습니다. VM이Running
상태가 아니면VirtualMachine
리소스 매니페스트와 호스트 네트워크 지원을 확인합니다.kubectl describe gvm
을 사용하여 VM에 대한 자세한 정보를 봅니다.kubectl describe gvm VM_NAME
VM_NAME
을 수정한 VM의 이름으로 바꿉니다.다음 예시 출력은 네트워크 및 IP 주소 구성 변경사항이 성공적으로 적용된 VM에 대한 요약 정보를 보여줍니다.
Name: vm1 Namespace: default Labels: <none> Annotations: <none> API Version: vm.cluster.gke.io/v1 Kind: VirtualMachine ... Spec: Compute: Interfaces: Name: eth0 Network Name: backend-vlan200 ... Status: ... Interfaces: Dns Config: Nameservers: 8.8.8.8 gateway4: 10.200.0.9 Ip Addresses: 10.200.0.22/24 Mac Address: 22:b4:e3:d2:ef:fb Name: eth0 Resource Name: vm1-eth0-f2468 ...
자세한 내용은 가상 네트워크 만들기 및 관리 방법을 참조하세요.
자동 다시 시작을 위한 VM 구성
compute
설정 변경사항과 같은 많은 VM 구성 변경사항을 적용하려면 해당 VM 인스턴스(VirtualMachineInstance
)와 변경사항이 동기화되도록 VM을 중지했다가 다시 시작해야 합니다. 베어메탈용 GKE 버전 1.13.0 이상에서 실행되는 VM은 해당 구성을 변경할 때마다 자동으로 다시 시작되도록 구성할 수 있습니다. 이 기능을 사용하도록 VM을 구성할 때 커스텀 리소스를 수정하는 경우 VM을 중지했다가 다시 시작할 필요는 없습니다. Google Distributed Cloud용 VM 런타임은 VM을 모니터링하고, 구성 변경사항이 감지되면 VM을 자동으로 다시 시작하여 변경사항을 동기화합니다.
Config Management를 사용하여 YAML 구성 파일을 관리하는 경우 이 기능이 특히 유용합니다. 이 기능이 없으면 VirtualMachine
커스텀 리소스를 변경하기 전에 VM을 수동으로 중지해야 하며, 변경을 완료한 후 VM을 수동으로 시작해야 합니다.
자동 다시 시작을 사용 설정하려면 다음 안내를 따르세요.
kubectl
을 사용하여 VM을 수정합니다.kubectl edit gvm VM_NAME
편집기에서
autoRestartOnConfigurationChange
필드를 추가하고true
로 설정합니다.vcpus
값 업데이트와 같이 VM을 추가로 변경할 수 있습니다.compute
설정을 수정하면 변경사항을 저장할 때 Google Distributed Cloud용 VM 런타임이 VM을 자동으로 다시 시작합니다.apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: ... name: vm-sample-01 namespace: default resourceVersion: "16711824" uid: ed623879-0cfa-52de-ad2c-b63308e6116c spec: autoRestartOnConfigurationChange: true compute: cpu: vcpus: 2 ...
VM 매니페스트를 저장하고 닫습니다.
해당 VM 인스턴스와 동기화해야 하는 VM에 다른 변경 사항이 있는 경우 Google Distributed Cloud용 VM 런타임이 VM을 다시 시작합니다. 자동 재시작을 사용 설정하도록 변경한 경우 VM을 다시 시작할 필요가 없습니다.
VM의
status
를 확인합니다.kubectl get gvm VM_NAME
VM을 얼마나 빨리 가져오는지에 따라 VM이 다시 시작될 때
state: Starting
이 표시될 수 있습니다. VM이 다시 시작되면state: Running
이 표시됩니다. 이후VirtualMachine
커스텀 리소스 구성을 변경할 때는 VM을 수동으로 중지하고 시작할 필요가 없습니다. 후속 커스텀 리소스 변경사항은 VM 인스턴스에 일관되게 반영됩니다.
다음과 같은 상황의 특성에 유의하세요.
VirtualMachine
커스텀 리소스를 수정하기 전에 VM을 수동으로 중지하면 구성 변경사항이 다시 시작을 트리거하지 않습니다. 구성 변경사항이 유지되기 전에 VM의 중지된 상태입니다.자동 다시 시작 기능을 사용 설정하기 전에 VM에 대한 라벨 또는 일정을 변경한 경우 다른 변경사항 없이
autoRestartOnConfigurationChange
를 추가해도 다시 시작이 트리거되지 않습니다. 이상적으로 이 기능은 VM 인스턴스와 VM 구성의 일관성을 유지하도록 합니다. 그러나 Google Distributed Cloud용 VM 런타임은 이전의 불일치를 감지할 수 없습니다.