Puede configurar un clúster de Tanzu Kubernetes para utilizar redes de pods enrutables especificando antrea-nsx-routed como la CNI del clúster.

Introducción a las redes de pods enrutables

El Modelo de red de Kubernetes requiere que un pod de la red de nodos de un clúster pueda comunicarse con todos los pods de todos los nodos del mismo clúster sin traducción de direcciones de red (Network Address Translation, NAT). Para satisfacer este requisito, a cada pod de Kubernetes se le asigna una dirección IP que se asigna desde una red de pods dedicada.

Cuando se aprovisiona un clúster de Tanzu Kubernetes mediante los complementos de CNI antrea o calico, el sistema crea la red de pods predeterminada 192.168.0.0/16. Esta subred es un espacio de direcciones privadas que solo es único dentro del clúster y no se puede enrutar en Internet. Aunque puede personalizar network.pods.cidrBlocks, la red de pods no se puede enrutar mediante estos complementos de CNI. Para obtener más información, consulte API v1alpha2 de TKGS para aprovisionar clústeres de Tanzu Kubernetes.

La API de servicio Tanzu Kubernetes Grid v1alpha2 admite redes de pods enrutables mediante el complemento de CNI de antrea-nsx-routed. Esta interfaz de red es un complemento de Antrea personalizado configurado para admitir redes de pods enrutables para clústeres de Tanzu Kubernetes. En la especificación de clúster, el campo de bloques CIDR de pods debe ser explícitamente nulo para que la administración de direcciones IP (IPAM) se controle mediante clúster supervisor.

Habilitar redes de pods enrutables permite que los pods se direccionen directamente desde un cliente externo al clúster. Además, las direcciones IP de los pods se conservan para que los servidores y los servicios de red externos puedan identificar los pods de origen y aplicar directivas basadas en direcciones IP. Patrones de tráfico compatibles, incluidos los siguientes:
  • Se permite el tráfico entre un pod de clúster Tanzu Kubernetes y un pod de vSphere en el mismo espacio de nombres de vSphere.
  • El tráfico se descarta entre un pod de clúster de Tanzu Kubernetes y un pod de vSphere en diferentes espacios de nombres de vSphere.
  • Los nodos del plano de control de clúster supervisor pueden acceder a los pods del clúster de Tanzu Kubernetes.
  • Los pods de clúster de Tanzu Kubernetes pueden alcanzar la red externa.
  • La red externa no puede acceder a los pods de clúster de Tanzu Kubernetes. Las reglas de aislamiento de firewall distribuido (DFW) descartan el tráfico en los nodos del clúster de Tanzu Kubernetes.

Requisitos del sistema para pods enrutables

Las redes de pods enrutables requieren que clúster supervisor se configure con NSX-T Data Center. No se pueden utilizar pods enrutables con redes de vSphere vDS nativas.

Los pods enrutables requieren la API de servicio Tanzu Kubernetes Grid v1alpha2. Consulte Requisitos para usar la API v1alpha2 de TKGS.

Requisitos de configuración de NSX-T para pods enrutables

Además de los requisitos básicos, no se requiere una configuración especial de NSX-T para usar redes de pods enrutables con clústeres de Tanzu Kubernetes. Un entorno de vSphere with Tanzu que ejecuta vSphere U3 con NSX-T incluye la versión de NCP para admitir redes de pods enrutables. No se necesita ninguna configuración adicional de NSX-T.

NCP crea un grupo de direcciones IP para la red de pods enrutables desde uno de estos dos orígenes:
  • Si la red de carga de trabajo está configurada con una red de espacio de nombres, NCP creará uno o más grupos de IP a partir de los bloques de IP especificados para esta red de espacio de nombres.
  • Si no hay ninguna red de espacio de nombres especificada para la red de carga de trabajo, NCP creará uno o más grupos de direcciones IP desde el CIDR del pod de clúster supervisor.
Para obtener más información, consulte Agregar redes de cargas de trabajo a un clúster supervisor configurada con redes de VDS y Cambiar la configuración de red de carga de trabajo en un clúster supervisor configurada con NSX-T Data Center.

clúster supervisor Requisitos de configuración para pods enrutables

Además de los requisitos básicos, no se requiere ninguna configuración de clúster supervisor especial para usar redes de pods enrutables con clústeres de Tanzu Kubernetes.

Si las redes de pods enrutables están habilitadas como se describe a continuación, el CIDR de pods de clúster de Tanzu Kubernetes se asigna desde el grupo de direcciones IP creado desde la red de espacio de nombres o, si no hay ninguno, desde el CIDR de pods de clúster supervisor.

Debe asegurarse de que el CIDR de servicios de clúster supervisor que asigna las direcciones IP para los nodos del clúster no se superponga con el CIDR de la red de espacio de nombres o con el CIDR del pod de clúster supervisor.

Ejemplo de configuración de clúster para pods enrutables

El siguiente ejemplo de YAML muestra cómo configurar un clúster con una red de pods enrutable. es una configuración personalizada para invocar a servicio Tanzu Kubernetes Grid y aprovisionar un clúster de Tanzu Kubernetes mediante la API v1alpha2.

La especificación del clúster declara antrea-nsx-routed como la CNI para habilitar las redes de pods enrutables. Cuando se especifica la CNI es antrea-nsx-routed, el campo pods.cidrBlock debe estar vacío. Si se especifica antrea-nsx-routed, se producirá un error en el aprovisionamiento del clúster si no se utilizan redes de 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: