È possibile creare CRD (Custom Resource Definition) per monitorare l'utilizzo dei bilanciamenti del carico di NSX e creare bilanciamenti del carico di livello 7 di NSX aggiuntivi per gestire i carichi di lavoro in ingresso che il bilanciamento del carico predefinito non è in grado di gestire. Questi CRD non sono destinati alla scalabilità dei bilanciamenti del carico di livello 4 creati per i servizi di bilanciamento del carico Kubernetes.
Se si dispone di una topologia di livello 1 condivisa, è necessario configurare tier0_gateway in [nsx_v3] in ConfigMap nsx-ncp-config per utilizzare questa funzionalità.
- NSXLoadBalancerMonitor: questo CRD viene utilizzato per segnalare le statistiche di utilizzo dei bilanciamenti del carico di NSX. In modalità Criterio, questo CRD monitorerà solo i bilanciamenti del carico dello spazio dei nomi creati utilizzando il CRD LoadBalancer.
- LoadBalancer: questo CRD viene utilizzato per creare nuovi bilanciamenti del carico di NSX. La definizione di questa risorsa si trova nel file YAML NCP. Nelle distribuzioni in modalità Criterio e TKGI, questa è una risorsa dello spazio dei nomi. Nelle distribuzioni in modalità Manager, questa è una risorsa a livello di cluster.
La procedura per abilitare questa funzionalità è la stessa per la modalità Manager e la modalità Criterio.
- Impostare l'opzione enable_lb_crd nella sezione [k8s] su True.
- Applicare il file YAML di NCP con il comando seguente:
kubectl apply -f ncp-<platform>.yaml
apiVersion: vmware.com/v1alpha1 kind: LoadBalancer metadata: name: cluster1-lbs0 spec: httpConfig: {} size: SMALL
Questo file YAML creerà un bilanciamento del carico di NSX delle dimensioni specificate e una coppia di server virtuali di livello 7 senza persistenza, SSL o impostazioni X-forward. Il parametro size può essere SMALL, MEDIUM o LARGE. Il valore predefinito è SMALL. Dopo aver creato il bilanciamento del carico di NSX, le dimensioni non possono essere modificate e qualsiasi aggiornamento al parametro size verrà ignorato. L'IP del server virtuale viene allocato dal pool esterno predefinito configurato per i bilanciamenti del carico. Le sono 80 e 443 per impostazione predefinita. Le porte non standard sono supportate se la porta personalizzata è inclusa nell'intestazione HTTP HOST. Si tenga presente che le porte personalizzate sono supportate solo in ingressi non TLS. Inoltre, i server virtuali creati da LoadBalancer CRD non supportano il parametro "enable access log".
kubectl get lb <name of the LoadBalancer> -o yaml
status: conditions: - status: "True" type: Ready httpVirtualIP: <realized virtual IP>
Questo risultato indica che la creazione è stata eseguita correttamente. Se la creazione non riesce, status sarà False e non sarà presente un IP virtuale.
spec: httpConfig: virtualIP: <ip address, default to auto-allocate> port: <port number, default to 80>
Nota: non è necessario configurare lo stesso virtualIP per CRD LoadBalancer diversi.
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
È possibile creare il segreto prima o dopo la creazione di LoadBalancer. Per aggiornare il certificato, rimuovere innanzitutto secretName dalla specifica di LoadBalancer, aggiornare i dati del segreto e quindi collegare nuovamente lo stesso segreto utilizzando la configurazione precedente. In alternativa, è possibile creare un nuovo segreto e aggiornare secretName. Si tenga presente che la condivisione dei dati dello stesso segreto tra bilanciamenti del carico CRD diversi non è supportata. È necessario configurare i bilanciamenti del carico CRD con certificati diversi.
kubectl get lbm
- Usage: numero di carichi di lavoro nel bilanciamento del carico di NSX.
- Traffic: le statistiche aggregate di ogni server virtuale.
- Health: questo campo ha due dimensioni:
- servicePressureIndex: indica le prestazioni del bilanciamento del carico. Vengono forniti due valori, ovvero punteggio e gravità.
- infraPressureIndex: indica le prestazioni dei componenti dell'infrastruttura sottostante. In NCP 2.5.1, questo valore non è sempre preciso.
- Il campo metrics fornisce un'idea dei parametri che vengono considerati quando viene calcolato il punteggio di integrità.
Quando il valore di servicePressureIndex di un bilanciamento del carico è HIGH, è possibile eseguire la migrazione del carico di lavoro in ingresso in altri bilanciamenti del carico, che devono essere i bilanciamenti del carico predefiniti creati utilizzando il CRD LoadBalancer.
annotations: nsx/loadbalancer: <name of the LoadBalancer CRD>
Se l'annotazione non è presente o è impostata su null, l'ingresso viene posizionato nel bilanciamento del carico di NSX predefinito.