Traga seu próprio plug-in CNI (Container Network Interface) com o Serviço Kubernetes do Azure (AKS)

O Kubernetes não fornece um sistema de interface de rede por padrão. Em vez disso, os plug-ins de rede fornecem essa funcionalidade. O Serviço Kubernetes do Azure (AKS) fornece vários plug-ins CNI suportados. Para obter informações sobre plugins suportados, consulte os conceitos de rede AKS.

Os plugins suportados atendem à maioria das necessidades de rede no Kubernetes. No entanto, os usuários avançados do AKS podem querer o mesmo plug-in CNI usado em ambientes Kubernetes locais ou usar funcionalidades avançadas disponíveis em outros plug-ins CNI.

Este artigo mostra como implantar um cluster AKS sem plug-in CNI pré-instalado. A partir daí, você pode instalar qualquer plug-in CNI de terceiros que funcione no Azure.

Suporte

O suporte da Microsoft não pode ajudar com problemas relacionados à CNI em clusters implantados com Bring your own Container Network Interface (BYOCNI). Por exemplo, questões relacionadas à CNI cobririam a maior parte do tráfego leste/oeste (pod to pod), juntamente com kubectl proxy comandos semelhantes. Se você quiser suporte relacionado ao CNI, use um plug-in de rede AKS suportado ou procure suporte do fornecedor terceirizado do plug-in BYOCNI.

Ainda há suporte para questões não relacionadas à CNI.

Pré-requisitos

  • Para o Azure Resource Manager (ARM) ou Bicep, use pelo menos a versão do modelo 2022-01-02-preview ou 2022-06-01.
  • Para a CLI do Azure, use pelo menos a versão 2.39.0.
  • A rede virtual para o cluster AKS deve permitir conectividade de saída com a Internet.
  • Os clusters AKS não podem usar 169.254.0.0/16, 172.30.0.0/16, 172.31.0.0/16ou 192.0.2.0/24 para o intervalo de endereços de serviço Kubernetes, intervalo de endereços pod ou intervalo de endereços de rede virtual de cluster.
  • A identidade do cluster usada pelo cluster AKS deve ter pelo menos permissões de Colaborador de Rede na sub-rede dentro da sua rede virtual. Se você deseja definir uma função personalizada em vez de usar a função interna de Colaborador de Rede, as seguintes permissões são necessárias:
    • Microsoft.Network/virtualNetworks/subnets/join/action
    • Microsoft.Network/virtualNetworks/subnets/read
  • A sub-rede atribuída ao pool de nós AKS não pode ser uma sub-rede delegada.
  • O AKS não aplica Grupos de Segurança de Rede (NSGs) à sua sub-rede nem modifica nenhum dos NSGs associados a essa sub-rede. Se você fornecer sua própria sub-rede e adicionar NSGs associados a essa sub-rede, deverá garantir que as regras de segurança nos NSGs permitam o tráfego dentro do intervalo CIDR do nó. Para obter mais informações, consulte Grupos de segurança de rede.

Crie um cluster AKS sem plug-in CNI pré-instalado

  1. Crie um grupo de recursos do Azure para seu cluster AKS usando o az group create comando.

    az group create -l eastus -n myResourceGroup
    
  2. Crie um cluster AKS usando o az aks create comando. Passe o --network-plugin parâmetro com o valor do parâmetro de none.

    az aks create -l eastus -g myResourceGroup -n myAKSCluster --network-plugin none
    

Implantar um plug-in CNI

Quando o provisionamento do AKS for concluído, o cluster estará online, mas todos os nós estarão em um NotReady estado, conforme mostrado no exemplo a seguir:

  $ kubectl get nodes
  NAME                                STATUS     ROLES   AGE    VERSION
  aks-nodepool1-23902496-vmss000000   NotReady   agent   6m9s   v1.21.9

  $ kubectl get node -o custom-columns='NAME:.metadata.name,STATUS:.status.conditions[?(@.type=="Ready")].message'
  NAME                                STATUS
  aks-nodepool1-23902496-vmss000000   container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:Network plugin returns error: cni plugin not initialized

Neste ponto, o cluster está pronto para a instalação de um plug-in CNI.

Próximos passos

Saiba mais sobre redes no AKS nos seguintes artigos: