이 문서에서는 VMRuntime 커스텀 리소스를 업데이트하거나 bmctl 명령어를 실행하여 Google Distributed Cloud의 VM 런타임을 사용 설정 또는 사용 중지하는 방법을 설명합니다.
시작하기 전에
GDC용 VM 런타임을 사용 설정하거나 중지하려면 다음 리소스와 도구에 액세스해야 합니다.
- Google Distributed Cloud 버전 1.12.0(
anthosBareMetalVersion: 1.12.0) 이상 클러스터에 대한 액세스 권한. 워크로드 실행이 가능한 모든 클러스터 유형을 사용할 수 있습니다. 필요한 경우 Compute Engine에서 Google Distributed Cloud를 사용해 보거나 클러스터 만들기 개요를 참조하세요. bmctl명령줄 도구 자세한 내용은bmctl도구 다운로드 및 설치를 참조하세요.
GDC용 VM 런타임 사용 설정
Google Distributed Cloud 버전 1.10 이상에서는 GDC용 VM 런타임이 자동으로 설치되지만 기본적으로 중지되어 있습니다. Google Distributed Cloud에서 VM 리소스를 실행하려면 먼저 GDC용 VM 런타임을 사용 설정해야 합니다.
bmctl
런타임을 사용 설정하려면
bmctl도구를 사용합니다.bmctl enable vmruntime --kubeconfig KUBECONFIG_PATH클러스터의 kubeconfig 파일 경로를 제공합니다. 클러스터를 만들면 Google Distributed Cloud가 kubeconfig 파일을 관리자 워크스테이션에 생성합니다. 기본적으로 경로는
bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig입니다.GDC용 VM 런타임이 이미 사용 설정되어 있으면 명령어에서 오류를 반환합니다.
에뮬레이션 또는 이미지 형식과 같은 추가 설정은 VMRuntime 커스텀 리소스를 수정하여 구성할 수 있습니다.
커스텀 리소스
런타임을 사용 설정하려면 VMRuntime 커스텀 리소스를 업데이트합니다. 이 커스텀 리소스는 기본적으로 설치되어 있습니다.
VMRuntime커스텀 리소스를 수정합니다.kubectl edit vmruntime사양에서
enabled:true를 설정합니다.apiVersion: vm.cluster.gke.io/v1 kind: VMRuntime metadata: name: vmruntime spec: enabled: true # useEmulation defaults to "false" if not set. useEmulation: true # vmImageFormat defaults to "qcow2" if not set. vmImageFormat: qcow2앞의
spec섹션에서 다음 값을 설정할 수 있습니다.enabled: GDC용 VM 런타임을 사용 설정하려면 true로 설정합니다.useEmulation: 노드가 하드웨어 가상화를 지원하지 않거나 확실하지 않으면 값을 true로 설정합니다. 사용 가능한 경우 하드웨어 가상화에서 소프트웨어 에뮬레이션보다 우수한 성능을 제공합니다.useEmulation필드가 지정되지 않으면 기본값은false입니다.vmImageFormat: 두 가지 디스크 이미지 형식 값인raw및qcow2를 지원합니다.vmImageFormat을 설정하지 않으면 GDC용 VM 런타임에서raw디스크 이미지 형식을 사용하여 VM을 만듭니다.raw형식은 쓰기 형식의 사본인qcow2보다 우수한 성능을 제공할 수 있지만 더 많은 디스크를 사용할 수 있습니다. VM의 이미지 형식에 대한 자세한 내용은 QEMU 문서의 디스크 이미지 파일 형식을 참조하세요.
편집기에서 커스텀 리소스를 저장합니다.
VMRuntime커스텀 리소스가 사용 설정되었는지 확인합니다.kubectl describe vmruntime vmruntimeVMRuntime커스텀 리소스의 세부정보에는Status섹션이 포함됩니다.VMRuntime.Status.Ready가true로 표시되면 GDC용 VM 런타임이 사용 설정되고 작동 중입니다.
GDC용 VM 런타임 중지
GDC용 VM 런타임을 더 이상 사용할 필요가 없으면 이 기능을 중지할 수 있습니다.
bmctl
런타임을 사용 중지하려면
bmctl도구를 사용합니다.bmctl disable vmruntime --kubeconfig KUBECONFIG_PATH \ --force=true클러스터에 대한 kubeconfig 파일 경로와 다음 구성 옵션에 대한 값을 제공합니다.
--force: 기존 VM 리소스 삭제를 확인하려면true로 설정합니다. 기본값은false입니다.
커스텀 리소스
런타임을 사용 중지하려면 VMRuntime 커스텀 리소스를 업데이트합니다.
VMRuntime커스텀 리소스를 수정합니다.kubectl edit vmruntime사양에서
enabled:false를 설정합니다.apiVersion: vm.cluster.gke.io/v1` kind: VMRuntime metadata: name: vmruntime spec: enabled: false useEmulation: true vmImageFormat: qcow2편집기에서 업데이트된 커스텀 리소스 사양을 저장합니다.
VMRuntime커스텀 리소스가 중지되었는지 확인하려면vm-system네임스페이스에서 실행되는 포드를 봅니다.kubectl get pods --namespace vm-systemGDC용 VM 런타임은
vmruntime-controller-manager배포에 속하는 포드가 네임스페이스에서 실행되는 경우에만 중지됩니다.
VM 실행 동작 이해
GDC용 VM 런타임의 리소스에서 baremetal.cluster.gke.io/vmrumtime-force-disable 주석을 사용하여 VM이 클러스터에서 실행되는 동안 런타임이 중지되었을 때의 동작을 정의할 수 있습니다.
다음 예시는 이 주석의 값이 기본적으로 false로 설정된 것을 보여줍니다.
// VM runtime yaml file
apiVersion: vm.cluster.gke.io/v1
kind: VMRuntime
metadata:
annotations:
baremetal.cluster.gke.io/vmrumtime-force-disable: "false"
name: vmruntime
[...]
이 주석이 false로 설정되면 GDC용 VM 런타임에서 실행 중인 VM을 보호하려고 시도합니다. GDC용 VM 런타임이 중지되기 전에 실행 중인 모든 VM을 삭제하거나 이전 섹션에서와 같이 bmctl disable vmruntime 명령어로 --force=true 매개변수를 지정합니다.
다음 표에서는 주석이 true 또는 false로 설정되었을 때 그리고 --force=true 매개변수를 지정하는지 여부에 따라 실행 중인 VM에 발생하는 결과를 설명합니다.
| 클러스터 상태 | --force 매개변수 | vmrumtime-force-disable 주석 | 동작 |
|---|---|---|---|
| VM 없음 | 해당 사항 없음 | 해당 사항 없음 | GDC용 VM 런타임을 중지합니다. |
| 기존 VM | 참 | 참 | 실행 중인 모든 VM 및 관련 리소스를 삭제합니다. GDC용 VM 런타임을 중지합니다. |
| True | 거짓 | 실행 중인 모든 VM 및 관련 리소스를 삭제합니다. GDC용 VM 런타임을 중지합니다. | |
| 거짓 | 참 | 실행 중인 VM 및 관련 리소스를 삭제하라는 메시지가 표시됩니다. 실행 중인 모든 VM이 삭제되었으면 GDC용 VM 런타임을 중지합니다. | |
| 거짓 | 거짓 | 실행 중인 기존 VM을 삭제하지 않습니다. GDC용 VM 런타임을 중지하지 않습니다. bmctl 명령어가 오류를 반환합니다. |
GDC용 VM 런타임 프리플라이트 검사
GDC용 VM 런타임 프리플라이트 검사는 GDC용 VM 런타임과 VM을 사용하기 전에 머신 환경에서 기본 요건 집합을 검증합니다. GDC용 VM 런타임 프리플라이트 검사가 실패하면 VM 생성이 차단됩니다. spec.enabled가 true로 설정되면 GDC용 VM 런타임 프리플라이트 검사가 자동으로 실행됩니다.
kubectl label nodes NODE_NAME "kubevm.io/VM-SkipSchedule"= --kubeconfig KUBECONFIG_PATH
다음 작업 중 하나를 수행하면 GDC용 VM 런타임 프리플라이트 검사가 실행됩니다.
GDC용 VM 런타임 사용 설정
useEmulation과 같은 GDC용 VM 런타임 기능 사용 설정
클러스터 업그레이드
노드에서
kubevm.io/VM-SkipSchedule라벨 삭제bmctl check vmruntimepfc --kubeconfig KUBECONFIG_PATH명령어를 실행하거나VMRuntimePreflightCheckYAML 매니페스트를 적용하여 GDC용 VM 런타임 프리플라이트 검사 객체를 독립적으로 만듭니다.
최신 GDC용 VM 런타임 프리플라이트 검사가 성공하면 VM을 실행할 수 있습니다. 실행 전 검사가 실패하면 VM 만들기가 차단되고 실행 전 검사 오류가 발생합니다.
실행 전 검사 성공 확인
실행 전 검사가 성공했는지 확인하려면 다음 명령어를 실행합니다.
마지막으로 수행된 실행 전 검사를 찾습니다.
kubectl get vmruntimepfc -n vm-system --kubeconfig KUBECONFIG_PATH출력은 다음 샘플과 같이 표시됩니다.
NAME PASS AGE vmruntime-preflight-check-6ee61513-ea5d-4340-9374-90396cac129e false 42s vmruntime-preflight-check-f8d71751-a01c-471e-bab5-3370fc2addd5 true 21s실행 전 검사의 상태를 찾으려면 다음 명령어를 실행합니다.
kubectl get vmruntime vmruntime -o yaml --kubeconfig KUBECONFIG_PATH... preflightCheckSummary: preflightCheckSummary: featureStatuses: CPU: passed: true KVM: passed: true preflightCheckName: vmruntime-preflight-check-f8d71751-a01c-471e-bab5-3370fc2addd5 preflightCheckPassed: true ...
실행 전 검사 실패 디버그
실행 전 검사가 실패하면 다음 디버그 단계를 수행합니다.
마지막으로 수행된 실행 전 검사를 찾습니다.
kubectl get vmruntimepfc -n vm-system자세한 내용은 실행 전 검사 상태를 확인합니다.
kubectl get vmruntimepfc -n vm-system \ vmruntime-preflight-check-6ee61513-ea5d-4340-9374-90396cac129e -o yaml \ --kubeconfig KUBECONFIG_PATH... status: checks: worker-0--52229ee15841099-22c41577139a7b8c.lab.anthos: passed: false results: - checkName: CPU passed: true - checkName: KVM message: | command terminated with exit code 1 ls: /mnt/dev/kvm: No such file or directory passed: false ...문제를 수정하고 GDC용 VM 런타임 프리플라이트 검사를 다시 실행합니다. 다음은 VMRuntimePreflightCheck YAML 매니페스트 예시를 보여줍니다.
apiVersion: vm.cluster.gke.io/v1 kind: VMRuntimePreflightCheck metadata: name: vmruntime-preflight-check-manual namespace: vm-system