A adoção de arquiteturas nativas de nuvem e containerização está transformando a forma como desenvolvemos, implementamos e gerenciamos aplicativos. Containers 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 com estado. Até mesmo instituições financeiras líderes como o Goldman Sachs reconhecem o valor das VMs ao lado das cargas de trabalho em contêiner e estão explorando maneiras de gerenciá-las de forma eficiente.
Isso cria uma divisão potencial: os benefícios da containerizaçã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 e facilitar a transição para tecnologias nativas de nuvem.
Neste artigo, exploramos por que o KubeVirt é uma solução atraente para organizações que buscam otimizar as operações de TI e obter 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 containers 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 que representa máquinas virtuais.
- Máquinas virtuais como “pods”: Usando o KubeVirt, cada VM é executada dentro de um pod especializado, o que integra as VMs de forma mais estreita ao 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 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 contínuo de cargas de trabalho: Derrube as barreiras entre suas aplicações baseadas em VM 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 aprimorada de recursos: O KubeVirt capacita você a executar tanto VMs tradicionais quanto contêineres no mesmo hardware de cluster subjacente. Otimize a utilização de recursos, melhore a densidade da infraestrutura e potencialmente obtenha economias significativas de custos.
- Modernização acelerada: Aplicações legadas vinculadas a VMs não precisam ser um obstáculo à 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 interrupções.
- Infraestrutura à prova de futuro: Ao investir no KubeVirt, você se alinha com os princípios nativos de nuvem e posiciona o Kubernetes como a espinha dorsal da sua pilha de tecnologia. Isso fomenta a flexibilidade e agilidade, permitindo que você se adapte prontamente aos requisitos comerciais em evolução.
Por que Sua Organização Deve se Importar?
O KubeVirt oferece um valor convincente, especialmente nestas áreas:
- Equipes de TI e DevOps: O KubeVirt simplifica as operações fornecendo 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 em direção à modernização da infraestrutura. O KubeVirt alinha os investimentos em tecnologia com o sucesso empresarial de longo prazo.
- Cargas de trabalho mistas: Se você está gerenciando tanto aplicações legadas baseadas em VM quanto implantações modernas containerizadas, o KubeVirt é essencial. Ele permite que você evite o bloqueio de fornecedores, minimize a complexidade e mantenha o controle total sobre suas escolhas de infraestrutura.
Aqui estão alguns pontos específicos de dor que o KubeVirt aborda:
- Frustrado ao gerenciar ambientes separados para VMs e containers? O KubeVirt os reúne, tornando a gestão muito mais fácil.
- Buscando flexibilidade sem comprometer investimentos existentes? O KubeVirt permite que você aproveite sua infraestrutura de VM enquanto moderniza.
- Quer melhorar a eficiência de custos e o uso de recursos? O KubeVirt ajuda a consolidar cargas de trabalho para uma melhor utilização.
- Dificuldades com migrações complexas de aplicativos legados? Modernize de forma incremental 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 OpenShift) baseado em uma das três últimas versões do Kubernetes disponíveis no momento do lançamento do KubeVirt.
2. Configuração do Servidor API do Kubernetes
O servidor API do Kubernetes deve ser configurado com --allow-privileged=true
para executar o DaemonSet privilegiado do KubeVirt.
3. Utilitário Kubectl
Certifique-se de ter o utilitário cliente kubectl
instalado e configurado para interagir com seu cluster.
4. Suporte a Runtime de Contêiner
O KubeVirt é suportado nos seguintes runtimes de contêiner:
Containerd
crio
(comrunv
)
Outros runtimes de contêiner também devem funcionar, mas os mencionados são os principais alvos.
5. Virtualização de Hardware
Hardware com suporte à virtualização é recomendado. 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, pode ser necessário 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 estes passos:
1. Instale o Operador KubeVirt
O operador KubeVirt simplifica a instalação e 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 Não-Hardware
Se a virtualização de hardware não estiver disponível, ative a emulação de software definindo useEmulation como true 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
Prioritize as VMs que são adequadas para containerização. Comece com aplicações menos críticas para ganhar experiência prática.
2. Avalie Networking e Armazenamento
Planeje como conectar a rede de VMs com sua rede Kubernetes existente e integre soluções de armazenamento para dados persistentes usando plugins Container Storage Interface (CSI).
3. Enfoque em Monitoramento e Gerenciamento
Utilize ferramentas de monitoramento do Kubernetes ou explore soluções específicas do KubeVirt para obter visibilidade no desempenho de VMs ao lado de 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 OKD, passos 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 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 Compilações Diárias de Desenvolvedor
Para as últimas compilações 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
Ao seguir estas etapas e melhores práticas, você pode garantir uma implementação suave e bem-sucedida do KubeVirt, proporcionando uma solução unificada de gerenciamento de infraestrutura que utiliza tanto máquinas virtuais quanto contêineres.
Melhores Práticas de Implementação
Siga estas melhores práticas para aproveitar ao máximo o KubeVirt:
- Realize uma avaliação de carga de trabalho: Nem toda aplicação é imediatamente adequada para o KubeVirt. Priorize VMs com bom potencial para containerização. Aplicações menos críticas podem ser uma ótima maneira de ganhar experiência prática enquanto minimiza o risco.
- Avalie rede e armazenamento: Considere cuidadosamente como integrar a rede de VMs com sua rede Kubernetes existente. Planeje a integração de armazenamento para dados persistentes usando soluções como plugins do Container Storage Interface (CSI).
- Enfatize monitoramento e gerenciamento: Adapte suas ferramentas de monitoramento Kubernetes existentes ou explore soluções específicas do KubeVirt para obter visibilidade sobre o desempenho das VMs junto com seus contêineres.
Conclusão
O KubeVirt oferece um caminho atraente para organizações que buscam colher os benefícios das tecnologias nativas da nuvem enquanto maximizam o valor dos investimentos existentes em máquinas virtuais. Ele aumenta a eficiência operacional, promove flexibilidade e acelera sua jornada de modernização.
Source:
https://dzone.com/articles/kubevirt-implementation-who-needs-it-and-why