Questa pagina descrive come gestire le macchine virtuali sui rack Google Distributed Cloud connected che eseguono VM Runtime su Google Distributed Cloud. Prima di completare i passaggi di questa pagina, devi avere familiarità con VM Runtime su GDC. Per un elenco dei sistemi operativi guest supportati, vedi Sistemi operativi guest verificati per VM Runtime su GDC.
Per scoprire in che modo le macchine virtuali fungono da componente essenziale della piattaforma Distributed Cloud connected, consulta Estendere GKE Enterprise per gestire le VM edge on-premise.
I cluster Google Distributed Cloud connesso supportano i webhook delle macchine virtuali. Ciò consente a Distributed Cloud connesso di convalidare le richieste degli utenti effettuate al server API Kubernetes locale. Le richieste rifiutate generano informazioni dettagliate sul motivo del rifiuto.
Abilita il supporto del runtime delle VM su GDC su Distributed Cloud connected
Per impostazione predefinita, il supporto del runtime VM sulle macchine virtuali GDC è disabilitato su Distributed Cloud connected. Per attivarla, completa i passaggi descritti in questa sezione. Le istruzioni in questa sezione presuppongono che tu disponga di un cluster Distributed Cloud connesso completamente funzionante.
Modifica la risorsa personalizzata
VMRuntimecon i seguenti contenuti e applicala al cluster:apiVersion: vm.cluster.gke.io/v1 kind: VMRuntime metadata: name: vmruntime spec: # Enable Anthos VM Runtime support enabled: true # vmImageFormat defaults to "raw" if not set vmImageFormat: "raw" # Set node grace period to 55 seconds; haPolicy: defaultRecoveryStrategy: Reschedule nodeHeartbeatInterval: 15s nodeMonitorGracePeriod: 55s
Non modificare il valore del parametro
vmImageFormat. Distributed Cloud connesso non supporta altri formati di dischi virtuali.In genere, il completamento di questa procedura richiede diversi minuti.
Non modificare il valore del parametro
vmImageFormat. Distributed Cloud connesso non supporta altri formati di dischi virtuali.In genere, il completamento di questa procedura richiede diversi minuti.
Utilizza questo comando per verificare che la risorsa personalizzata
VMRuntimesia stata applicata al cluster:kubectl get vmruntime -o yaml
Il comando restituisce un output simile al seguente esempio:
- apiVersion: vm.cluster.gke.io/v1 kind: VMRuntime metadata: name: vmruntime ... spec: enabled: true vmImageFormat: raw status: ... ready: true ...Utilizza il seguente comando per verificare che il supporto della macchina virtuale di VM Runtime su GDC sia stato abilitato sul cluster:
kubectl get pods -n vm-system
Il comando restituisce un output che mostra i pod del sottosistema VM Runtime su GDC in esecuzione sul cluster, simile al seguente esempio:
NAME READY STATUS RESTARTS AGE cdi-apiserver-6c76c6cf7b-n68wn 1/1 Running 0 132m cdi-deployment-f78fd599-vj7tv 1/1 Running 0 132m cdi-operator-65c4df9647-fcb9d 1/1 Running 0 134m cdi-uploadproxy-7765ffb694-6j7bf 1/1 Running 0 132m macvtap-fjfjr 1/1 Running 0 134m virt-api-77dd99dbbb-bs2fb 1/1 Running 0 132m virt-api-77dd99dbbb-pqc27 1/1 Running 0 132m virt-controller-5b44dbbbd7-hc222 1/1 Running 0 132m virt-controller-5b44dbbbd7-p8xkk 1/1 Running 0 132m virt-handler-n76fs 1/1 Running 0 132m virt-operator-86565697d9-fpxqh 2/2 Running 0 134m virt-operator-86565697d9-jnbt7 2/2 Running 0 134m vm-controller-controller-manager-7844d5fb7b-72d8m 2/2 Running 0 134m vmruntime-controller-manager-845649c847-m78r9 2/2 Running 0 175m
Installa lo strumento di gestione virtctl
Per gestire le macchine virtuali nel cluster Distributed Cloud connesso, devi utilizzare lo strumento client virtctl. Per installare lo strumento, completa i seguenti passaggi:
Installa lo strumento client
virtctlcome plug-inkubectl:export VERSION=v0.59.0-anthos1.28-gke.8 gcloud storage cp gs://anthos-baremetal-release/virtctl/${VERSION}/linux-amd64/virtctl /usr/local/bin/virtctl cd /usr/local/bin sudo ln -s virtctl kubectl-virt sudo chmod a+x virtctl cd -
Verifica che il plug-in
virtsia installato:kubectl plugin list
Se il plug-in è stato installato correttamente, l'output del comando elenca
kubectl-virttra i plug-in.
Esegui il provisioning di una macchina virtuale su Distributed Cloud connesso
Questa sezione fornisce esempi di configurazione che illustrano come eseguire il provisioning di una macchina virtuale Linux e di una macchina virtuale Windows su un cluster connesso Distributed Cloud con il livello di astrazione di Symcloud Storage.
Tieni presente che non puoi creare una macchina virtuale su un cluster connesso a Distributed Cloud direttamente
utilizzando il comando kubectl virt perché Distributed Cloud Connected non fornisce
spazio di archiviazione del file system alle macchine virtuali.
Prima di completare i passaggi descritti in questa sezione, devi completare i passaggi descritti in Configurare Distributed Cloud Connected per Symcloud Storage. Se in un secondo momento disattivi Symcloud Storage sul cluster, le macchine virtuali configurate per utilizzare Symcloud Storage non funzioneranno.
Esegui il provisioning di una macchina virtuale Linux su Distributed Cloud connesso
L'esempio seguente illustra come eseguire il provisioning di una macchina virtuale Linux con Symcloud Storage che esegue Ubuntu Server 22.04. L'origine dell'installazione è l'immagine disco ISO di Ubuntu Server 22.04.
Crea una risorsa
VirtualMachineDiskcon i seguenti contenuti per l'immagine del disco di installazione di Ubuntu Server, quindi applicala al cluster:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: ubuntu-iso-disk spec: size: 20Gi storageClassName: robin diskType: cdrom source: http: url: https://releases.ubuntu.com/jammy/ubuntu-22.04.3-live-server-amd64.iso
Crea una risorsa
VirtualMachineDiskcon i seguenti contenuti per l'hard disk virtuale della macchina virtuale, quindi applicala al cluster:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: "ubuntu-main-disk" spec: size: 200Gi storageClassName: robin
Crea una risorsa
VirtualMachineTypecon i seguenti contenuti che specificano la configurazione della macchina virtuale, quindi applicala al tuo cluster:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineType metadata: name: small-2-20 spec: cpu: vcpus: 2 memory: capacity: 20Gi
Crea una risorsa
VirtualMachinecon i seguenti contenuti che crea un'istanza e avvia la macchina virtuale sul cluster, quindi applicala al cluster:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: labels: kubevirt.io/vm: ubu-vm name: ubu-vm # Propagate the virtual machine name to the VMI spec: osType: Linux compute: virtualMachineTypeName: small-2-20 interfaces: - name: eth0 networkName: my-network default: true disks: - virtualMachineDiskName: ubuntu-main-disk boot: true - virtualMachineDiskName: ubuntu-iso-disk
Devi anche configurare le seguenti funzionalità sul cluster:
Installa Ubuntu Server sulla macchina virtuale:
- Attendi che il pod
importerscarichi l'immagine disco di installazione di Ubuntu Server. Controlla lo stato della macchina virtuale:
kubectl get gvm VM_NAME
Sostituisci
VM_NAMEcon il nome della macchina virtuale,ubu-vmin questo esempio.Accedi alla macchina virtuale utilizzando SSH o Remote Desktop.
Completa i passaggi di installazione di Ubuntu Linux.
- Attendi che il pod
Pulizia:
Arresta la macchina virtuale:
kubectl virt stop VM_NAME
Sostituisci
VM_NAMEcon il nome della macchina virtuale,ubu-vmin questo esempio.Modifica il file YAML della macchina virtuale per rimuovere il riferimento all'immagine disco di installazione:
kubectl edit gvm VM_NAME
Sostituisci
VM_NAMEcon il nome della macchina virtuale,ubu-vmin questo esempio.Avvia la macchina virtuale:
kubectl virt start VM_NAME
Sostituisci
VM_NAMEcon il nome della macchina virtuale,ubu-vmin questo esempio.Elimina la risorsa
VirtualMachineDiskper l'immagine del disco di installazione:kubectl delete virtualmachinedisk ubuntu-iso-disk
Esegui il provisioning di una macchina virtuale Windows su Distributed Cloud connesso
L'esempio seguente illustra come eseguire il provisioning di una macchina virtuale Windows con
Symcloud Storage. I passaggi sono simili al provisioning di una macchina virtuale Linux,
con l'aggiunta dell'immagine disco del driver virtio, necessaria per l'installazione
di Windows.
Ottieni una copia con licenza di Windows e la relativa immagine del supporto di installazione.
Crea una risorsa
VirtualMachineDiskcon i seguenti contenuti per l'immagine del disco di installazione di Windows, quindi applicala al cluster:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: windows-iso-disk namespace: default spec: size: 5Gi storageClassName: robin diskType: cdrom source: http: url: WINDOWS_ISO_URL
Sostituisci
NAT_GATEWAYcon l'URL completo dell'immagine disco ISO dell'installazione di Windows di destinazione.Crea una risorsa
VirtualMachineDiskcon i seguenti contenuti per il drivervirtio, quindi applicala al cluster:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: windows-virtio-driver namespace: default spec: size: 1Gi storageClassName: robin diskType: cdrom source: http: url: https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso
Crea una risorsa
VirtualMachineDiskcon i seguenti contenuti per l'hard disk virtuale della macchina virtuale, quindi applicala al cluster:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: windows-main-disk namespace: default spec: size: 15Gi storageClassName: robin
Crea una risorsa
VirtualMachineTypecon i seguenti contenuti che specificano la configurazione della macchina virtuale, quindi applicala al tuo cluster:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineType metadata: name: small-2-20 spec: cpu: vcpus: 2 memory: capacity: 20Gi
Crea una risorsa
VirtualMachinecon i seguenti contenuti che crea un'istanza e avvia la macchina virtuale sul cluster, quindi applicala al cluster:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: labels: kubevirt.io/vm: win-vm name: win-vm # Propagate the virtual machine name to the VMI spec: osType: Windows compute: virtualMachineTypeName: my-vmt interfaces: - name: eth0 networkName: my-network default: true disks: - virtualMachineDiskName: windows-main-disk boot: true - virtualMachineDiskName: windows-iso-disk - virtualMachineDiskName: win-virtio-driver
Devi anche configurare le seguenti funzionalità sul cluster:
Installa Windows sulla macchina virtuale:
- Attendi che il pod
importerscarichi l'immagine disco di installazione di Windows. Controlla lo stato della macchina virtuale:
kubectl get gvm VM_NAME
Sostituisci
VM_NAMEcon il nome della macchina virtuale,win-vmin questo esempio.Completa l'installazione di Windows seguendo i passaggi descritti in Connettiti alla VM Windows e completa l'installazione del sistema operativo.
- Attendi che il pod
Pulizia:
Arresta la macchina virtuale:
kubectl virt stop VM_NAME
Sostituisci
VM_NAMEcon il nome della macchina virtuale,win-vmin questo esempio.Completa i passaggi descritti in Scollega l'immagine ISO e il disco dei driver.
Gestire le macchine virtuali in esecuzione su Distributed Cloud connected
Per istruzioni sulla gestione delle macchine virtuali in esecuzione su Distributed Cloud Connected, consulta la seguente documentazione sul runtime VM su GDC:
- Connettiti alle VM
- Elenca e visualizza le VM
- Gestire lo stato di alimentazione
- Modifica una VM
- Elimina una VM
- Visualizza i log della console VM
Per gestire le macchine virtuali in esecuzione su Distributed Cloud connesso, devi prima
configurare la kubectlconnettività.
Disabilita il runtime VM su GDC su Distributed Cloud connected
Segui i passaggi descritti in questa sezione per disabilitare VM Runtime su GDC in Distributed Cloud connected. Prima di poter disattivare il runtime VM su GDC su Distributed Cloud connesso, devi arrestare ed eliminare tutte le macchine virtuali sul tuo cluster Distributed Cloud connesso come descritto in Eliminare una VM.
Per disattivare VM Runtime su GDC su
Distributed Cloud connected, modifica la risorsa personalizzata VMRuntime
impostando il parametro spec enabled su false come segue, quindi applicalo
al cluster:
apiVersion: vm.cluster.gke.io/v1 kind: VMRuntime metadata: name: vmruntime spec: # Disable Anthos VM Runtime enabled: false # vmImageFormat defaults to "raw" if not set vmImageFormat: "raw"
Visualizza audit log del sandboxing di AppArmor
Distributed Cloud connected esegue automaticamente il sandbox dei carichi di lavoro delle macchine virtuali
con i criteri AppArmor in audit-mode. Una violazione dei criteri genera una voce di audit log.
Ad esempio:
{
"jsonPayload": {
"_SOURCE_REALTIME_TIMESTAMP": "1734596844149104",
"SYSLOG_TIMESTAMP": "Dec 19 08:27:24 ",
"MESSAGE": "type=AVC msg=audit(1734596844.148:27742): apparmor=\"ALLOWED\" operation=\"open\" profile=\"virt-launcher-audit\" name=\"/etc/libvirt/virtlogd.conf\" pid=182406 comm=\"virtlogd\" requested_mask=\"r\" denied_mask=\"r\" fsuid=0 ouid=0 FSUID=\"root\" OUID=\"root\"",
"PRIORITY": "6",
...
"SYSLOG_RAW": "<14>Dec 19 08:27:24 audisp-syslog: type=AVC msg=audit(1734596844.148:27742): apparmor=\"ALLOWED\" operation=\"open\" profile=\"virt-launcher-audit\" name=\"/etc/libvirt/virtlogd.conf\" pid=182406 comm=\"virtlogd\" requested_mask=\"r\" denied_mask=\"r\" fsuid=0 ouid=0 FSUID=\"root\" OUID=\"root\"\n",
"SYSLOG_IDENTIFIER": "audisp-syslog",
"_GID": "0",
},
"timestamp": "2024-12-19T08:27:24.149109Z",
"labels": {
"gke.googleapis.com/log_type": "system"
},
"receiveTimestamp": "2024-12-19T08:27:24.721842807Z"
...
...
Passaggi successivi
- Gestire le macchine virtuali sui server Distributed Cloud connessi
- Esegui il deployment dei carichi di lavoro su Distributed Cloud connected
- Gestisci i workload GPU
- Gestire le zone
- Gestisci macchine
- Gestire i cluster
- Gestisci i pool di nodi