O vSphere with Tanzu oferece uma funcionalidade de Serviço de VM que permite que os engenheiros de DevOps implantem e executem VMs, além de contêineres, em um ambiente Kubernetes compartilhado e comum. Você pode usar o Serviço de VM para gerenciar o ciclo de vida de máquinas virtuais em um namespace. O Serviço de VM gerencia VMs autônomas e VMs que compõem Tanzu Kubernetes Grid clusters.
O Serviço de VM atende às necessidades das equipes de DevOps que usam Kubernetes, mas têm cargas de trabalho baseadas em VM existentes que não podem ser facilmente conteinerizadas. Ele também ajuda os usuários a reduzir a sobrecarga de gerenciamento de uma plataforma que não seja Kubernetes junto com uma plataforma de contêiner. Ao executar contêineres e VMs em uma plataforma Kubernetes, as equipes de DevOps podem consolidar o volume de carga de trabalho em apenas uma plataforma.
Cada VM implantada por meio do Serviço de VM funciona como uma máquina completa que executa todos os componentes, incluindo seu próprio sistema operacional, sobre a infraestrutura vSphere with Tanzu. A VM tem acesso à rede e ao armazenamento fornecidos por um Supervisor e é gerenciada usando o comando padrão do Kubernetes kubectl. A VM é executada como um sistema totalmente isolado, imune à interferência de outras VMs ou cargas de trabalho no ambiente do Kubernetes.
Quando usar máquinas virtuais em uma plataforma Kubernetes?
Geralmente, a decisão de executar cargas de trabalho em um contêiner ou em uma VM depende das suas necessidades e objetivos de negócios. Entre os motivos para usar VMs aparecem os seguintes:
- Seus aplicativos não podem ser conteinerizados.
- Você tem requisitos de hardware específicos para seu projeto.
- Os aplicativos são projetados para um kernel personalizado ou sistema operacional personalizado.
- Os aplicativos são mais adequados para execução em uma VM.
- Você deseja ter uma experiência consistente do Kubernetes e evitar sobrecarga. Em vez de executar conjuntos separados de infraestrutura para plataformas que não sejam Kubernetes e de contêiner, você pode consolidar essas pilhas e gerenciá-las com um comando kubectl familiar.
Conceitos do serviço de VM
Para descrever o estado de uma VM a ser implantada em um vSphere Namespace, use parâmetros como uma classe de VM, uma imagem de VM e uma classe de armazenamento. O Serviço de VM reúne essas especificações para criar VMs autônomas ou VMs compatíveis com clusters Tanzu Kubernetes Grid.
- Serviço de VM
-
O Serviço de VM é um componente do
vSphere with Tanzu que fornece uma API declarativa no estilo Kubernetes para gerenciamento de VMs e recursos vSphere associados. O Serviço de VM permite que os administradores do vSphere forneçam recursos e modelos, como classes de VM e imagens de VM, para o Kubernetes. Os engenheiros de DevOps podem usar esses recursos para descrever o estado desejado de uma VM. Depois que os engenheiros de DevOps especificam o estado da VM, o Serviço de VM converte o estado desejado em um estado realizado em relação aos recursos de infraestrutura de backup.
Uma VM criada por meio do Serviço de VM pode ser gerenciada somente a partir do namespace Kubernetes com os comandos kubectl. Os administradores de vSphere não podem gerenciar a VM do vSphere Client, mas podem exibir seus detalhes e monitorar os recursos que ela usa. Para obter informações, consulte Monitorar máquinas virtuais disponíveis em vSphere with Tanzu.
- Classe de VM
-
A classe VM é uma especificação de VM que pode ser usada para solicitar um conjunto de recursos para uma VM. A classe VM é controlada e gerenciada por um administrador vSphere e define parâmetros como o número de CPUs virtuais, capacidade de memória e configurações de reserva. Os parâmetros definidos são apoiados e garantidos pelos recursos de infraestrutura subjacentes de um
Supervisor.
Um administrador do vSphere pode criar classes de VM personalizadas.
Além disso, o Workload Management oferece várias classes de VM padrão. Geralmente, cada tipo de classe padrão vem em duas edições: garantido e melhor esforço. Uma edição garantida reserva totalmente os recursos solicitados por uma especificação de VM. Uma edição de classe de melhor esforço não permite que os recursos sejam sobrecarregados. Normalmente, um tipo garantido é usado em um ambiente de produção.
Exemplos de classes de VM padrão incluem o seguinte.
Classe CPU Memória (GB) CPU e memória reservadas guaranteed-large
4 16 Sim best-effort-large
4 16 Não guaranteed-small
2 4 Sim best-effort-small
2 4 Não O administrador do vSphere pode atribuir qualquer número de classes de VM existentes para disponibilizá-las aos engenheiros de DevOps em um namespace específico.
A classe VM fornece uma experiência simplificada para os engenheiros de DevOps. O DevOps não precisa entender a configuração completa de cada VM que planeja criar. Em vez disso, eles podem selecionar uma classe de VM entre as opções disponíveis, e o Serviço de VM gerencia a configuração da VM.
No lado do Kubernetes, as classes de VM aparecem como recursos VirtualMachineClass e VirtualMachineClassBinding.
- Imagem da VM
-
Uma imagem de VM é um modelo que contém uma configuração de software, incluindo um sistema operacional, aplicativos e dados.
Quando os engenheiros de DevOps criam VMs, eles podem selecionar imagens da biblioteca de conteúdo associada ao namespace. Para o DevOps, as imagens são expostas como objetos VirtualMachineImage.
Um administrador do vSphere pode criar imagens de VM compatíveis com o vSphere with Tanzu e carregá-las em uma biblioteca de conteúdo.
- Origem do conteúdo
- Um engenheiro de DevOps usa uma biblioteca de conteúdo como fonte de imagens para criar uma VM. Semelhante às classes de VM, um administrador do vSphere atribui bibliotecas de conteúdo existentes a um namespace para disponibilizá-las aos engenheiros de DevOps.
- Classe de armazenamento
- O Serviço de VM usa classes de armazenamento para colocar discos virtuais e anexar volumes persistentes dinamicamente. Para obter mais informações sobre classes de armazenamento, consulte Como usar o armazenamento persistente com cargas de trabalho.
- Especificação de VM
- Os engenheiros de DevOps descrevem o estado desejado de uma VM em um arquivo YAML que reúne a imagem da VM, a classe da VM e a classe de armazenamento.
- Rede
- O Serviço de VM não tem nenhum requisito específico e depende da configuração de rede disponível em vSphere with Tanzu. O Serviço de VM é compatível com os dois tipos de rede, a rede vSphere ou a NSX. Quando VMs são implantadas, um provedor de rede disponível aloca endereços IP estáticos para as VMs. Para obter informações, consulte Rede do supervisor na documentação do vSphere with Tanzu Conceitos e planejamento.
Serviço de VM e Supervisor com vSphere zonas
Quando você cria VMs em um Supervisor de três zonas, a instância de VM é replicada em todas as zonas disponíveis. Para controlar o posicionamento das VMs por meio do arquivo YAML, a equipe de DevOps pode usar o rótulo Kubernetes topology.kubernetes.io/zone. Por exemplo, topology.kubernetes.io/zone: zone-a02.
Fluxo de trabalho para provisionamento e monitoramento de uma VM
Como administrador do vSphere, você define proteções para a política e a governança das VMs e fornece recursos de VM, como classes e modelos de VM para engenheiros de DevOps. Depois que uma VM for implantada, você poderá monitorá-la usando o vSphere Client.
Etapa | Realizado por | Descrição |
---|---|---|
1 | vSphere administrador | Criar bibliotecas de conteúdo e atribuí-las a um namespace |
2 | vSphere administrador | Criar uma classe de VM e atribuí-la a um namespace Para usar a NVIDIA vGPU, configure um dispositivo PCI na classe VM. Consulte Adicionar dispositivos PCI a uma classe de VM em vSphere with Tanzu. |
3 | Engenheiro de DevOp | Provisionar uma VM em um namespace Kubernetes Para VMs de cluster Tanzu Kubernetes Grid, consulte Usando Tanzu Kubernetes Grid 2 com vSphere with Tanzu. |
4 | vSphere administrador | Monitorar VMs implantadas |