È possibile configurare un cluster di Tanzu Kubernetes in modo che utilizzi una rete di pod instradabili specificando antrea-nsx-routed come CNI per il cluster.

Introduzione alla rete di pod instradabili

Il modello di rete Kubernetes richiede che un pod della rete del nodo di un cluster sia in grado di comunicare con tutti i pod in tutti i nodi dello stesso cluster senza Network Address Translation (NAT). Per soddisfare questo requisito, a ogni pod Kubernetes viene assegnato un indirizzo IP allocato da una rete di pod dedicata.

Quando si esegue il provisioning di un cluster di Tanzu Kubernetes utilizzando i plug-in di CNI antrea o calico, il sistema crea la rete di pod predefinita 192.168.0.0/16. Questa subnet è uno spazio di indirizzi privati che è univoco solo all'interno del cluster e non instradabile su Internet. Anche se è possibile personalizzare network.pods.cidrBlocks, la rete di pod non può essere instradabile tramite questi plug-in di CNI. Per ulteriori informazioni, vedere Parametri di configurazione per il provisioning dei cluster Tanzu Kubernetes mediante l'API v1alpha2 del Servizio Tanzu Kubernetes Grid.

L'API v1alpha2 di Servizio Tanzu Kubernetes Grid supporta la rete di pod instradabili tramite il plug-in di CNI antrea-nsx-routed. Questa interfaccia di rete è un plug-in personalizzato Antrea configurato per supportare reti di pod instradabili per i cluster di Tanzu Kubernetes. Nella specifica del cluster, il campo dei blocchi CIDR dei pod deve essere esplicitamente nullo in modo che la gestione degli indirizzi IP (IPAM) venga eseguita dal Cluster supervisore.

L'abilitazione della rete di pod instradabili consente di risolvere direttamente i pod da un client esterno al cluster. Gli indirizzi IP dei pod vengono inoltre conservati in modo che i servizi di rete e i server esterni possano identificare i pod di origine e applicare criteri in base agli indirizzi IP. I modelli di traffico supportati includono i seguenti:
  • Il traffico è consentito tra un pod del cluster di Tanzu Kubernetes e un Pod vSphere nello stesso Spazio dei nomi vSphere.
  • Il traffico viene eliminato tra un pod del cluster di Tanzu Kubernetes e un Pod vSphere in Spazi dei nomi vSphere diversi.
  • I nodi del piano di controllo del Cluster supervisore possono raggiungere i pod del cluster Tanzu Kubernetes.
  • I pod del cluster di Tanzu Kubernetes possono raggiungere la rete esterna.
  • La rete esterna non può raggiungere i pod del cluster di Tanzu Kubernetes. Il traffico viene eliminato dalle regole di isolamento DFW (Distributed Firewall) nei nodi del cluster di Tanzu Kubernetes.

Requisiti di sistema per i pod instradabili

La rete di pod instradabili richiede la configurazione del Cluster supervisore con NSX-T Data Center. Non è possibile utilizzare pod instradabili con servizi di rete vSphere vDS nativi.

I pod instradabili richiedono l'API v1alpha2 di Servizio Tanzu Kubernetes Grid. Vedere Requisiti per l'utilizzo dell'API v1alpha2 Servizio Tanzu Kubernetes Grid.

Requisiti di configurazione di NSX-T per i pod instradabili

A parte i requisiti di base, non è necessaria alcuna configurazione speciale di NSX-T per utilizzare reti di pod instradabili con cluster di Tanzu Kubernetes. Un ambiente di vSphere with Tanzu che esegue vSphere U3 con NSX-T include la versione di NCP per supportare le reti di pod instradabili. Non è necessaria alcuna configurazione di NSX-T aggiuntiva.

NCP crea un pool di IP per la rete di pod instradabili da una delle due origini:
  • Se la rete del carico di lavoro è configurata con una rete dello spazio dei nomi, NCP creerà uno o più pool di IP dai blocchi di IP specificati per questa rete dello spazio dei nomi.
  • Se non viene specificata alcuna rete dello spazio dei nomi per la rete del carico di lavoro, NCP creerà uno o più pool di IP dal CIDR del pod del Cluster supervisore.
Per ulteriori informazioni, vedere Aggiunta di reti del carico di lavoro a un Cluster supervisore configurato con la rete VDS e Modifica delle impostazioni di rete del carico di lavoro in un Cluster supervisore configurato con NSX-T Data Center.

Requisiti di configurazione del Cluster supervisore per i pod instradabili

A parte i requisiti di base, non è necessaria alcuna configurazione speciale del Cluster supervisore per utilizzare reti di pod instradabili con cluster di Tanzu Kubernetes.

Se la rete di pod instradabili è abilitata come descritto di seguito, il CIDR dei pod del cluster di Tanzu Kubernetes viene allocato dal pool di IP creato dalla rete dello spazio dei nomi o, se non è presente, dal CIDR del pod del Cluster supervisore.

È necessario assicurarsi che il CIDR dei servizi del Cluster supervisore che alloca gli indirizzi IP per i nodi del cluster non si sovrapponga al CIDR della rete dello spazio dei nomi o al CIDR del pod del Cluster supervisore.

Esempio di configurazione del cluster per i pod instradabili

Il seguente esempio di codice YAML indica come configurare un cluster con una rete di pod instradabili. Si tratta di una configurazione personalizzata per richiamare l'Servizio Tanzu Kubernetes Grid ed eseguire il provisioning di un cluster di Tanzu Kubernetes utilizzando l'API v1alpha2.

La specifica del cluster dichiara antrea-nsx-routed come CNI per abilitare la rete dei pod instradabili. Quando la CNI è antrea-nsx-routed, il campo pods.cidrBlock deve essere vuoto. Se si specifica antrea-nsx-routed, il provisioning del cluster non riuscirà se non si utilizza la rete NSX-T.

apiVersion: run.tanzu.vmware.com/v1alpha2
kind: TanzuKubernetesCluster
metadata:
  name: tkgs-v2-cluster-routable-pods
  namespace: tkgs-cluster-ns
spec:
  topology:
    controlPlane:
      replicas: 3
      vmClass: guaranteed-medium
      storageClass: vwt-storage-policy
      tkr:  
        reference:
          name: v1.21.2---vmware.1-tkg.1.ee25d55
    nodePools:
    - name: worker-nodepool-a1
      replicas: 3
      vmClass: guaranteed-large
      storageClass: vwt-storage-policy
      tkr:  
        reference:
          name: v1.21.2---vmware.1-tkg.1.ee25d55
  settings:
    storage:
      defaultClass: vwt-storage-policy
    network:
      #`antrea-nsx-routed` is the required CNI
      #for routable pods 
      cni:
        name: antrea-nsx-routed
      services:
        cidrBlocks: ["10.97.0.0/24"]
      serviceDomain: tanzukubernetescluster.local
      #`pods.cidrBlocks` value must be empty
      #when `antrea-nsx-routed` is the CNI 
      pods:
        cidrBlocks: