Visão geral da rede CNI do Azure no Serviço Kubernetes do Azure (AKS)
Por padrão, os clusters AKS usam kubenet e criam uma rede virtual e uma sub-rede. Com o kubenet, os nós obtêm um endereço IP de uma sub-rede de rede virtual. A conversão de endereços de rede (NAT) é então configurada nos nós e os pods recebem um endereço IP "oculto" atrás do IP do nó. Essa abordagem reduz o número de endereços IP que você precisa reservar em seu espaço de rede para pods usarem.
Com a CNI (Interface de Rede de Contêiner) do Azure, cada pod obtém um endereço IP da sub-rede e pode ser acessado diretamente. Os sistemas na mesma rede virtual que o cluster do AKS veem o IP do pod como o endereço de origem para qualquer tráfego do pod. Os sistemas fora da rede virtual do cluster AKS veem o IP do nó como o endereço de origem de qualquer tráfego do pod. Esses endereços IP devem ser exclusivos em todo o espaço da rede e devem ser planejados com antecedência. Cada nó tem um parâmetro de configuração para o número máximo de pods suportados. O número equivalente de endereços IP por nó é então reservado antecipadamente para esse nó. Essa abordagem requer mais planejamento e muitas vezes leva ao esgotamento do endereço IP ou à necessidade de reconstruir clusters em uma sub-rede maior à medida que as demandas do seu aplicativo crescem.
Nota
Este artigo apresenta apenas a CNI tradicional do Azure. Para Azure CNI Overlay, Azure CNI VNet para alocação IP dinâmica e Azure CNI VNet - Static Block Allocation (Preview). Consulte a documentação deles.
Pré-requisitos
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/16
ou192.0.2.0/24
para o intervalo de endereços de serviço do Kubernetes, intervalo de endereços de 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
Microsoft.Authorization/roleAssignments/write
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 e não 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.
Parâmetros de implantação
Quando você cria um cluster AKS, os seguintes parâmetros são configuráveis para a rede CNI do Azure:
Rede virtual: a rede virtual na qual você deseja implantar o cluster Kubernetes. Se quiser criar uma nova rede virtual para o cluster, selecione Criar nova e siga as etapas na seção Criar rede virtual. Se você quiser selecionar uma rede virtual existente, verifique se ela está no mesmo local e na mesma assinatura do Azure que seu cluster do Kubernetes. Para obter informações sobre os limites e cotas para uma rede virtual do Azure, consulte Limites de assinatura e serviço, cotas e restrições do Azure.
Sub-rede: A sub-rede dentro da rede virtual onde você deseja implantar o cluster. Se quiser criar uma nova sub-rede na rede virtual para o cluster, selecione Criar nova e siga as etapas na seção Criar sub-rede . Para conectividade híbrida, o intervalo de endereços não deve se sobrepor a nenhuma outra rede virtual em seu ambiente.
Plug-in de Rede do Azure: Quando o plug-in de rede do Azure é usado, o serviço LoadBalancer interno com "externalTrafficPolicy=Local" não pode ser acessado de VMs com um IP em clusterCIDR que não pertença ao cluster AKS.
Intervalo de endereços de serviço do Kubernetes: este parâmetro é o conjunto de IPs virtuais que o Kubernetes atribui a serviços internos em seu cluster. Este intervalo não pode ser atualizado depois de criar o cluster. Você pode usar qualquer intervalo de endereços privados que satisfaça os seguintes requisitos:
- Não deve estar dentro do intervalo de endereços IP da rede virtual do cluster
- Não deve sobrepor-se a quaisquer outras redes virtuais com as quais os pares de rede virtual do cluster
- Não deve sobrepor-se a nenhum IPs local
- Não deve estar dentro dos intervalos
169.254.0.0/16
,172.30.0.0/16
,172.31.0.0/16
, ou192.0.2.0/24
Embora seja tecnicamente possível especificar um intervalo de endereços de serviço na mesma rede virtual do cluster, isso não é recomendado. Um comportamento imprevisível pode resultar se intervalos de IP sobrepostos forem usados. Para obter mais informações, consulte a seção Perguntas frequentes deste artigo. Para obter mais informações sobre os serviços do Kubernetes, consulte Serviços na documentação do Kubernetes.
Endereço IP do serviço DNS do Kubernetes: o endereço IP do serviço DNS do cluster. Este endereço tem de estar dentro do intervalo de endereços do serviço Kubernetes. Não use o primeiro endereço IP no seu intervalo de endereços. O primeiro endereço no intervalo de sub-redes é usado para o endereço kubernetes.default.svc.cluster.local .
Perguntas mais frequentes
Posso implantar VMs na minha sub-rede de cluster?
Sim. Mas para o Azure CNI para alocação de IP dinâmico, as VMs não podem ser implantadas na sub-rede do pod.
Que IP de origem os sistemas externos veem para o tráfego originado em um pod habilitado para CNI do Azure?
Os sistemas na mesma rede virtual que o cluster do AKS veem o IP do pod como o endereço de origem para qualquer tráfego do pod. Os sistemas fora da rede virtual do cluster AKS veem o IP do nó como o endereço de origem de qualquer tráfego do pod.
Mas para o Azure CNI para alocação de IP dinâmico, não importa se a conexão está dentro da mesma rede virtual ou entre redes virtuais, o IP do pod é sempre o endereço de origem para qualquer tráfego do pod. Isso ocorre porque a CNI do Azure para alocação de IP dinâmico implementa a infraestrutura de Rede de Contêineres do Microsoft Azure, que oferece experiência de ponta a ponta. Assim, elimina o uso do
ip-masq-agent
, que ainda é usado pelo CNI tradicional do Azure.Posso configurar políticas de rede por pod?
Sim, a política de rede do Kubernetes está disponível no AKS. Para começar, consulte Proteger o tráfego entre pods usando políticas de rede no AKS.
O número máximo de pods pode ser implantado em um nó é configurável?
Sim, quando você implanta um cluster com a CLI do Azure ou um modelo do Gerenciador de Recursos. Consulte Máximo de pods por nó.
Não é possível alterar o número máximo de pods por nó em um cluster existente.
Como configuro propriedades adicionais para a sub-rede que criei durante a criação do cluster AKS? Por exemplo, pontos de extremidade de serviço.
A lista completa de propriedades para a rede virtual e as sub-redes que você cria durante a criação do cluster AKS pode ser configurada na página de configuração de rede virtual padrão no portal do Azure.
Posso usar uma sub-rede diferente dentro da minha rede virtual de cluster para o intervalo de endereços de serviço do Kubernetes?
Não é recomendado, mas esta configuração é possível. O intervalo de endereços de serviço é um conjunto de IPs virtuais (VIPs) que o Kubernetes atribui a serviços internos em seu cluster. A Rede do Azure não tem visibilidade do intervalo de IP de serviço do cluster Kubernetes. A falta de visibilidade do intervalo de endereços de serviço do cluster pode levar a problemas. É possível criar posteriormente uma nova sub-rede na rede virtual do cluster que se sobrepõe ao intervalo de endereços de serviço. Se essa sobreposição ocorrer, o Kubernetes poderá atribuir a um serviço um IP que já esteja em uso por outro recurso na sub-rede, causando comportamento imprevisível ou falhas. Ao garantir que você use um intervalo de endereços fora da rede virtual do cluster, você pode evitar esse risco de sobreposição.
Próximo passo
Saiba mais sobre redes no AKS nos seguintes artigos:
Azure Kubernetes Service