Quando si utilizza vSphere with Tanzu con rete vDS, HAProxy fornisce il bilanciamento del carico per gli sviluppatori che accedono al piano di controllo di Tanzu Kubernetes e per i servizi Kubernetes di tipo bilanciamento del carico. Esaminare le topologie che è possibile implementare per il bilanciamento del carico HAProxy.

Reti del carico di lavoro in Cluster supervisore

Per configurare un Cluster supervisore con lo stack di rete vSphere, è necessario connettere tutti gli host del cluster a un vSphere Distributed Switch. In base alla topologia implementata per le reti del carico di lavoro di Cluster supervisore, è necessario creare uno o più gruppi di porte distribuiti. I gruppi di porte vengono designati come reti del carico di lavoro in Spazi dei nomi vSphere.

Prima di aggiungere un host a un Cluster supervisore, è necessario aggiungerlo a tutti i vSphere Distributed Switch che fanno parte del cluster.

Le reti del carico di lavoro forniscono connettività ai nodi dei cluster di Tanzu Kubernetes e alle macchine virtuali del piano di controllo di Cluster supervisore. La rete del carico di lavoro che fornisce connettività alle macchine virtuali del piano di controllo di Kubernetes è denominata rete del carico di lavoro primario. Ogni Cluster supervisore deve avere una rete del carico di lavoro primaria. È necessario designare uno dei gruppi di porte distribuite come rete del carico di lavoro primaria in Cluster supervisore.
Nota: Le reti del carico di lavoro vengono aggiunte solo quando si abilita il Cluster supervisore e non possono essere aggiunte in un secondo momento.

Le macchine virtuali del piano di controllo di Kubernetes nel Cluster supervisore utilizzano tre indirizzi IP dell'intervallo di indirizzi IP assegnato alla rete del carico di lavoro primaria. A ogni nodo di un cluster di Tanzu Kubernetes è assegnato un indirizzo IP distinto dell'intervallo di indirizzi della rete del carico di lavoro configurata con lo spazio dei nomi in cui viene eseguito il cluster di Tanzu Kubernetes.

Allocazione di intervalli IP

Quando si pianifica la topologia di rete del Cluster supervisore con il bilanciamento del carico HAproxy, prevedere di implementare due tipi di intervalli di IP:
  • Un intervallo per l'allocazione di IP virtuali per HAProxy. L'intervallo di indirizzi IP configurato per i server virtuali di HAProxy è riservato dall'appliance di bilanciamento del carico. Ad esempio, se l'intervallo di IP virtuali è 192.168.1.0/24, tutti gli host di tale intervallo non sono accessibili al traffico diverso dal traffico IP virtuale.
    Nota: Non configurare un gateway all'interno dell'intervallo di IP virtuali di HAProxy, perché tutte le route verso tale gateway non verranno eseguite correttamente.
  • Un intervallo di indirizzi IP per i nodi di Cluster supervisore e dei cluster di Tanzu Kubernetes. A ogni macchina virtuale del piano di controllo di Kubernetes nel Cluster supervisore è assegnato un indirizzo IP, per un totale di tre indirizzi IP. A ogni nodo di un cluster di Tanzu Kubernetes è assegnato anche un IP separato. È necessario assegnare un intervallo di indirizzi IP univoco a ogni rete del carico di lavoro nel Cluster supervisore configurata per uno spazio dei nomi.

Configurazione di esempio con una rete /24:

  • Rete: 192.168.120.0/24
  • VIP di HAProxy: 192.168.120.128/25
  • 1 indirizzo IP per l'interfaccia del carico di lavoro di HAProxy: 192.168.120.5

In base agli IP che sono liberi nei primi 128 indirizzi, è possibile definire intervalli di IP per le reti del carico di lavoro nel Cluster supervisore, ad esempio:

  • 192.168.120.31-192.168.120.40 per la rete del carico di lavoro primaria
  • 192.168.120.51-192.168.120.60 per un'altra rete del carico di lavoro
Nota: Gli intervalli definiti per le reti del carico di lavoro non devono sovrapporsi all'intervallo di VIP di HAProxy.

Topologia di rete di HAProxy

Sono disponibili due opzioni di configurazione di rete per la distribuzione di HAProxy: Predefinito e Front-end. La rete predefinita include 2 NIC, una per la rete di gestione e una per la rete del carico di lavoro. La rete front-end include 3 NIC, ovvero rete di gestione, rete del carico di lavoro e rete front-end per i client. Nella tabella sono elencate e descritte le caratteristiche di ciascuna rete.

Per le installazioni di produzione, è consigliabile distribuire il bilanciamento del carico HAProxy utilizzando la configurazione Rete front-end. Se si distribuisce il bilanciamento del carico HAProxy utilizzando la configurazione Predefinito, è consigliabile assegnare dimensioni del blocco di indirizzi IP /24 alla rete del carico di lavoro. Per entrambe le opzioni di configurazione, DHCP non è consigliabile.
Network Caratteristiche
Gestione
Il cluster supervisore utilizza la rete di gestione per connettersi al bilanciamento del carico HAProxy e programmarlo.
  • L'endpoint dell'API del piano dati di HAProxy viene associato all'interfaccia di rete connessa alla rete di gestione.
  • L'indirizzo IP di gestione assegnato alla macchina virtuale del piano di controllo HAProxy deve essere un IP statico nella rete di gestione in modo che il cluster supervisore possa connettersi in modo affidabile all'API del bilanciamento del carico.
  • Il gateway predefinito per la macchina virtuale HAProxy deve trovarsi in questa rete.
  • Le query DNS devono essere eseguite su questa rete.
Carico di lavoro
La macchina virtuale del piano di controllo di HAProxy utilizza la rete del carico di lavoro per accedere ai servizi nei nodi del cluster supervisore e del cluster di Tanzu Kubernetes.
  • La macchina virtuale del piano di controllo di HAProxy inoltra il traffico ai nodi del cluster supervisore e del cluster di Tanzu Kubernetes in questa rete.
  • Se la macchina virtuale del piano di controllo di HAProxy è distribuita nella modalità predefinita (due NIC), la rete del carico di lavoro deve fornire le reti logiche utilizzate per accedere ai servizi del bilanciamento del carico.
  • Nella configurazione Predefinito, gli IP virtuali del bilanciamento del carico e gli IP dei nodi del cluster di Kubernetes provengono da questa rete. Verranno definiti come intervalli separati non sovrapposti all'interno della rete.
Front-end (facoltativo)

I client esterni (ad esempio utenti o applicazioni) che accedono ai carichi di lavoro del cluster utilizzano la rete front-end per accedere ai servizi di bilanciamento del carico back-end utilizzando gli indirizzi IP virtuali.

  • La rete front-end viene utilizzata solo quando la macchina virtuale del piano di controllo di HAProxy viene distribuita con tre schede NIC.
  • Consigliata per le installazioni di produzione.
  • Nella rete front-end viene esposto l'indirizzo IP virtuale (VIP). HAProxy bilancerà e inoltrerà il traffico al back-end appropriato.

Il diagramma seguente illustra una distribuzione HAProxy che utilizza una topologia Rete front-end. Il diagramma indica dove sono previsti campi di configurazione durante il processo di installazione e configurazione.

Topologia di Cluster supervisore con una rete del carico di lavoro e un HAproxy con due NIC virtuali

In questa topologia si configura un Cluster supervisore con una rete del carico di lavoro per i seguenti componenti:

  • Macchine virtuali del piano di controllo Kubernetes
  • I nodi dei cluster di Tanzu Kubernetes.
  • L'intervallo di IP virtuali di HAProxy dove si connettono i servizi esterni e gli utenti DevOps. In questa configurazione, HAProxy viene distribuito con due NIC virtuali (configurazione Predefinito), una connessa alla rete di gestione e una seconda connessa alla rete del carico di lavoro primaria. È necessario pianificare l'allocazione degli IP virtuali in una subnet separata dalla rete del carico di lavoro primaria.
Un gruppo di porte viene designato come rete del carico di lavoro primaria nel Cluster supervisore e quindi si utilizza lo stesso gruppo di porte della rete del carico di lavoro per Spazi dei nomi vSphere. Cluster supervisore, i cluster di Tanzu Kubernetes, HAProxy, gli utenti DevOps e i servizi esterni si connettono tutti allo stesso gruppo di porte distribuite impostato come rete del carico di lavoro primaria.
Figura 1. Cluster supervisore supportato da una rete

Cluster supervisore supportato da una rete
Il percorso del traffico per gli utenti DevOps o le applicazioni esterne è il seguente:
  1. L'utente DevOps o il servizio esterno invia il traffico a un IP virtuale nella subnet della rete del carico di lavoro del gruppo di porte distribuite.
  2. HAProxy esegue il bilanciamento del carico del traffico IP virtuale verso l'IP del nodo di Tanzu Kubernetes o l'IP della macchina virtuale del piano di controllo. HAProxy richiede l'indirizzo IP virtuale in modo da poter bilanciare il carico del traffico in arrivo in tale IP.
  3. La macchina virtuale del piano di controllo o il nodo del cluster di Tanzu Kubernetes invia il traffico ai pod di destinazione in esecuzione nel Cluster supervisore o nel cluster di Tanzu Kubernetes rispettivamente.

Topologia di Cluster supervisore con una rete del carico di lavoro isolata e HAproxy con due NIC virtuali

In questa topologia, le reti vengono configurate in base ai componenti seguenti:
  • Macchine virtuali del piano di controllo Kubernetes. Una rete del carico di lavoro primaria per gestire il traffico per le macchine virtuali del piano di controllo di Kubernetes.
  • Nodi del cluster di Tanzu Kubernetes Una rete del carico di lavoro assegnata a tutti gli spazi dei nomi nel Cluster supervisore. Questa rete connette i nodi del cluster di Tanzu Kubernetes.
  • IP virtuali di HAProxy. In questa configurazione, la macchina virtuale di HAProxy viene distribuita con due NIC virtuali (configurazione Predefinito). È possibile connettere la macchina virtuale di HAProxy alla rete del carico di lavoro primaria o alla rete del carico di lavoro utilizzata per gli spazi dei nomi. È inoltre possibile connettere HAProxy a una rete di macchine virtuali che esiste già in vSphere ed è instradabile alla rete primaria e alla rete del carico di lavoro.
Il Cluster supervisore è connesso al gruppo di porte distribuite che supporta la rete del carico di lavoro primaria e i cluster di Tanzu Kubernetes sono connessi a un gruppo di porte distribuite che supporta la rete del carico di lavoro. I due gruppi di porte devono essere instradabili di livello 3. È possibile implementare l'isolamento di livello 2 tramite VLAN. Il filtro del traffico di livello 3 è possibile tramite i firewall e i gateway IP.
Figura 2. Cluster supervisore con una rete del carico di lavoro isolata

Cluster supervisore con una rete del carico di lavoro isolata
Il percorso del traffico per gli utenti DevOps o il servizio esterno è il seguente:
  1. L'utente DevOps o il servizio esterno invia il traffico a un IP virtuale. Il traffico viene instradato verso la rete in cui è connesso HAProxy.
  2. HAProxy esegue il bilanciamento del carico del traffico IP virtuale verso l'IP del nodo di Tanzu Kubernetes o la macchina virtuale del piano di controllo. HAProxy richiede l'indirizzo IP virtuale in modo da poter bilanciare il carico del traffico in arrivo in tale IP.
  3. La macchina virtuale del piano di controllo o il nodo del cluster di Tanzu Kubernetes invia il traffico ai pod di destinazione in esecuzione nel cluster di Tanzu Kubernetes.

Topologia di Cluster supervisore con più reti del carico di lavoro e un HAproxy con due NIC virtuali

In questa topologia, è possibile configurare un gruppo di porte che funga da rete del carico di lavoro primaria e un gruppo di porte dedicato che funga da rete del carico di lavoro per ogni spazio dei nomi. HAProxy viene distribuito con due NIC virtuali (configurazione Predefinito) ed è possibile connetterlo alla rete del carico di lavoro primaria oppure a una delle reti del carico di lavoro. È inoltre possibile utilizzare una rete di macchine virtuali esistente instradabile verso la rete primaria e la rete del carico di lavoro.

Il percorso del traffico per gli utenti DevOps e i servizi esterni in questa topologia è uguale a quello della topologia della rete del carico di lavoro isolata.
Figura 3. Cluster supervisore supportato da più reti del carico di lavoro isolate

Cluster supervisore supportato da più reti del carico di lavoro isolate

Topologia di Cluster supervisore con più reti del carico di lavoro e un HAproxy con tre NIC virtuali

In questa configurazione, si distribuisce la macchina virtuale HAProxy con tre NIC virtuali, connettendo in tal modo HAProxy a una rete front-end. Gli utenti DevOps e i servizi esterni possono accedere a HAProxy tramite IP virtuali nella rete front-end. La distribuzione di HAProxy con tre NIC virtuali è consigliabile per gli ambienti di produzione.
Figura 4. HAProxy distribuito con tre NIC virtuali

HAProxy distribuito con tre NIC virtuali

Selezione tra le topologie possibili

Prima di selezionare la topologia da utilizzare, valutare le esigenze dell'ambiente in uso:

  1. È necessario l'isolamento di livello 2 tra Cluster supervisore e i cluster di Tanzu Kubernetes?
    1. No: selezionare la topologia più semplice con una rete del carico di lavoro per tutti i componenti.
    2. Sì. Selezionare la topologia della rete del carico di lavoro isolata con la rete primaria e la rete del carico di lavoro separate.
  2. È necessario ulteriore isolamento di livello 2 tra i cluster di Tanzu Kubernetes?
    1. No. Selezionare la topologia della rete del carico di lavoro isolata con la rete primaria e la rete del carico di lavoro separate.
    2. Sì. Selezionare la topologia con più reti del carico di lavoro con una rete del carico di lavoro separata per ogni spazio dei nomi e una rete del carico di lavoro primaria dedicata.
  3. Si desidera impedire agli utenti DevOps e ai servizi esterni di eseguire il routing diretto alle macchine virtuali del piano di controllo Kubernetes e ai nodi del cluster di Tanzu Kubernetes?
    1. No. Selezionare la configurazione di HAProxy con due NIC.
    2. Sì. Selezionare la configurazione di HAProxy con tre NIC. Questa configurazione è consigliata per gli ambienti di produzione