Usando o plug-in CNI da Rede de Pods Nativa da VCN do OCI para a rede de pods

Saiba mais sobre o plug-in CNI de Rede de Pod Nativa da VCN do OCI para comunicação de pods em nós de trabalho em clusters criados usando o Kubernetes Engine (OKE).

O plug-in CNI de Rede de Pod Nativa da VCN do OCI fornece endereços IP aos pods do bloco CIDR de uma VCN. O plug-in CNI de Rede de Pod Nativa da VCN do OCI permite que outros recursos dentro da mesma sub-rede (ou de outra sub-rede) se comuniquem diretamente com pods em um cluster do Kubernetes. Os endereços IP do pod são roteáveis diretamente de outras VCNs conectadas (emparelhadas) para essa VCN, de redes locais e da internet.

Como os pods são roteáveis diretamente, você pode usar a funcionalidade VCN 'nativa' para:

  • Controle o acesso de e para pods usando regras de segurança definidas como parte de grupos de segurança de rede (recomendado) ou listas de segurança. As regras de segurança se aplicam a todos os pods em todos os nós de trabalho conectados à sub-rede de pod especificada para um pool de nós. Consulte Grupos de Segurança de Rede e Listas de Segurança.
  • Observe o tráfego de/para e entre pods usando logs de fluxo da VCN para fins de solução de problemas e auditoria de conformidade. Consulte Logs de Fluxo da VCN.
  • Roteie solicitações de entrada para pods com base em políticas de roteamento especificadas por regras de roteamento e tabelas de roteamento. Consulte Tabelas de Roteamento da VCN.

Ao usar o plug-in CNI de Rede de Pod Nativa da VCN do OCI, os nós de trabalho são conectados a duas sub-redes especificadas para o pool de nós:

  • Sub-rede do Nó de Trabalho: A sub-rede do nó de trabalho suporta comunicação entre processos em execução no plano de controle do cluster (como kube-apiserver, kube-controller-manager, kube-scheduler) e processos em execução no nó de trabalho (como kubelet, kube-proxy). A sub-rede do nó de trabalho pode ser privada ou pública e pode ser uma sub-rede regional (recomendado) ou em diferentes sub-redes específicas do AD (uma em cada domínio de disponibilidade na região).
  • Sub-rede de Pod: A sub-rede de pod suporta comunicação entre pods e acesso direto a pods individuais usando endereços IP de pod privado. A sub-rede de pod pode ser privada ou pública e deve ser uma sub-rede regional. A sub-rede de pod permite que os pods se comuniquem com outros pods no mesmo nó de trabalho, com pods em outros nós de trabalho, com serviços do OCI (por meio de um gateway de serviço) e com a internet (por meio de um gateway NAT). Você especifica uma única sub-rede de pod para todos os pods em execução nos nós de trabalho em um pool de nós. Você pode especificar a mesma sub-rede de pod ou sub-redes de pod diferentes para pools de nós diferentes em um cluster. Você pode especificar a mesma sub-rede de pod para pools de nós em diferentes clusters.

A sub-rede do nó de trabalho e a sub-rede do pod devem estar na mesma VCN. Em algumas situações, a sub-rede do nó de trabalho e a sub-rede do pod podem ser a mesma sub-rede (consulte Número Máximo de VNICs e Pods Suportados por Diferentes Formas). Se a sub-rede do nó de trabalho e a sub-rede do pod forem a mesma sub-rede, a Oracle recomenda definir regras de segurança em grupos de segurança de rede (em vez de em listas de segurança) para rotear o tráfego de rede para nós de trabalho e pods. A sub-rede do nó de trabalho e a sub-rede do pod são adicionais à sub-rede do ponto final da API do Kubernetes e a quaisquer sub-redes do balanceador de carga definidas para o cluster.

Ao usar o plug-in CNI de Rede de Pod Nativa da VCN do OCI, no mínimo duas VNICs são anexadas a cada nó de trabalho. A primeira VNIC está conectada à sub-rede do nó de trabalho. A segunda VNIC está conectada à sub-rede do pod. Por padrão, 31 endereços IP são designados à VNIC para uso por pods em execução no nó de trabalho. Para evitar a falta de endereços IP, os endereços IP são pré-alocados na sub-rede do pod antes da criação dos pods no cluster.

Se a forma selecionada para o pool de nós suportar mais de duas VNICs, as VNICs adicionais poderão ser conectadas à sub-rede do pod para fornecer mais endereços IP para suportar mais pods.

Você pode especificar o número máximo de pods que deseja executar em um único nó de trabalho em um pool de nós, até um limite de 110. O limite de 110 é imposto pelo Kubernetes. Se você quiser mais de 31 pods em um único nó de trabalho, a forma especificada para o pool de nós deverá suportar três ou mais VNICs (uma VNIC para estabelecer conexão com a sub-rede do nó de trabalho e pelo menos duas VNICs para estabelecer conexão com a sub-rede do pod). Consulte Número Máximo de VNICs e Pods Suportados por Diferentes Formas.

Se você quiser conservar o espaço de endereço da sub-rede do pod, reduza o número máximo de pods que deseja executar em um único nó de trabalho e, dessa forma, reduza o número de endereços IP pré-alocados na sub-rede do pod.

Observe o seguinte ao usar o plug-in CNI da Rede de Pod Nativa da VCN do OCI:

  • Você pode usar o plug-in CNI de Rede de Pod Nativa da VCN do OCI com pools de nós virtuais e pools de nós gerenciados.
  • Você só pode usar o plug-in CNI da Rede de Pod Nativa da VCN do OCI com clusters que executam o Kubernetes 1.22 ou posterior (consulte Usando o plug-in CNI da Rede de Pod Nativa da VCN do OCI para a rede de pods). Para obter mais informações, consulte Pod Networking.
  • Se você estiver usando o plug-in CNI de Rede de Pod Nativa da VCN do OCI e quiser especificar uma imagem do OKE como a imagem base para nós de trabalho, não selecione uma imagem do OKE liberada antes de junho de 2022.
  • Os produtos de malha de serviço (como Oracle Cloud Infrastructure Service Mesh, Istio e Linkerd) são suportados ao usar o plug-in CNI do OCI VCN-Native Pod Networking para rede de pods. Observe que, com exceção do complemento Istio, o suporte atualmente está limitado ao Oracle Linux 7 (o suporte para o Oracle Linux 8 está planejado). O complemento Istio é suportado com o Oracle Linux 7 e o Oracle Linux 8. Os nós de trabalho devem estar executando o Kubernetes 1.26 (ou posterior).

Regras de Segurança para Nós de Trabalho e Pods

Ao usar o plug-in CNI da Rede de Pod Nativa da VCN do OCI para a rede de pod, determinadas regras de segurança são necessárias para a sub-rede de pod e a sub-rede do nó de trabalho. Consulte Regras de Segurança para Sub-redes de Pod.

Número Máximo de VNICs e Pods Suportados por Diferentes Formas

O número máximo de VNICs (e, portanto, o número máximo de pods) para nós de trabalho em um pool de nós depende da forma selecionada para o pool de nós.

Para descobrir o número máximo de VNICs de uma forma específica, consulte Formas de Computação.

Para calcular o número máximo de pods em um pool de nós de uma forma específica, use a seguinte equação:

Maximum number of Pods per node = MIN( (Number of VNICs - 1) * 31 ), 110)

Política de IAM Adicional quando um Cluster e seus Recursos Relacionados estão em Diferentes Compartimentos

Para usar o plug-in CNI de Rede de Pod Nativa da VCN do OCI no cenário incomum em que os recursos relacionados de um cluster (como pools de nós, recursos de VCN e de VCN) estão em outro compartimento para o próprio cluster, inclua instruções de política semelhantes às seguintes em uma política do serviço IAM:

Allow any-user to manage instances in tenancy where all { request.principal.type = 'cluster' }
Allow any-user to use private-ips in tenancy where all { request.principal.type = 'cluster' }
Allow any-user to use network-security-groups in tenancy where all { request.principal.type = 'cluster' }

Se você considerar essas instruções de política muito permissivas, poderá restringir as permissões para especificar explicitamente o compartimento ao qual os recursos relacionados pertencem e/ou especificar explicitamente o cluster que tem recursos relacionados em outro compartimento. Por exemplo:

Allow any-user to manage instances in compartment <compartment-ocid-of-nodepool> where all { request.principal.id = '<cluster-ocid>' }
Allow any-user to use private-ips in compartment <compartment-ocid-of-network-resources> where all { request.principal.id = '<cluster-ocid>' }
Allow any-user to use network-security-groups in compartment <compartment-ocid-of-network-resources> where all { request.principal.id = '<cluster-ocid>' }

em que:

  • <compartment-ocid-of-nodepool> é o OCID do compartimento ao qual pertencem pools de nós e instâncias de computação.
  • <compartment-ocid-of-network-resources> é o OCID do compartimento ao qual a VCN e as sub-redes pertencem.

Atualizando o plug-in CNI da Rede de Pods Nativa da VCN do OCI

Quando você especifica a rede de pod nativa da VCN como o tipo de rede de um cluster, o cluster e seus pools de nós usam inicialmente a versão mais recente do plug-in CNI de Rede de Pod Nativa da VCN do OCI.

As atualizações do plug-in da CNI da Rede do Pod Nativo da VCN do OCI são liberadas periodicamente. Você pode especificar que deseja que a Oracle implante as atualizações no cluster automaticamente (o padrão). Como alternativa, você pode especificar que deseja escolher a versão a ser implantada. Se você decidir escolher a versão, você está assumindo a responsabilidade de manter a extensão atualizada. Consulte Configurando Complementos do Cluster.

Independentemente de você ou da Oracle ser responsável por implantar atualizações no plug-in CNI de Rede de Pod Nativo da VCN do OCI, as atualizações só serão aplicadas quando os nós de trabalho forem reinicializados pela próxima vez. Para determinar se as atualizações foram implantadas e estão aguardando aplicação, inspecione os logs do Daemonset vcn-native-ip-cni digitando:

kubectl logs -n kube-system -l app=vcn-native-ip-cni --prefix | grep "reboot required"

Interprete a resposta ao comando da seguinte forma:

  • Se houver saída em resposta ao comando, as atualizações do plug-in CNI de Rede de Pod Nativo da VCN do OCI foram implantadas nos nós de trabalho associados aos pods mostrados na resposta, mas as atualizações estão aguardando para serem aplicadas. As atualizações serão aplicadas quando os nós de trabalho forem reinicializados pela próxima vez.
  • Se não houver saída em resposta ao comando, nenhuma atualização no plug-in CNI de Rede de Pod Nativo da VCN do OCI estará aguardando para ser aplicada.