Vous pouvez créer des CRD (CustomResourceDefinitions) pour surveiller l'utilisation des équilibreurs de charge NSX et créer des équilibreurs de charge NSX de couche 7 pour gérer les charges d'entrée que l'équilibreur de charge par défaut ne peut pas traiter. Ces CRD ne sont pas destinées à la mise à l'échelle des équilibreurs de charge de couche 4 créés pour les services Kubernetes LoadBalancer.

Si vous disposez d'une topologie de niveau 1 partagée, vous devez configurer tier0_gateway sous [nsx_v3] dans le ConfigMap nsx-ncp-config pour utiliser cette fonctionnalité.

Les CRD sont :
  • NSXLoadBalancerMonitor : cette CRD est utilisée pour rapporter les statistiques d'utilisation des équilibreurs de charge NSX. En mode Stratégie, cette CRD surveille uniquement les équilibreurs de charge de l'espace de noms créés à l'aide de la CRD LoadBalancer.
  • LoadBalancer : cette CRD est utilisée pour créer de nouveaux équilibreurs de charge NSX. La définition de cette ressource se trouve dans le fichier NCP YAML. En mode de stratégie et déploiements TKGI, il s'agit d'une ressource d'espace de noms. En déploiements de mode de gestionnaire, il s'agit d'une ressource au niveau du cluster.

La procédure d'activation de cette fonctionnalité est la même pour le mode de gestionnaire et le mode de stratégie.

Effectuez les étapes suivantes pour activer cette fonctionnalité :
  • Définissez l'option enable_lb_crd dans la section [k8s] sur True.
  • Appliquez le fichier YAML NCP à l'aide de la commande suivante :

    kubectl apply -f ncp-<platform>.yaml

Pour créer un nouvel équilibreur de charge NSX, appliquez un fichier YAML qui définit un CRD LoadBalancer. Par exemple,
apiVersion: vmware.com/v1alpha1
kind: LoadBalancer
metadata:
    name: cluster1-lbs0
spec:
    httpConfig: {}
    size: SMALL

Ce fichier YAML créera un équilibreur de charge NSX de la taille spécifiée, ainsi qu'une paire de serveurs virtuels de couche 7 sans persistance, SSL ou les paramètres X-Forward. Le paramètre size peut être SMALL, MEDIUM ou LARGE. La valeur par défaut est SMALL. Une fois l'équilibreur de charge NSX créé, la taille ne peut pas être modifiée et toute mise à jour du paramètre size est ignorée. L'adresse IP du serveur virtuel est allouée à partir du pool externe par défaut configuré pour les équilibreurs de charge. Les ports par défaut sont 80 et 443. Les ports non standard sont pris en charge si le port personnalisé est inclus dans l'en-tête de l'hôte HTTP. Notez que les ports personnalisés sont uniquement pris en charge dans les entrées non TLS. En outre, les serveurs virtuels créés par le CRD LoadBalancer ne prennent pas en charge le paramètre « activer le journal d'accès ».

Pour vérifier l'état de création du CRD LoadBalancer, exécutez la commande suivante :
kubectl get lb <name of the LoadBalancer> -o yaml
Le résultat devrait ressembler à ce qui suit :
status:
 conditions:
 - status: "True"
   type: Ready
 httpVirtualIP: <realized virtual IP>

Ce résultat indique que la création a réussi. Si la création a échoué, status sera False et aucune adresse IP virtuelle ne sera disponible.

Vous pouvez également personnaliser les paramètres de l'équilibreur de charge NSX et des serveurs virtuels. Pour configurer l'adresse IP et le port du serveur virtuel :
spec:
    httpConfig:
        virtualIP: <ip address, default to auto-allocate>
        port: <port number, default to 80>

Remarque : vous ne devez pas configurer la même adresse IP virtuelle pour différents CRD LoadBalancer.

Pour spécifier l'affinité de session et le mode X-forwarded :
spec:
    httpConfig:
         xForwardedFor: <INSERT or REPLACE, default to None>
         affinity:
             type: <source_ip or cookie, default to None>
             timeout: <timeout number, default to 10800>
Pour configurer les paramètres TLS :
spec:
    httpConfig:
        tls:
            port: <tls port number, default to 443>
            secretName: <name of secret, default to None>
Notez que même si vous définissez les ports HTTP et HTTPS sur des valeurs autres que par défaut, l'imprimante entrante affichera toujours les valeurs de port par défaut (80 et 443) lors de l'affichage de l'état d'entrée en raison d'une limitation Kubernetes. Vous devez toujours utiliser les ports configurés pour accéder à l'entrée. Par exemple,
curl -I -HHost:tea.example.com http://$INGRESS_IP:$CRD_LB_HTTP_PORT/tea

Vous pouvez créer le secret avant ou après la création du LoadBalancer. Pour mettre à jour le certificat, supprimez d'abord le secretName de la spécification LoadBalancer, mettez à jour les données du secret, puis rattachez le même secret à l'aide de la configuration ci-dessus. La création d'un nouveau secret et la mise à jour du secretName fonctionneront également. Notez que le partage des mêmes données secrètes entre différents équilibreurs de charge CRD n'est pas pris en charge. Vous devez configurer des équilibreurs de charge CRD avec des certificats différents.

Pour afficher l'état et les statistiques des équilibreurs de charge NSX, exécutez la commande suivante :
kubectl get lbm
Tous les NSXLoadBlancerMonitors vont ainsi être répertoriés, un pour chaque équilibreur de charge NSX. Les informations suivantes s'affichent :
  • Utilisation : nombre de charges de travail sur l'équilibreur de charge NSX.
  • Trafic : statistiques agrégées de chaque serveur virtuel.
  • Santé : ce champ comporte deux dimensions :
    • servicePressureIndex : indique les performances de l'équilibreur de charge. Deux valeurs sont fournies : score et gravité.
    • infraPressureIndex : indique les performances des composants de l'infrastructure sous-jacente. Dans NCP 2.5.1, cette valeur n'est pas toujours exacte.
    • Le champ metrics donne une idée des paramètres pris en compte lorsque le score de santé est calculé.

Lorsque le servicePressureIndex d'un équilibreur de charge est HIGH, vous pouvez migrer la charge de travail d'entrée vers d'autres équilibreurs de charge, qui doivent être l'équilibreur de charge ou les équilibreurs de charge par défaut créés à l'aide du CRD LoadBalancer.

Pour placer une entrée sur un équilibreur de charge dédié, ajoutez une annotation à la spécification d'entrée. Par exemple,
 annotations:
   nsx/loadbalancer: <name of the LoadBalancer CRD>

Si l'annotation est manquante ou définie sur null, l'entrée est placée sur l'équilibreur de charge NSX par défaut.