NCP creerà un server virtuale e un pool di bilanciamento del carico di livello 4 per ogni porta del servizio.

Dettagli su questa funzionalità:
  • TCP e UDP sono entrambi supportati.
  • Ogni servizio avrà un indirizzo IP univoco.
  • Al servizio viene allocato un indirizzo IP da un pool di IP esterno in base al campo loadBalancerIP nella definizione di LoadBalancer. Il campo loadBalancerIP può essere vuoto, contenere un indirizzo IP oppure il nome o l'ID di un pool di IP. Se il campo loadBalancerIP è vuoto, l'IP verrà allocato dal pool di IP esterno specificato dall'opzione external_ip_pools_lb nella sezione [nsx_v3] di ncp.ini. Se l'opzione external_ip_pools_lb non esiste, viene utilizzato il pool specificato da external_ip_pools. Il servizio LoadBalancer viene esposto in questo indirizzo IP e nella porta del servizio.
  • È possibile passare a un pool di IP diverso modificando la configurazione e riavviando NCP.
  • Il pool di IP specificato da loadBalancerIP deve avere il tag scope: ncp/owner, tag: cluster:<cluster_name>.

  • In modalità Criterio è supportato un servizio di tipo LoadBalancer senza selettore. Per tale servizio, l'IP SNAT del bilanciamento del carico di NSX sarà l'IP del servizio di tipo LoadBalancer. L'IP SNAT del bilanciamento del carico di NSX verrà aggiornato se si aggiorna l'IP del servizio di tipo LoadBalancer. Si tenga presente che un servizio senza selettore non può essere configurato come endpoint di un altro servizio senza selettore.
  • In modalità Criterio è possibile impostare l'annotazione ncp/transparent-lb su true per disabilitare SNAT nel pool di bilanciamento del carico. Questa funzionalità è supportata solo in una topologia a livello singolo.
  • Per impostazione predefinita, NSX limita il numero di server virtuali, pool di server e membri del pool per un bilanciamento del carico. È possibile ignorare questi limiti impostando [nsx_v3] relax_scale_validation su true.
  • Per impostazione predefinita, NCP non applica il limite per il numero di membri del pool per tutti i bilanciamenti del carico. È possibile modificare questo comportamento con il parametro [nsx_v3] ncp_enforced_pool_member_limit. Questa funzionalità è supportata solo in modalità Criterio e richiede che l'opzione [nsx_v3] l4_lb_auto_scaling sia impostata su false. Per ncp_enforced_pool_member_limit le opzioni sono:
    • DEACTIVATE: NCP non applica il limite dei membri del pool.
    • ACTIVATE: NCP applica il limite dei membri del pool per impedire ai bilanciamenti del carico di utilizzare una quantità eccessiva di CPU o memoria. Si tenga presente che se l'opzione relax_scale_validation è impostata su false e l'opzione members_per_small_lbs o members_per_medium_lbs è impostata su un valore superiore al limite di scalabilità di NSX, verrà applicata la scalabilità di NSX rendendo questa configurazione non necessaria.
  • Vengono indicati gli errori relativi a un servizio. La chiave di errore è ncp/error.loadbalancer. Gli errori possibili sono:
    • ncp/error.loadbalancer: IP_POOL_NOT_FOUND

      Questo errore indica che è stato specificato loadBalancerIP: <nsx-ip-pool> ma <nsx-ip-pool> non esiste. Il servizio sarà inattivo. Per correggere l'errore, specificare un pool di IP valido, eliminare e ricreare il servizio.

    • ncp/error.loadbalancer: IP_POOL_EXHAUSTED

      Questo errore indica che è stato specificato loadBalancerIP: <nsx-ip-pool> ma il pool di IP ha esaurito gli indirizzi IP. Il servizio sarà inattivo. Per correggere l'errore, specificare un pool di IP con indirizzi IP disponibili, eliminare e ricreare il servizio.

    • ncp/error.loadbalancer: IP_POOL_NOT_UNIQUE

      Questo errore indica che più pool di IP hanno il nome specificato da loadBalancerIP: <nsx-ip-pool>. Il servizio sarà inattivo.

    • ncp/error.loadbalancer: POOL_ACCESS_DENIED

      Questo errore indica che il pool di IP specificato da loadBalancerIP non dispone del tag scope: ncp/owner, tag: cluster:<cluster_name> o il cluster specificato nel tag non corrisponde al nome del cluster Kubernetes.

    • ncp/error.loadbalancer: LB_VIP_CONFLICT

      Questo errore indica che l'IP nel campo loadBalancerIP corrisponde a quello di un servizio attivo. Il servizio sarà inattivo.

  • Il bilanciamento del carico di livello 4 supporta la scalabilità automatica. Se un servizio LoadBalancer Kubernetes viene creato o modificato in modo da richiedere server virtuali aggiuntivi e il bilanciamento del carico di livello 4 esistente non ha la capacità adeguata, verrà creato un nuovo bilanciamento del carico di livello 4. NCP eliminerà anche un bilanciamento del carico di livello 4 che non ha più server virtuali collegati. Questa funzionalità è abilitata per impostazione predefinita. Se si desidera disabilitare questa funzionalità, è necessario impostare l4_lb_auto_scaling su false in NCP ConfigMap.
  • Quando si crea un servizio di tipo LoadBalancer, è possibile specificare il parametro loadBalancerSourceRanges. Questa funzionalità è supportata solo in modalità Criterio. Ad esempio:
    kind: Service
    metadata:
      name: nginx-service-lb
      labels:
        app: nginx
    spec:
      type: LoadBalancer
      loadBalancerSourceRanges:
        - "10.30.88.116/24"
      ports:
        - port: 80
          targetPort: 80
          protocol: TCP
          name: tcp
    ...

    Il bilanciamento del carico di NSX creato consentirà solo il traffico proveniente dagli indirizzi IP di origine specificati. È possibile verificarlo in NSX Manager esaminando Controllo elenco accessi del server virtuale. Consentirà l'accesso a un gruppo specifico. Questo gruppo conterrà gli indirizzi IP specificati in loadBalancerSourceRanges. Per esaminare questo gruppo, passare a Inventario > Gruppi.