Visão geral do sandboxing de Pods no Azure Kubernetes Service (AKS)

À medida que os clusters AKS escalam e alojam cargas de trabalho de várias equipas ou locatários, a infraestrutura partilhada pode tornar o isolamento mais complexo. Pode precisar de um isolamento mais forte para evitar que cargas de trabalho intensivas em recursos ou sujeitas a picos perturbem cargas de trabalho previsíveis. Também pode ser necessário isolar cargas de trabalho sensíveis para cumprir os requisitos de segurança.

Para cumprir estes requisitos, pode isolar as suas cargas de trabalho através de estratégias lógicas ou físicas de isolamento. Para isolamento lógico, use namespaces Kubernetes para separar recursos e implementações. Os namespaces partilham a infraestrutura subjacente do cluster, pelo que não fornecem a mesma fronteira física de isolamento que clusters separados. Embora clusters separados forneçam uma fronteira física, esta estratégia pode aumentar os custos quando os clusters não utilizam toda a sua capacidade.

O pod sandboxing no AKS introduz a capacidade de executar as suas cargas de trabalho em máquinas virtuais pod (VMs) leves separadas. Cada VM de pod fornece uma fronteira de isolamento de computação: a carga de trabalho é executada com o seu próprio kernel convidado e está isolada do kernel do anfitrião e das cargas de trabalho noutras VMs de pod.

O sandboxing de Pod baseia-se no projeto de código aberto Kata Containers.

Importante

O limite da pod VM fornece apenas isolamento ao nível da computação. Não isola o plano de controlo do AKS, os caminhos de armazenamento ou dados, nem as ações realizadas por utilizadores com acesso de administrador do cluster. O sandboxing de pods sozinho não proporciona multitenância completa e dura. Para uma implementação multiinquilino, reveja as orientações AKS para soluções multitenant e aplique os controlos necessários de identidade, rede, armazenamento e governação.

Arquitetura e componentes

O isolamento de pods utiliza o ambiente de execução Kata Containers para criar uma máquina virtual leve de pod para cada pod isolado. O diagrama seguinte mostra como os componentes do lado do host criam e gerem a VM pod isolada e como os componentes do lado dos convidados executam a carga de trabalho.

  • No ficheiro de manifesto do pod, defina runtimeClassName: kata-vm-isolation para selecionar o ambiente de execução do Kata Containers.
  • O containerd invoca o shim Kata (containerd-shim-kata-v2) em vez do shim de runtime padrão.
  • O shim Kata 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 gere os contentores e processos de carga de trabalho dentro da VM pod.
  • Quando a VM pod é eliminada, o shim Kata desliga a VM pod e liberta os seus recursos de volta ao anfitrião do contentor.

Benefícios e casos de uso

O sandboxing pod isola cada pod sandboxado numa VM pod leve com o seu próprio kernel convidado. Esta fronteira de computação separa a carga de trabalho do kernel anfitrião e das cargas de trabalho noutras VMs pod. Combine o isolamento em sandbox do pod com controlos como políticas de rede e o Azure Policy para mitigar riscos de rede e de governação que o limite da VM do pod não abrange. Para orientações sobre a seleção de controlos para implementações multiinquilino, consulte as orientações AKS para soluções multiinquilinas.

Casos comuns de utilização

O sandboxing pod pode ajudar-te:

  • Aloje cargas de trabalho de diferentes locatários no mesmo cluster do AKS, fornecendo um limite de isolamento de computação separado para cada pod em sandbox.
  • Isolar cargas de trabalho não confiáveis do kernel anfitrião e cargas de trabalho noutras VMs pod, continuando a usar capacidade partilhada do cluster.
  • Proteger cargas de trabalho sensíveis ou de elevado valor contra cargas de trabalho em execução noutros pods de VM.
  • Atenue o impacto de cargas de trabalho intensivas em recursos ou com picos súbitos de utilização noutros pods isolados em sandbox, aplicando solicitações e limites de CPU e memória a cada VM de pod.
  • Limite o impacto computacional de uma falha de carga de trabalho à VM do respetivo pod.

isolamento de carga de trabalho

Captura de ecrã do diagrama de arquitetura mostrando o isolamento da carga de trabalho no sandboxing do AKS Pod.

O sandboxing pod permite-lhe colocar cargas de trabalho em nós de cluster partilhados, mantendo uma fronteira de isolamento de computação separada para cada pod sandbox.

Podes declarar pedidos de recursos e limites para as tuas cargas de trabalho. O AKS aplica valores padrão quando os omites. A pod VM limita uma carga de trabalho com utilização intensiva de recursos aos recursos de CPU e memória alocados a essa VM. Se uma carga de trabalho fizer com que a sua VM pod falhe, a fronteira de isolamento de computação protege cargas de trabalho noutras VMs pod dessa falha.

Flexibilidade

Pode executar pods isolados e pods padrão no mesmo cluster. Esta flexibilidade permite-lhe aplicar isolamento de VM pod apenas a cargas de trabalho que o necessitem.

Componentes de código aberto

O isolamento de pods utiliza componentes de código aberto, incluindo o VMM Cloud Hypervisor e o ambiente de execução Kata Containers. O desenvolvimento aberto proporciona transparência sobre os componentes de isolamento e permite a revisão comunitária. A arquitetura também separa o kernel convidado em cada VM pod do kernel anfitrião Azure Linux.

Migrar cargas de trabalho existentes

Para uma implementação básica, adicione a classe de runtime Kata a uma especificação pod existente para executar a carga de trabalho numa VM pod. Esta alteração manifesta não garante um comportamento idêntico ao de um pod que usa o tempo de execução padrão runc . Antes da migração, valide o comportamento operacional da carga de trabalho e a compatibilidade das funcionalidades Kubernetes, e tenha em conta o tamanho dos recursos e a sobrecarga da VM pod. Para mais informações, consulte Considerações para o sandboxing em pods.

Próximos passos