Você pode criar um TanzuKubernetesCluster com a rede de pods roteáveis configurando uma Rede de Namespaces roteáveis em Supervisor e especificando antrea-nsx-routed como a CNI do cluster.

Sobre a rede de pods roteáveis

Quando você provisiona um cluster Tanzu Kubernetes usando os plug-ins CNI antrea ou calico, o sistema cria a rede de pods padrão 192.168.0.0/16. Essa sub-rede é um espaço de endereçamento privado exclusivo apenas dentro do cluster e não roteável na rede.

A API do TKG v1alpha3 é compatível com a rede de pods roteáveis usando o plug-in antrea-nsx-routed CNI. Essa interface de rede é um plug-in do Antrea personalizado configurado para oferecer suporte a redes de pods roteáveis para clusters TKG. Na especificação do cluster, o campo Blocos CIDR de pods deve ser explicitamente nulo para que o gerenciamento de endereços IP (IPAM) seja tratado pelo Supervisor. Consulte o exemplo abaixo.

A ativação da rede de pods roteáveis permite que os pods sejam endereçados diretamente de um cliente externo ao cluster. Além disso, os endereços IP do pod são preservados para que os serviços e servidores de rede externos possam identificar os pods de origem e aplicar políticas com base nos endereços IP. Padrões de tráfego compatíveis, incluindo o seguinte:
  • O tráfego é permitido entre um pod de cluster TKG e um vSphere Pod no mesmo vSphere Namespace.
  • O tráfego é descartado entre um pod de cluster TKG e um vSphere Pod em vSphere Namespaces diferente.
  • Os nós do plano de controle Supervisor podem acessar os pods de cluster do TKG.
  • Os pods de cluster do TKG podem acessar a rede externa.
  • A rede externa não pode acessar os pods de cluster do TKG. O tráfego é descartado por regras de isolamento de firewall distribuído (DFW) nos nós de cluster.

Criando uma rede de pods roteáveis: Supervisor configuração

A criação de uma rede de pods roteáveis requer configuração no Supervisor e no cluster TKG.
Observação: Supervisor deve ser configurado com NSX para usar a rede de pods roteáveis. Você não pode usar pods roteáveis com a rede VDS.
Para configurar uma rede de pods roteáveis em Supervisor:
  1. Crie um novo vSphere Namespace.

    Consulte Criar um vSphere Namespace para hospedar clusters TKG em Supervisor.

  2. Marque a opção de caixa de seleção para Substituir as configurações de rede do Supervisor.

    Consulte Substituir Supervisor configurações de rede para obter orientação.

  3. Desmarque Modo NAT.
  4. Preencha a Rede de namespaces com uma sub-rede roteável. O NCP criará um ou mais pools de IPs a partir dos blocos de IPs especificados para a rede.
  5. Certifique-se de que a Rede de namespaces roteável que você adicionou não se sobreponha ao CIDR de serviços que aloca os endereços IP para os nós do cluster.

Criando uma rede de pods roteáveis: configuração de cluster do TKG

O exemplo de YAML a seguir mostra como configurar um cluster com uma rede de pods roteáveis.

A especificação de cluster declara antrea-nsx-routed como a CNI para habilitar a rede de pods roteáveis. Se antrea-nsx-routed for especificado, o provisionamento de cluster falhará se a rede NSX-T não estiver sendo usada.

Quando o CNI é especificado como antrea-nsx-routed, o campo pods.cidrBlock deve estar vazio.
apiVersion: run.tanzu.vmware.com/v1alpha3
kind: TanzuKubernetesCluster
metadata:
  name: tkc-routable-pods
  namespace: tkg2-cluster-ns
spec:
  topology:
    controlPlane:
      replicas: 3
      vmClass: guaranteed-medium
      storageClass: tkg2-storage-policy
      tkr:  
        reference:
          name: v1.23.8---vmware.2-tkg.2-zshippable
    nodePools:
    - name: worker-nodepool-a1
      replicas: 3
      vmClass: guaranteed-large
      storageClass: tkg2-storage-policy
      tkr:  
        reference:
          name: v1.22.8---vmware.1-tkg.2-zshippable
  settings:
    storage:
      defaultClass: tkg2-storage-policy
    network:
      #antrea-nsx-routed is the required CNI
      cni:
        name: antrea-nsx-routed
      services:
        cidrBlocks: ["10.97.0.0/24"]
      #pods.cidrBlocks must be null (empty)
      pods:
        cidrBlocks:
      serviceDomain: cluster.local