Sie können CRDs (CustomResourceDefinitions) erstellen, um die Nutzung von NSX Load Balancer zu überwachen und zusätzliche NSX Load Balancer auf Schicht 7 zu erstellen, um Ingress-Arbeitslasten zu verarbeiten, die der Standard-Load Balancer nicht verarbeiten kann. Diese CRDs sind nicht für die Skalierung von Load Balancer auf Schicht 4 vorgesehen, die für Kubernetes LoadBalancer-Dienste erstellt wurden.
Wenn Sie über eine gemeinsam genutzte Tier-1-Topologie verfügen, müssen Sie tier0_gateway unter [nsx_v3] in der nsx-ncp-config-ConfigMap konfigurieren, um diese Funktion zu verwenden.
- NSXLoadBalancerMonitor – Diese CRD wird verwendet, um Nutzungsstatistiken für die NSX Load Balancer zu erstellen. Im Richtlinien-Modus überwacht diese CRD nur Namespace-Load Balancer, die mithilfe der LoadBalancer-CRD erstellt wurden.
- LoadBalancer – Diese CRD wird zur Erstellung neuer NSX Load Balancer verwendet. Die Definition dieser Ressource befindet sich in der NCP YAML-Datei. Im Richtlinienmodus und bei TKGI-Bereitstellungen handelt es sich hierbei um eine Namespace-Ressource. Bei Bereitstellungen im Manager-Modus handelt es sich hierbei um eine clusterweite Ressource.
Die Vorgehensweise zur Aktivierung dieser Funktion für den Manager-Modus und den Richtlinien-Modus ist gleich.
- Legen Sie die Option enable_lb_crd im Abschnitt [k8s] auf True fest.
- Wenden Sie die NCP-YAML-Datei mit dem folgenden Befehl an:
kubectl apply -f ncp-<platform>.yaml
apiVersion: vmware.com/v1alpha1 kind: LoadBalancer metadata: name: cluster1-lbs0 spec: httpConfig: {} size: SMALL
Diese YAML-Datei erstellt einen NSX Load Balancer mit der angegebenen Größe und ein virtuelles Serverpaar auf Schicht 7 ohne Persistenz, SSL oder X-forward-Einstellungen. Der Parameter size kann SMALL, MEDIUM oder LARGE sein. Der Standardwert ist SMALL. Nach der Erstellung des NSX Load Balancer kann die Größe nicht mehr geändert werden und ein Update zum Parameter size wird ignoriert. Die IP des virtuellen Servers wird von dem als Standard konfigurierten externen Pool für Load Balancer zugeteilt. Die Ports sind standardmäßig 80 und 443. Nicht standardmäßige Ports werden unterstützt, wenn der benutzerdefinierte Port im HTTP HOST-Header enthalten ist. Beachten Sie, dass benutzerdefinierte Ports nur in Nicht-TLS-Ingress unterstützt werden. Darüber hinaus unterstützen die von der LoadBalancer-CRD erstellten virtuellen Server den Parameter „Zugriffsprotokoll aktivieren“ nicht.
kubectl get lb <name of the LoadBalancer> -o yaml
status: conditions: - status: "True" type: Ready httpVirtualIP: <realized virtual IP>
Dieses Ergebnis gibt an, dass die Erstellung erfolgreich war. Wenn die Erstellung fehlgeschlagen ist, wird status gleich False und es gibt keine virtuelle IP-Adresse.
spec: httpConfig: virtualIP: <ip address, default to auto-allocate> port: <port number, default to 80>
Hinweis: Sie dürfen dieselbe virtuelle IP nicht für verschiedene LoadBalancer-CRDs konfigurieren.
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
Sie können den Schlüssel vor oder nach der Erstellung von LoadBalancer erstellen. Um das Zertifikat zu aktualisieren, entfernen Sie zuerst secretName aus der LoadBalancer-Spezifikation, aktualisieren Sie die Daten des geheimen Schlüssels und fügen Sie dann denselben geheimen Schlüssel mithilfe der obigen Konfiguration erneut an. Das Erstellen eines neuen geheimen Schlüssels und das Aktualisieren von secretName funktionieren ebenfalls. Beachten Sie, dass die gemeinsame Nutzung derselben Daten des geheimen Schlüssels zwischen verschiedenen CRD Load Balancer nicht unterstützt wird. Sie müssen CRD Load Balancer mit unterschiedlichen Zertifikaten konfigurieren.
kubectl get lbm
- Nutzung – die Anzahl der Arbeitslasten im NSX Load Balancer.
- Datenverkehr – die aggregierten Statistiken jedes virtuellen Servers.
- Integrität – Dieses Feld hat zwei Dimensionen:
- servicePressureIndex – Dies zeigt die Leistung des Load Balancer an. Es werden zwei Werte angegeben: Punktzahl und Schweregrad.
- infraPressureIndex – Dies zeigt die Leistung der zugrunde liegenden Infrastrukturkomponenten an. In NCP 2.5.1 ist dieser Wert nicht immer korrekt.
- Das Feld metrics liefert eine Vorstellung der Parameter, die berücksichtigt werden, wenn die Integritäts Punktzahl berechnet wird.
Wenn der Wert servicePressureIndex eines Load Balancer HIGH ist, können Sie die Arbeitslast für den Ingress auf andere Load Balancer migrieren, wobei es sich um den standardmäßigen Load Balancer oder den Load Balancer handelt, der mit der LoadBalancer-CRD erstellt wurde.
annotations: nsx/loadbalancer: <name of the LoadBalancer CRD>
Wenn die Anmerkung fehlt oder auf null festgelegt ist, wird der Ingress auf dem standardmäßigen NSX Load Balancer platziert.