Visão geral do pod sandboxing no AKS (Serviço de Kubernetes do Azure)

À medida que os clusters do AKS dimensionam e hospedam cargas de trabalho de várias equipes ou locatários, a infraestrutura compartilhada pode tornar o isolamento mais complexo. Talvez seja necessário um isolamento mais forte para evitar que cargas de trabalho com uso intensivo de recursos ou com picos repentinos prejudiquem cargas de trabalho previsíveis. Talvez você também precise isolar cargas de trabalho confidenciais para atender aos requisitos de segurança.

Para atender a esses requisitos, você pode isolar suas cargas de trabalho por meio de estratégias de isolamento lógico ou físico. Para isolamento lógico, use namespaces do Kubernetes para separar recursos e implantações. Os namespaces compartilham a infraestrutura de cluster subjacente, portanto, eles não fornecem o mesmo limite de isolamento físico que clusters separados. Embora clusters separados forneçam um limite físico, essa estratégia pode aumentar os custos quando os clusters não usam sua capacidade total.

O sandbox de pods no AKS permite executar suas cargas de trabalho em máquinas virtuais (VMs) de pods leves e separadas. Cada VM de pod fornece um limite de isolamento de computação: a carga de trabalho é executada com seu próprio kernel convidado e é isolada do kernel do host e das cargas de trabalho em outras VMs de pod.

O isolamento de pod é baseado no projeto de código aberto Kata Containers.

Importante

O limite da VM do pod fornece apenas isolamento dos recursos de computação. Ele não isola o plano de controle do AKS, o armazenamento ou os caminhos de dados ou as ações executadas pelos usuários com acesso de administrador de cluster. O sandbox de pods, por si só, não oferece multilocação completa e rígida. Para uma implantação multilocatário, examine as diretrizes do AKS para soluções multilocatários e aplique os controles de identidade, rede, armazenamento e governança necessários.

Arquitetura e componentes

O sandboxing de pod usa o runtime dos Contêineres kata para criar uma VM de pod leve para cada pod em área restrita. O diagrama a seguir mostra como os componentes do lado do host criam e gerenciam a VM de pod isolada e como os componentes do lado convidado executam a carga de trabalho.

  • No manifesto do pod, defina runtimeClassName: kata-vm-isolation para selecionar o runtime do Kata Containers.
  • O containerd invoca o shim do Kata (containerd-shim-kata-v2) em vez do shim de tempo de execução padrão.
  • O Kata shim inicia o monitor de máquina virtual (VMM) do Cloud Hypervisor, que cria uma VM de pod com um kernel convidado separado e o agente Kata.
  • O agente Kata cria e gerencia os contêineres e os processos de carga de trabalho dentro da VM do pod.
  • Quando a VM do pod é excluída, o shim Kata desliga a VM do pod e libera seus recursos de volta para o host do contêiner.

Benefícios e casos de uso

O sandbox de pods isola cada pod em sandbox em uma VM de pod leve com seu próprio kernel convidado. Essa fronteira computacional separa a carga de trabalho tanto do kernel do host quanto das cargas de trabalho em outras VMs de pod. Combine o sandbox de pods com controles como políticas de rede e o Azure Policy para lidar com riscos de rede e governança que o limite da VM do pod não cobre. Para obter diretrizes sobre como selecionar controles para implantações multilocatários, consulte as diretrizes do AKS para soluções multilocatários.

Casos de uso comuns

O sandbox de pods pode ajudar você a:

  • Hospede cargas de trabalho de diferentes locatários no mesmo cluster do AKS, ao mesmo tempo em que fornece um limite separado de isolamento computacional para cada pod em sandbox.
  • Isole cargas de trabalho não confiáveis do kernel do host e das cargas de trabalho em outras VMs de pod, continuando a usar a capacidade compartilhada do cluster.
  • Proteja cargas de trabalho confidenciais ou de alto valor contra cargas de trabalho em execução em outras VMs de pod.
  • Reduzir o impacto de cargas de trabalho com uso intensivo de recursos ou com picos de demanda em outros pods em sandbox, aplicando solicitações e limites de CPU e memória a cada VM de pod.
  • Limitar o impacto computacional de uma falha de carga de trabalho à sua VM de pod.

Isolamento de carga de trabalho

Captura de tela do diagrama de arquitetura mostrando o isolamento de cargas de trabalho no sandbox de Pods do AKS.

O isolamento por sandbox de pods permite coimplantar cargas de trabalho em nós compartilhados do cluster, mantendo um limite separado de isolamento computacional para cada pod em sandbox.

Você pode declarar solicitações de recursos e limites para suas cargas de trabalho. O AKS aplica valores padrão quando você os omite. A VM do pod limita uma carga de trabalho com uso intensivo de recursos à CPU e à memória alocadas para essa VM. Se uma carga de trabalho fizer com que sua VM de pod falhe, o limite de isolamento de computação protegerá cargas de trabalho em outras VMs de pod contra essa falha.

Flexibilidade

Você pode executar pods em área restrita e padrão no mesmo cluster. Essa flexibilidade permite aplicar o isolamento da VM do pod apenas às cargas de trabalho que precisam dele.

Componentes de software livre

O isolamento de pod usa componentes de código aberto, incluindo o VMM Cloud Hypervisor e o runtime Kata Containers. O desenvolvimento aberto fornece transparência nos componentes de isolamento e permite a revisão da comunidade. A arquitetura também separa o kernel convidado presente em cada pod VM do kernel do host Azure Linux.

Migrar cargas de trabalho existentes

Para uma implantação básica, adicione a classe de runtime do Kata a uma especificação de pod existente para executar a carga de trabalho em uma pod VM. Essa alteração no manifesto não garante um comportamento idêntico ao de um pod que usa o runtime padrão runc. Antes da migração, valide o comportamento operacional da carga de trabalho e a compatibilidade de recursos do Kubernetes e contabilize o dimensionamento e a sobrecarga de recursos da VM do pod. Para obter mais informações, consulte Considerações sobre o isolamento de Pod.

Próximas etapas