Puede configurar un servicio de Kubernetes de tipo LoadBalancer para permitir el tráfico del equilibrador de carga en función de la dirección IP de origen de la solicitud entrante y para permitir únicamente el tráfico del pod local.

Requisitos mínimos

Puede utilizar las funciones externalTrafficPolicy y LoadBalancerSourceRanges con un servicio de Kubernetes de tipo LoadBalancer en un clúster de Tanzu Kubernetes que cumpla con los siguientes requisitos mínimos:
Componente Requisito mínimo Más información
vCenter Server y ESXi vSphere 7.0 Update 2 Consulte las notas de la versión.
Clúster supervisor v1.19.1+vmware.2-vsc0.0.8-17610687 Consulte Actualizar clúster supervisor mediante una actualización de los espacios de nombres de vSphere.
Equilibrador de carga

NSX-T Data Center v3.1

Consulte Redes para vSphere with Tanzu.
Versión de Tanzu Kubernetes Una de las versiones más recientes de Tanzu Kubernetes. Consulte Comprobar la compatibilidad del clúster de Tanzu Kubernetes para actualizar.

Acerca de la compatibilidad con la directiva de tráfico local y los rangos de IP de origen

Si está usando redes de NSX-T Data Center, puede configurar un servicio de Kubernetes de tipo LoadBalancer para permitir la directiva de tráfico externo y rangos de IP de origen del equilibrador de carga. La función externalTrafficPolicy permite restringir el tráfico del pod en el nodo local. La función LoadBalancerSourceRange permite especificar direcciones IP de origen para permitirlas o bloquearlas.

Servicio de ejemplo para tráfico local solo

La siguiente especificación de servicio del equilibrador de carga configura la instancia del equilibrador de carga con el parámetro externalTrafficPolicy establecido en Local. El resultado es que el tráfico del pod se enruta solo a esos nodos donde se ejecutan los pods locales.

apiVersion: v1
kind: Service
metadata:
  name: local-only
spec:
  selector:
    app: testApp
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  externalTrafficPolicy: Local
  type: LoadBalancer

La función opera con un monitor de comprobación de estado de NSX-T. Desde una perspectiva de administración de NSX-T, es importante tener en cuenta las operaciones internas de esta función.

Un monitor de comprobación de estado de NSX-T observa el NodePort de comprobación de estado de Kubernetes que asigna kube-proxy para el grupo de servidores que corresponde al servicio de tipo LoadBalancer. El monitor de comprobación de estado de NSX-T envía solicitudes HTTP GET al NodePort de comprobación de estado de destino. El kube-proxy de un nodo devuelve el código de estado HTTP 500 cuando no hay pods locales en ejecución. NSX-T marcará los nodos que no tengan pods locales como DOWN y aparecerán de este modo en NSX Manager. El tráfico se enrutará solo hacia esos nodos que tienen pods locales en ejecución.

Servicio de ejemplo para permitir el tráfico en función de los rangos de IP de origen

La siguiente especificación de servicio del equilibrador de carga configura el parámetro loadBalancerSourceRanges con una matriz de CIDR de IP de origen permitidos. Solo se permitirán solicitudes entrantes procedentes de estos rangos de IP de origen y se descartará todo el resto del tráfico entrante.

apiVersion: v1
kind: Service
metadata:
  name: allow-based-on-source-IPs
spec:
  selector:
    app: testApp
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  loadBalancerSourceRanges:
  - 10.0.0.0/24
  - 10.1.0.0/24
  type: LoadBalancer