A adoção de arquiteturas nativas de nuvem e contêineres está transformando a maneira como desenvolvemos, implementamos e gerenciamos aplicativos. Os contêineres oferecem velocidade, agilidade e escalabilidade, impulsionando uma mudança significativa nas estratégias de TI. No entanto, a realidade para muitas organizações é que as máquinas virtuais (VMs) continuam desempenhando um papel crítico, especialmente quando se trata de aplicativos legados ou stateful. Até mesmo instituições financeiras líderes como o Goldman Sachs reconhecem o valor das VMs ao lado das cargas de trabalho contêinerizadas e estão explorando maneiras de gerenciá-las de forma eficiente.
Isso cria uma possível divisão: os benefícios da contêinerização de um lado e a necessidade duradoura de VMs do outro. O KubeVirt preenche essa lacuna ao estender o poder do Kubernetes para o gerenciamento de máquinas virtuais, permitindo unificar sua infraestrutura enquanto possibilita uma transição mais suave para as tecnologias nativas de nuvem.
Neste artigo, exploramos por que o KubeVirt é uma solução convincente para organizações que buscam otimizar as operações de TI e ganhar flexibilidade em um ambiente de infraestrutura híbrida.
O Que Exatamente é o KubeVirt?
O KubeVirt é um projeto de código aberto que transforma o Kubernetes em uma plataforma poderosa capaz de gerenciar tanto contêineres quanto máquinas virtuais. Em termos simples, o KubeVirt transforma o Kubernetes em um único plano de controle para toda a sua infraestrutura.
Aqui está como funciona:
- KubeVirt como uma extensão: O KubeVirt adiciona definições de recursos personalizados (CRDs) ao Kubernetes, introduzindo um novo tipo de objeto representando máquinas virtuais.
- Máquinas virtuais como “pods”: Usando o KubeVirt, cada VM é executada dentro de um pod especializado, que integra as VMs de forma estreita no ecossistema do Kubernetes.
- Gerenciamento simplificado de VMs com Kubernetes: Agora você pode aproveitar as mesmas ferramentas do Kubernetes (
kubectl
e a API do Kubernetes) e as melhores práticas para criar, iniciar, parar, migrar e monitorar as VMs junto com suas cargas de trabalho em contêineres.
Pense no KubeVirt como habilitando o Kubernetes a falar a linguagem da virtualização, abrindo um mundo de possibilidades para o gerenciamento de sua infraestrutura.
O Impacto nos Negócios do KubeVirt
O KubeVirt oferece benefícios tangíveis que vão além da elegância técnica. Ao adotar o KubeVirt, sua organização tem a oportunidade de obter o seguinte:
- Gerenciamento de carga de trabalho sem emendas: Derrube as barreiras entre suas aplicações baseadas em VMs e suas cargas de trabalho em contêineres. Gerencie tudo a partir de uma única plataforma usando as mesmas ferramentas e processos, simplificando significativamente as operações e reduzindo a complexidade.
- Eficiência de recursos aprimorada: O KubeVirt capacita você a executar tanto VMs tradicionais quanto contêineres no mesmo hardware subjacente do cluster. Otimize a utilização de recursos, melhore a densidade da infraestrutura e potencialmente realize economias significativas de custos.
- Modernização acelerada: Aplicações legadas vinculadas a VMs não precisam ser um obstáculo para a inovação. O KubeVirt oferece um caminho gradual para modernizar aplicações no seu próprio ritmo. Você pode containerizar e migrar componentes ao longo do tempo, tudo dentro do mesmo ambiente Kubernetes, minimizando a interrupção.
- Infraestrutura à prova de futuro: Ao investir no KubeVirt, você se alinha aos princípios nativos da nuvem e posiciona o Kubernetes como a espinha dorsal da sua pilha de tecnologia. Isso promove flexibilidade e agilidade, permitindo que você se adapte prontamente às exigências empresariais em evolução.
Por que sua organização deve se importar?
O KubeVirt oferece um valor convincente, especialmente nessas áreas:
- Equipes de TI e DevOps: O KubeVirt simplifica as operações ao fornecer um plano de controle unificado para todas as suas cargas de trabalho. Ele permite que você otimize fluxos de trabalho, reduza a sobrecarga de ferramentas e melhore a eficiência geral da equipe.
- Executivos: Ganhe flexibilidade operacional e alcance reduções de custos e um caminho simplificado para a modernização da infraestrutura. O KubeVirt alinha os investimentos em tecnologia com o sucesso empresarial a longo prazo.
- Cargas de trabalho mistas: Se você está gerenciando tanto aplicações legadas baseadas em VM quanto implantações modernas em contêineres, o KubeVirt é essencial. Ele permite que você evite o bloqueio de fornecedor, minimize a complexidade e mantenha controle total sobre suas escolhas de infraestrutura.
Aqui estão alguns pontos de dor específicos que o KubeVirt aborda:
- Frustrado em gerenciar ambientes separados para VMs e contêineres? O KubeVirt os une, tornando a gestão muito mais fácil.
- Procurando flexibilidade sem comprometer os investimentos existentes? O KubeVirt permite que você aproveite sua infraestrutura de VM enquanto moderniza.
- Deseja melhorar a eficiência de custos e o uso de recursos? O KubeVirt ajuda a consolidar cargas de trabalho para melhor utilização.
- Enfrentando dificuldades com migrações complexas de aplicativos legados? Modernize incrementalmente e controle seu ritmo com o KubeVirt.
Começando: Implantação e Implementação
A implantação do KubeVirt requer um ambiente Kubernetes bem preparado. Esta seção fornece um guia detalhado para ajudá-lo a configurar e implementar o KubeVirt em sua infraestrutura.
Pré-requisitos
Antes de começar, certifique-se de que os seguintes requisitos sejam atendidos:
1. Cluster Kubernetes
Você precisa de um cluster Kubernetes (ou um derivado como o OpenShift) baseado em uma das três versões mais recentes do Kubernetes disponíveis na época do lançamento do KubeVirt.
2. Configuração do Servidor de API do Kubernetes
O servidor de API do Kubernetes deve ser configurado com --allow-privileged=true
para executar o DaemonSet privilegiado do KubeVirt.
3. Utilitário Kubectl
Assegure-se de que o utilitário cliente kubectl
esteja instalado e configurado para interagir com seu cluster.
4. Suporte ao Tempo de Execução de Contêiner
O KubeVirt é suportado nos seguintes tempos de execução de contêiner:
Containerd
crio
(comrunv
)
Outros tempos de execução de contêiner também devem funcionar, mas os mencionados são os principais alvos.
5. Virtualização de Hardware
É recomendado o uso de hardware com suporte à virtualização. Você pode usar virt-host-validate
para garantir que seus hosts sejam capazes de executar cargas de trabalho de virtualização:
$ virt-host-validate qemu
Considerações de Rede e Segurança
-
Configuração de Rede: Planeje como suas VMs se conectarão e interagirão com redes externas e o restante do seu ambiente Kubernetes.
-
Integração do AppArmor: Em sistemas com o AppArmor habilitado, você pode precisar modificar os perfis do AppArmor para permitir a execução de contêineres privilegiados do KubeVirt. Por exemplo:
# vim /etc/apparmor.d/usr.sbin.libvirtd
/usr/libexec/qemu-kvm PUx,
# apparmor_parser -r /etc/apparmor.d/usr.sbin.libvirtd
Instalação do KubeVirt
Para instalar o KubeVirt, siga estas etapas:
1. Instale o Operador KubeVirt
O operador KubeVirt simplifica a instalação e o gerenciamento dos componentes do KubeVirt. Execute os seguintes comandos para implantar a versão mais recente do KubeVirt:
# Point at latest release
$ export RELEASE=$(curl https://storage.googleapis.com/kubevirt-prow/release/kubevirt/kubevirt/stable.txt)
# Deploy the KubeVirt operator
$ kubectl apply -f https://github.com/kubevirt/kubevirt/releases/download/$ RELEASE /kubevirt-operator.yaml
# Create the KubeVirt CR (instance deployment request) which triggers the actual installation
$ kubectl apply -f https://github.com/kubevirt/kubevirt/releases/download/$ RELEASE /kubevirt-cr.yaml
# Wait until all KubeVirt components are up
$ kubectl -n kubevirt wait kv kubevirt --for condition=Available
2. Configuração para Virtualização Sem Hardware
Se a virtualização de hardware não estiver disponível, habilite a emulação de software configurando useEmulation como verdadeiro no CR do KubeVirt:
$ kubectl edit -n kubevirt kubevirt kubevirt
# Add the following to the kubevirt.yaml file
spec
configuration
developerConfiguration
useEmulationtrue
Melhores Práticas de Implementação
Para aproveitar ao máximo o KubeVirt, siga estas melhores práticas:
1. Realize uma Avaliação de Carga de Trabalho
Priorize VMs que são adequadas para containerização. Comece com aplicações menos críticas para obter experiência prática.
2. Avalie Networking e Armazenamento
Planeje como integrar a rede VM com sua rede Kubernetes existente e integrar soluções de armazenamento para dados persistentes usando plugins de Container Storage Interface (CSI).
3. Enfatize Monitoramento e Gerenciamento
Utilize ferramentas de monitoramento do Kubernetes ou explore soluções específicas do KubeVirt para obter visibilidade do desempenho da VM junto com seus containers.
4. Migração ao Vivo
Ative e configure a migração ao vivo para mover VMs em execução para outros nós de computação sem tempo de inatividade. Isso envolve configurar portões de recursos e parâmetros específicos de migração no CR do KubeVirt:
apiVersion kubevirt.io/v1
kind KubeVirt
metadata
name kubevirt
namespace kubevirt
spec
configuration
developerConfiguration
featureGates
LiveMigration
migrations
parallelMigrationsPerCluster5
parallelOutboundMigrationsPerNode2
bandwidthPerMigration 64Mi
completionTimeoutPerGiB800
progressTimeout150
Exemplo de Instalação no OpenShift (OKD)
Se estiver utilizando o OKD, etapas adicionais incluem configurar Restrições de Contexto de Segurança (SCC):
$ oc adm policy add-scc-to-user privileged -n kubevirt -z kubevirt-operator
Exemplo de Instalação no k3OS
Para o k3OS, certifique-se de carregar os módulos necessários em todos os nós antes de implantar o KubeVirt:
k3os
modules
kvm
vhost_net
Reinicie os nós com essa configuração e então implante o KubeVirt conforme descrito acima.
Instalação de Builds Diárias de Desenvolvedor
Para as últimas builds de desenvolvedor, execute:
$ LATEST=$(curl -L https://storage.googleapis.com/kubevirt-prow/devel/nightly/release/kubevirt/kubevirt/latest)
$ kubectl apply -f https://storage.googleapis.com/kubevirt-prow/devel/nightly/release/kubevirt/kubevirt/$ LATEST /kubevirt-operator.yaml
$ kubectl apply -f https://storage.googleapis.com/kubevirt-prow/devel/nightly/release/kubevirt/kubevirt/$ LATEST /kubevirt-cr.yaml
Implantação a Partir da Fonte
Seguindo esses passos e melhores práticas, você pode garantir uma implementação suave e bem-sucedida do KubeVirt, fornecendo uma solução unificada de gerenciamento de infraestrutura que aproveita tanto máquinas virtuais quanto contêineres.
Práticas Recomendadas de Implementação
Siga essas melhores práticas para obter o máximo do KubeVirt:
- Realize uma avaliação da carga de trabalho: Nem toda aplicação é imediatamente adequada para o KubeVirt. Priorize as VMs com bom potencial para containerização. Aplicações menos críticas podem ser uma ótima maneira de adquirir experiência prática minimizando riscos.
- Avalie a rede e o armazenamento: Considere cuidadosamente como integrar a rede das VMs com a rede Kubernetes existente. Planeje a integração de armazenamento para dados persistentes usando soluções como os plugins Container Storage Interface (CSI).
- Enfatize o monitoramento e gerenciamento: Adapte suas ferramentas de monitoramento Kubernetes existentes ou explore soluções específicas do KubeVirt para obter visibilidade do desempenho das VMs ao lado de seus contêineres.
Conclusão
O KubeVirt oferece um caminho atrativo para organizações que buscam colher os benefícios das tecnologias nativas da nuvem ao mesmo tempo que maximizam o valor dos investimentos em máquinas virtuais existentes. Ele impulsiona a eficiência operacional, promove a flexibilidade e acelera sua jornada de modernização.
Source:
https://dzone.com/articles/kubevirt-implementation-who-needs-it-and-why