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é.
- 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.
- 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
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 ».
kubectl get lb <name of the LoadBalancer> -o yaml
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.
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.
spec: httpConfig: xForwardedFor: <INSERT or REPLACE, default to None> affinity: type: <source_ip or cookie, default to None> timeout: <timeout number, default to 10800>
spec: httpConfig: tls: port: <tls port number, default to 443> secretName: <name of secret, default to None>
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.
kubectl get lbm
- 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.
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.