Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O Azure CNI com tecnologia Cilium combina o robusto plano de controle do Azure CNI com o plano de dados do Cilium para fornecer alto desempenho de rede e segurança.
Ao usar programas eBPF carregados no kernel do Linux e uma estrutura de objeto de API mais eficiente, a CNI do Azure da plataforma Cilium oferece os seguintes benefícios:
Funcionalidade equivalente aos plug-ins existentes do Azure CNI e do Azure CNI Overlay
Roteamento de serviço aprimorado
Imposição de política de rede mais eficiente
Melhor observabilidade do tráfego de cluster
Suporte para clusters maiores (mais nós, pods e serviços)
IPAM (Gerenciamento de Endereço IP) com a CNI do Azure da plataforma Cilium
A CNI do Azure com tecnologia Cilium pode ser implantada usando dois métodos diferentes para atribuição de IPs de pods:
Atribuir endereços IP de uma rede de sobreposição (semelhante ao modo de Sobreposição da CNI do Azure)
Atribuir endereços IP de uma rede virtual (semelhante à CNI do Azure existente com Atribuição de IP de Pod Dinâmico)
Se você não tiver certeza de qual opção selecionar, leia "Escolhendo um modelo de rede a ser usado".
Versões
Versão do Kubernetes | Versão mínima do Cilium |
---|---|
1.27 (LTS) | 1.13.18 |
1.28 (Fim da vida útil) | 1.13.18 |
1.29 | 1.14.19 |
1.30 (LTS) | 1.14.19 |
1.31 | 1.16.6 |
1,32 | 1.17.0 |
Consulte Versões do Kubernetes com Suporte para obter mais informações sobre o versionamento do AKS e os cronogramas de lançamento.
Imposição da política de rede
O Cilium impõe políticas de rede para permitir ou negar o tráfego entre pods. Com o Cilium, você não precisa instalar um mecanismo de política de rede separado, como o Azure Network Policy Manager ou o Calico.
Limitações
Atualmente, a CNI do Azure, alimentada pelo Cilium, tem as seguintes limitações:
Disponível apenas para Linux, e não para Windows.
As políticas de rede não podem usar
ipBlock
para permitir acesso a IPs de nós ou pods. Veja perguntas frequentes para obter detalhes e soluções alternativas recomendadas.Para as versões Cilium 1.16 ou anteriores, vários serviços do Kubernetes não podem usar a mesma porta de host com protocolos diferentes (por exemplo, TCP ou UDP) (problema Cilium nº 14287).
As políticas de rede não são aplicadas a pods usando a rede de host (
spec.hostNetwork: true
) porque esses pods usam a identidade do host em vez de ter identidades individuais.As Fatias de Ponto de Extremidade do Cilium têm suporte no Kubernetes versão 1.32 e superior. As Fatias do Ponto de Extremidade do Cilium não dão suporte à configuração de como os pontos de extremidade do Cilium são agrupados. Não há suporte para namespaces de prioridade por meio de
cilium.io/ces-namespace
.
Considerações
Para obter recursos como observabilidade em seus recursos de segurança e tráfego de rede, como filtragem baseada em FQDN (Nome de Domínio Totalmente Qualificado) e políticas de rede baseadas em Camada 7 em seu cluster, considere habilitar serviços de Rede de Contêiner Avançado em seus clusters.
Pré-requisitos
CLI do Azure, versão 2.48.1 ou posterior. Execute
az --version
para ver a versão atualmente instalada. Se você precisa instalar ou atualizar, consulte Instalar a CLI do Azure.Se estiver usando modelos do ARM ou a API REST, a versão da API do AKS deverá ser 2022-09-02-preview ou posterior.
Observação
Versões anteriores da API do AKS (2022-09-02preview para 2023-01-02preview) usavam o campo networkProfile.ebpfDataplane=cilium
. As versões da API do AKS desde 2023-02-02preview usam o campo networkProfile.networkDataplane=cilium
para habilitar a CNI do Azure da plataforma Cilium.
Criar um cluster do AKS com a CNI do Azure da plataforma Cilium
Opção 1: atribuir endereços IP de uma rede de sobreposição
Use os comandos a seguir para criar um cluster com uma rede de sobreposição e Cilium. Substitua os valores de <clusterName>
, <resourceGroupName>
e <location>
:
az aks create \
--name <clusterName> \
--resource-group <resourceGroupName> \
--location <location> \
--network-plugin azure \
--network-plugin-mode overlay \
--pod-cidr 192.168.0.0/16 \
--network-dataplane cilium \
--generate-ssh-keys
Observação
O sinalizador --network-dataplane cilium
substitui o sinalizador preterido --enable-ebpf-dataplane
usado em versões anteriores da extensão da CLI aks-preview.
Opção 2: atribuir endereços IP de uma rede virtual
Execute os comandos a seguir para criar um grupo de recursos e uma rede virtual com uma sub-rede para nós e uma para pods.
# Create the resource group
az group create --name <resourceGroupName> --location <location>
# Create a virtual network with a subnet for nodes and a subnet for pods
az network vnet create --resource-group <resourceGroupName> --location <location> --name <vnetName> --address-prefixes <address prefix, example: 10.0.0.0/8> -o none
az network vnet subnet create --resource-group <resourceGroupName> --vnet-name <vnetName> --name nodesubnet --address-prefixes <address prefix, example: 10.240.0.0/16> -o none
az network vnet subnet create --resource-group <resourceGroupName> --vnet-name <vnetName> --name podsubnet --address-prefixes <address prefix, example: 10.241.0.0/16> -o none
Crie o cluster usando --network-dataplane cilium
:
az aks create \
--name <clusterName> \
--resource-group <resourceGroupName> \
--location <location> \
--max-pods 250 \
--network-plugin azure \
--vnet-subnet-id /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Network/virtualNetworks/<vnetName>/subnets/nodesubnet \
--pod-subnet-id /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Network/virtualNetworks/<vnetName>/subnets/podsubnet \
--network-dataplane cilium \
--generate-ssh-keys
Opção 3: atribuir endereços IP da sub-rede de nó
Observação
A CLI do Azure versão 2.69.0 ou posterior é necessária. Execute az --version
para ver a versão atualmente instalada. Se você precisa instalar ou atualizar, consulte Instalar a CLI do Azure.
Crie um cluster usando a sub-rede do nó com um plano de dados Cilium:
az aks create \
--name <clusterName> \
--resource-group <resourceGroupName> \
--location <location> \
--network-plugin azure \
--network-dataplane cilium \
--generate-ssh-keys
Perguntas frequentes
Posso personalizar a configuração do Cilium?
Não, o AKS gerencia a configuração do Cilium e ela não pode ser modificada. Recomendamos que os clientes que precisam de mais controle usem o AKS BYO CNI e instalem o Cilium manualmente.
Posso usar recursos personalizados
CiliumNetworkPolicy
em vez de recursosNetworkPolicy
do Kubernetes?Os clientes podem usar a filtragem FQDN e as Políticas de Camada 7 como parte do pacote de recursos serviços de rede de contêiner avançado .
Posso usar
ClusterwideCiliumNetworkPolicy
?Não há suporte para
ClusterwideCiliumNetworkPolicy
.Quais recursos do Cilium têm suporte no CNI gerenciado pelo Azure? Quais deles exigem Serviços Avançados de Rede de Contêineres?
Recurso com suporte sem ACNS com ACNS Fatias de Ponto de Extremidade do Cilium ✔️ ✔️ Políticas de Rede K8s ✔️ ✔️ Políticas de rede Cilium L3/L4 ✔️ ✔️ Filtragem de FQDN ❌ ✔️ Políticas de Rede L7 (HTTP/gRPC/Kafka) ❌ ✔️ Observabilidade de rede de contêiner (logs de métricas e fluxos) ❌ ✔️ Por que o tráfego está sendo bloqueado quando o
NetworkPolicy
possui umipBlock
que permite o endereço IP?Uma limitação do CNI do Azure Powered da plataforma Cilium é que um
NetworkPolicy
'sipBlock
não pode selecionar IPs de pod ou nó.Por exemplo, esse
NetworkPolicy
tem umipBlock
que permite que todas as saídas0.0.0.0/0
:apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: example-ipblock spec: podSelector: {} policyTypes: - Egress egress: - to: - ipBlock: cidr: 0.0.0.0/0 # This will still block pod and node IPs.
No entanto, quando esse
NetworkPolicy
for aplicado, o Cilium bloqueará a saída para IPs de pods e nós, mesmo que os IPs estejam dentro do CIDRipBlock
.Como solução alternativa, você pode adicionar
namespaceSelector
epodSelector
para selecionar pods. Este exemplo seleciona todos os pods em todos os namespaces:apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: example-ipblock spec: podSelector: {} policyTypes: - Egress egress: - to: - ipBlock: cidr: 0.0.0.0/0 - namespaceSelector: {} - podSelector: {}
Observação
Atualmente não é possível especificar um
NetworkPolicy
com umipBlock
para permitir o tráfego para IPs de nós.O AKS configura limites de CPU ou de memória no Cilium
daemonset
?Não, o AKS não configura limites de CPU ou memória no
daemonset
Cilium porque o Cilium é um componente crítico do sistema para a rede de pods e a imposição da política de rede.A CNI do Azure alimentada pelo Cilium utiliza o Kube-Proxy?
Não, os clusters do AKS criados com um plano de dados de rede como o Cilium não usam o Kube-Proxy. Se os clusters do AKS estiverem na Sobreposição da CNI do Azure ou na CNI do Azure com alocação de IP dinâmica e forem atualizados para clusters do AKS que executam a CNI do Azure da plataforma Cilium, novas cargas de trabalho de nós serão criadas sem kube-proxy. Cargas de trabalho mais antigas também são migradas para serem executadas sem kube-proxy como parte desse processo de atualização.
Próximas etapas
Saiba mais sobre a rede no AKS nos seguintes artigos:
Atualizar os modos IPAM do Interface de Rede de Contêiner do CNI do Azure a tecnologia Dataplane.
Usar um endereço IP estático com o balanceador de carga do Serviço do Kubernetes do Azure (AKS).
Usar um balanceador de carga interno com o AKS (Serviço de Contêiner do Azure)
Criar um controlador de entrada básico com conectividade de rede externa
Azure Kubernetes Service