Vous pouvez configurer un service Kubernetes de type LoadBalancer pour qu'il autorise le trafic d'équilibrage de charge en fonction de l'adresse IP source de la demande entrante, et pour autoriser uniquement le trafic de l'espace local.

Exigences minimales

Vous pouvez utiliser les fonctionnalités externalTrafficPolicy et LoadBalancerSourceRanges avec un service Kubernetes de type LoadBalancer sur un cluster Tanzu Kubernetes qui répond aux exigences minimales suivantes :
Composant Configuration minimale requise Plus d'informations
vCenter Server et ESXi vSphere 7.0 Update 2 Consultez les Notes de mise à jour.
Cluster superviseur v1.19.1+vmware.2-vsc0.0.8-17610687 Reportez-vous à la section Mettre à jour le Cluster superviseur en effectuant une mise à jour des espaces de noms vSphere.
Équilibrage de charge

NSX-T Data Center 3.1

Reportez-vous à la section Mise en réseau pour vSphere with Tanzu.
Version de Tanzu Kubernetes L'une des dernières versions de Tanzu Kubernetes. Reportez-vous à la section Vérifier la compatibilité du cluster Tanzu Kubernetes pour la mise à jour.

À propos de la prise en charge de la stratégie de trafic local et des plages d'adresses IP sources

Si vous utilisez la mise en réseau NSX-T Data Center, vous pouvez configurer un service Kubernetes de type LoadBalancer pour autoriser la stratégie de trafic externe et les plages d'adresses IP sources de l'équilibrage de charge. La fonctionnalité externalTrafficPolicy vous permet de limiter le trafic de l'espace au nœud local. La fonctionnalité LoadBalancerSourceRange vous permet de spécifier les adresses IP sources à autoriser ou à bloquer.

Exemple de service pour le trafic local uniquement

La spécification de service d'équilibrage de charge suivante configure l'instance d'équilibrage de charge avec le paramètre externalTrafficPolicy défini sur Local. Par conséquent, le trafic de l'espace est acheminé uniquement vers les nœuds qui ont des espaces locaux en cours d'exécution.

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

La fonctionnalité fonctionne à l'aide d'une surveillance de santé NSX-T. Du point de vue de l'administration NSX-T, il est important de connaître les opérations internes de cette fonctionnalité.

Un contrôle de santé NSX-T surveille le Kubernetes Health Check NodePort alloué par kube-proxy pour le pool de serveurs qui correspond au service de type LoadBalancer. Un contrôle de santé NSX-T envoie des demandes HTTP GET au Health Check NodePort cible. Le kube-proxy sur un nœud renvoie le code d'état HTTP 500 lorsqu'aucun espace local n'est en cours d'exécution. Les nœuds qui n'ont pas d'espaces locaux seront marqués comme INACTIF par NSX-T et s'afficheront comme tels dans NSX Manager. Le trafic sera acheminé uniquement vers les nœuds qui ont des espaces locaux en cours d'exécution.

Exemple de service pour autoriser le trafic basé sur des plages d'adresses IP sources

La spécification de service d'équilibrage de charge suivante configure le paramètre loadBalancerSourceRanges avec un tableau de CIDR IP sources autorisés. Seules les demandes entrantes provenant de ces plages d'adresses IP sources seront autorisées ; tout autre trafic entrant sera abandonné.

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