À partir de NCP 2.5.1, 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.
- NSXLoadBalancerMonitor : cette CRD est utilisée pour rapporter les statistiques d'utilisation des équilibreurs de charge NSX.
- 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. Il s'agit d'une ressource au niveau du cluster qui n'est pas liée à un espace de noms particulier.
Pour activer cette fonctionnalité, dans le fichier NCP YAML, l'option enable_lb_crd dans la section k8s doit être définie sur True et l'option policy_nsxapi doit être définie sur False. Par conséquent, vous devez utiliser l'interface utilisateur et l'API de Manager pour configurer les ressources NSX-T.
apiVersion: vmware.com/v1alpha1
kind: LoadBalancer
metadata:
name: cluster1-lbs0
spec:
httpConfig: {}
Ce fichier YAML créera un équilibreur de charge NSX de petite taille, ainsi qu'une paire de serveurs virtuels de couche 7 sans persistance, SSL ou les paramètres X-Forward. 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.
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>
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>
secretNamespace: <namespace 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 les secretName et secretNamespace 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 des secretName et secretNamespace 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.