Nesta página, descrevemos como gerenciar máquinas virtuais em racks conectados do Google Distributed Cloud que executam o ambiente de execução de VM no Google Distributed Cloud. É necessário conhecer o ambiente de execução de VM no GDC antes de concluir as etapas nesta página. Para uma lista de sistemas operacionais convidados compatíveis, consulte Sistemas operacionais convidados verificados para o ambiente de execução de VMs no GDC.
Para saber como as máquinas virtuais servem como um componente essencial da plataforma conectada do Distributed Cloud, consulte Extensão do GKE Enterprise para gerenciar VMs de borda locais.
Os clusters conectados do Distributed Cloud são compatíveis com webhooks máquina virtual. Isso permite que o Distributed Cloud Connected valide as solicitações de usuários feitas ao servidor da API Kubernetes local. As solicitações rejeitadas geram informações detalhadas sobre o motivo da rejeição.
Ativar o suporte do ambiente de execução de VMs no GDC no Distributed Cloud Connected
Por padrão, o suporte a máquina virtual do ambiente de execução de VMs no GDC está desativado no Distributed Cloud Connected. Para ativar, siga as etapas nesta seção. As instruções nesta seção pressupõem que você tenha um cluster conectado do Distributed Cloud totalmente funcional.
Modifique o recurso personalizado
VMRuntimecom o conteúdo a seguir e aplique-o ao 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
Não mude o valor do parâmetro
vmImageFormat. O Distributed Cloud Connected não é compatível com nenhum outro formato de disco virtual.Esse processo geralmente leva alguns minutos para ser concluído.
Não mude o valor do parâmetro
vmImageFormat. O Distributed Cloud Connected não é compatível com nenhum outro formato de disco virtual.Esse processo geralmente leva alguns minutos para ser concluído.
Use o seguinte comando para verificar se o recurso personalizado
VMRuntimefoi aplicado ao cluster:kubectl get vmruntime -o yaml
O comando retorna uma saída semelhante a este exemplo:
- apiVersion: vm.cluster.gke.io/v1 kind: VMRuntime metadata: name: vmruntime ... spec: enabled: true vmImageFormat: raw status: ... ready: true ...Use o comando a seguir para verificar se o suporte a máquina virtual do ambiente de execução de VM no GDC foi ativado no cluster:
kubectl get pods -n vm-system
O comando retorna uma saída mostrando os pods do subsistema do VM Runtime no GDC em execução no cluster, semelhante ao exemplo a seguir:
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
Instalar a ferramenta de gerenciamento virtctl
Você precisa da ferramenta de cliente virtctl para gerenciar máquinas virtuais no cluster conectado do Distributed Cloud. Para instalar a ferramenta, siga estas etapas:
Instalar a ferramenta do cliente
virtctlcomo um plug-inkubectlexport 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 -
Verifique se o plug-in
virtestá instalado:kubectl plugin list
Se o plug-in tiver sido instalado, a saída do comando vai listar
kubectl-virtcomo um dos plug-ins.
Provisionar uma máquina virtual no Distributed Cloud Connected
Esta seção fornece exemplos de configuração que ilustram como provisionar uma máquina virtual Linux e uma máquina virtual Windows em um cluster conectado do Distributed Cloud com a camada de abstração de armazenamento do Symcloud.
Não é possível criar uma máquina virtual diretamente em um cluster conectado do Distributed Cloud usando o comando kubectl virt porque o Distributed Cloud Connected não oferece armazenamento de sistema de arquivos para máquinas virtuais.
Antes de concluir as etapas nesta seção, conclua as etapas em Configurar o Distributed Cloud Connected para o Symcloud Storage. Se você desativar o Symcloud Storage no cluster, as máquinas virtuais configuradas para usar esse serviço vão falhar.
Provisionar uma máquina virtual Linux no Distributed Cloud conectado
O exemplo a seguir ilustra como provisionar uma máquina virtual Linux com o Symcloud Storage executando o Ubuntu Server 22.04. A origem da instalação é a imagem do disco ISO do Ubuntu Server 22.04.
Crie um recurso
VirtualMachineDiskcom o conteúdo a seguir para a imagem do disco de instalação do Ubuntu Server e aplique-o ao 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
Crie um recurso
VirtualMachineDiskcom o seguinte conteúdo para o disco rígido virtual da máquina virtual e aplique-o ao cluster:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: "ubuntu-main-disk" spec: size: 200Gi storageClassName: robin
Crie um recurso
VirtualMachineTypecom o seguinte conteúdo, que especifica a configuração da máquina virtual, e aplique-o ao cluster:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineType metadata: name: small-2-20 spec: cpu: vcpus: 2 memory: capacity: 20Gi
Crie um recurso
VirtualMachinecom o conteúdo a seguir, que instancia e inicia a máquina virtual no cluster. Em seguida, aplique ao 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
Você também precisa configurar os seguintes recursos no cluster:
Instale o Ubuntu Server na máquina virtual:
- Aguarde o pod
importerfazer o download da imagem do disco de instalação do Ubuntu Server. Verifique o status da máquina virtual:
kubectl get gvm VM_NAME
Substitua
VM_NAMEpelo nome da máquina virtual,ubu-vmneste exemplo.Faça login na máquina virtual usando SSH ou Área de trabalho remota.
Conclua as etapas de instalação do Ubuntu Linux.
- Aguarde o pod
Limpeza:
Pare a máquina virtual:
kubectl virt stop VM_NAME
Substitua
VM_NAMEpelo nome da máquina virtual,ubu-vmneste exemplo.Edite o arquivo YAML da máquina virtual para remover a referência à imagem do disco de instalação:
kubectl edit gvm VM_NAME
Substitua
VM_NAMEpelo nome da máquina virtual,ubu-vmneste exemplo.Inicie a máquina virtual:
kubectl virt start VM_NAME
Substitua
VM_NAMEpelo nome da máquina virtual,ubu-vmneste exemplo.Exclua o recurso
VirtualMachineDiskpara a imagem do disco de instalação:kubectl delete virtualmachinedisk ubuntu-iso-disk
Provisionar uma máquina virtual do Windows no Distributed Cloud Connected
O exemplo a seguir mostra como provisionar uma máquina virtual do Windows com o
Symcloud Storage. As etapas são semelhantes ao provisionamento de uma máquina virtual Linux, com a adição da imagem de disco do driver virtio, que é necessária para instalar o Windows.
Consiga uma cópia licenciada do Windows e a imagem da mídia de instalação.
Crie um recurso
VirtualMachineDiskcom o seguinte conteúdo para a imagem do disco de instalação do Windows e aplique-o ao 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
Substitua
NAT_GATEWAYpelo URL completo da imagem ISO do disco de instalação do Windows de destino.Crie um recurso
VirtualMachineDiskcom o conteúdo a seguir para o drivervirtioe aplique-o ao 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
Crie um recurso
VirtualMachineDiskcom o seguinte conteúdo para o disco rígido virtual da máquina virtual e aplique-o ao cluster:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: windows-main-disk namespace: default spec: size: 15Gi storageClassName: robin
Crie um recurso
VirtualMachineTypecom o seguinte conteúdo, que especifica a configuração da máquina virtual, e aplique-o ao cluster:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineType metadata: name: small-2-20 spec: cpu: vcpus: 2 memory: capacity: 20Gi
Crie um recurso
VirtualMachinecom o seguinte conteúdo, que instancia e inicia a máquina virtual no cluster, e aplique-o ao 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
Você também precisa configurar os seguintes recursos no cluster:
Instale o Windows na máquina virtual:
- Aguarde o pod
importerfazer o download da imagem do disco de instalação do Windows. Verifique o status da máquina virtual:
kubectl get gvm VM_NAME
Substitua
VM_NAMEpelo nome da máquina virtual,win-vmneste exemplo.Conclua a instalação do Windows seguindo as etapas em Conectar-se à VM do Windows e concluir a instalação do SO.
- Aguarde o pod
Limpeza:
Pare a máquina virtual:
kubectl virt stop VM_NAME
Substitua
VM_NAMEpelo nome da máquina virtual,win-vmneste exemplo.Conclua as etapas em Remover a imagem ISO e o disco dos drivers.
Gerenciar máquinas virtuais em execução no Distributed Cloud Connected
Para instruções sobre como gerenciar máquinas virtuais em execução no Distributed Cloud Connected, consulte a seguinte documentação do ambiente de execução de VM no GDC:
- Conecte-se às VMs
- Listar e visualizar VMs
- Gerenciar o estado de energia
- Editar uma VM
- Exclua uma VM
- Ver registros do console da VM
Para gerenciar máquinas virtuais em execução no Distributed Cloud Connected, primeiro é necessário
Configurar a conectividade kubectl.
Desativar o ambiente de execução de VM no GDC no Distributed Cloud Connected
Siga as etapas nesta seção para desativar o ambiente de execução de VMs no GDC no Distributed Cloud Connected. Antes de desativar o ambiente de execução de VMs no GDC no Distributed Cloud Connected, você precisa interromper e excluir todas as máquinas virtuais no seu cluster do Distributed Cloud Connected, conforme descrito em Excluir uma VM.
Para desativar o ambiente de execução de VMs no GDC no
Distributed Cloud Connected, modifique o recurso personalizado VMRuntime
definindo o parâmetro de especificação enabled como false da seguinte maneira e aplique
ao 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"
Acessar registros de auditoria do sandbox do AppArmor
O Distributed Cloud conectado automaticamente coloca em sandbox as cargas de trabalho máquina virtual
com políticas AppArmor em audit-mode. Uma violação de política gera uma entrada de registro de auditoria.
Exemplo:
{
"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"
...
...
A seguir
- Gerenciar máquinas virtuais em servidores conectados do Distributed Cloud
- Implantar cargas de trabalho no Distributed Cloud conectado
- Gerenciar cargas de trabalho de GPU
- Gerenciar zonas
- Gerenciar máquinas
- Gerenciar clusters
- Gerenciar pools de nós