Bilanciamento del carico in bundle con Seesaw

Cluster Anthos su VMware (GKE on VMware) può essere eseguito in una delle tre modalità di bilanciamento del carico: integrato, manuale o in bundle. Questo documento mostra come configurare i cluster Anthos su VMware per eseguire il bilanciatore del carico Seesaw in modalità in bundle.

Le istruzioni qui sono complete. Per una breve introduzione all'utilizzo del bilanciatore del carico di Seesaw, consulta la pagina Bilanciatore del carico di Seesaw (guida rapida).

In modalità di bilanciamento del carico in bundle, Cluster Anthos su VMware fornisce e gestisce il bilanciatore del carico. Non è necessario ottenere una licenza per un bilanciatore del carico e la configurazione necessaria è minima.

Questo documento mostra come configurare il bilanciatore del carico di Seesaw per un cluster di amministrazione e un cluster utente associato. Puoi eseguire il bilanciatore del carico di Seesaw su una singola VM oppure eseguire il bilanciatore del carico in modalità ad alta disponibilità, che utilizza due VM. In modalità ad alta disponibilità, il bilanciatore del carico di Seesaw utilizza il Virtual Router Redundancy Protocol (VRRP). Le due VM sono chiamate Master e Backup. A ogni VM di Seesaw viene assegnato un identificatore di router virtuale (VRID) a tua scelta.

Esempio di configurazione di Seesaw

Ecco un esempio di configurazione per i cluster che eseguono il bilanciatore del carico Seesaw in modalità ad alta disponibilità:

Configurazione del bilanciatore del carico di Seesaw in modalità ad alta disponibilità.
Configurazione del bilanciatore del carico di Seesaw in modalità ad alta disponibilità (fai clic per ingrandire)

Il diagramma precedente mostra due VM di Seesaw, ciascuna per il cluster di amministrazione e il cluster utente. In questo esempio, il cluster di amministrazione e il cluster utente si trovano su due VLAN separate e ogni cluster si trova in una subnet separata:

Cluster Subnet
Cluster di amministrazione 172.16.20.0/24
Cluster utente 172.16.40.0/24

admin-cluster.yaml

L'esempio seguente di file di configurazione del cluster di amministrazione mostra la configurazione vista nel diagramma precedente di:

  • L'indirizzo IP master per la coppia di VM Seesaw che gestisce il cluster di amministrazione.

  • VIP designato per il server API Kubernetes del cluster di amministrazione.

network:
  hostConfig:
  ...

  ipMode:
    type: "static"
    ipBlockFilePath: "config-folder/admin-cluster-ipblock.yaml"
...

loadBalancer:
  seesaw:
    ipBlockFilePath: "config-folder/admin-seesaw-ipblock.yaml"
    masterIP: 172.16.20.57
  ...

  vips:
    controlPlaneVIP: "172.16.20.70"
    addonsVIP: "172.16.20.71"

admin-cluster-ipblock.yaml

L'esempio seguente di file di blocchi IP mostra la designazione degli indirizzi IP per i nodi nel cluster di amministrazione. Sono inclusi anche l'indirizzo per il nodo del piano di controllo del cluster utente e un indirizzo IP da utilizzare durante l'upgrade del cluster.

blocks:
- netmask: "255.255.255.0"
  gateway: "17.16.20.1"
  ips:
  - ip: 172.16.20.50
    hostname: admin-vm-1
  - ip: 172.16.20.51
    hostname: admin-vm-2
  - ip: 172.16.20.52
    hostname: admin-vm-3
  - ip: 172.16.20.53
    hostname: admin-vm-4
  - ip: 172.16.20.54
    hostname: admin-vm-5

admin-seesaw-ipblock.yaml

L'esempio seguente di un altro file di blocchi IP specifica due indirizzi IP per le VM di Seesaw che gestiscono il cluster di amministrazione. Tieni presente che questo è un file di blocchi IP separato per le VM del bilanciatore del carico, non per i nodi dei cluster.

blocks:
  - netmask: "255.255.255.0"
    gateway: "172.16.20.1"
    ips:
    - ip: "172.16.20.60"
      hostname: "admin-seesaw-vm-1"
    - ip: "172.16.20.61"
      hostname: "admin-seesaw-vm-2"

user-cluster.yaml

L'esempio seguente di file di configurazione del cluster utente mostra la configurazione di:

  • L'indirizzo IP master per la coppia di VM Seesaw che gestisce il cluster utente.

  • VIP designati per il server API e il servizio in entrata nel cluster utente di Kubernetes. Il VIP del server API Kubernetes si trova nella subnet del cluster di amministrazione, perché il piano di controllo per un cluster utente viene eseguito su un nodo nel cluster di amministrazione.

network:
  hostConfig:
  ...

  ipMode:
    type: "static"
    ipBlockFilePath: "config-folder/user-cluster-ipblock.yaml"
...

loadBalancer:
  seesaw:
    ipBlockFilePath: "config-folder/user-seesaw-ipblock.yaml"
    masterIP: 172.16.40.31
  ...

  vips:
    controlPlaneVIP: "172.16.20.72"
    ingressVIP: "172.16.40.100"

user-cluster-ipblock.yaml

Il seguente esempio di file di blocchi IP mostra la designazione degli indirizzi IP per i nodi nel cluster utente. Include un indirizzo IP da utilizzare durante l'upgrade del cluster.

blocks:
- netmask: "255.255.255.0"
  gateway: "17.16.40.1"
  ips:
  - ip: 172.16.40.21
    hostname: user-vm-1
  - ip: 172.16.40.22
    hostname: user-vm-2
  - ip: 172.16.40.23
    hostname: user-vm-3
  - ip: 172.16.40.24
    hostname: user-vm-4
  - ip: 172.16.40.25
    hostname: user-vm-5

user-seesaw-ipblock.yaml

Il seguente esempio di un altro file di blocchi IP specifica due indirizzi IP per le VM di Seesaw che gestiscono il cluster utente.

blocks:
  - netmask: "255.255.255.0"
    gateway: "172.16.40.1"
    ips:
    - ip: "172.16.40.29"
      hostname: "user-seesaw-vm-1"
    - ip: "172.16.40.30"
      hostname: "user-seesaw-vm-2"

Gruppi di porte

La tabella seguente descrive la configurazione delle interfacce di rete per ciascuna delle VM di Seesaw e i relativi gruppi di porte connesse, come mostrato nel diagramma precedente.

VM di Seesaw Interfaccia di rete Configurazione dell'interfaccia di rete Gruppo di porte collegato
Master interfaccia-di-rete-1 VIP bilanciatore del carico
interfaccia-di-rete-2 Indirizzo IP preso dal file del blocco IP per le VM di Seesaw nodo cluster
Backup interfaccia-di-rete-1 Nessuna configurazione bilanciatore del carico
interfaccia-di-rete-2 Indirizzo IP preso dal file del blocco IP per le VM di Seesaw nodo cluster

Anche i nodi del cluster sono connessi al gruppo di porte dei nodi del cluster.

Come mostra la tabella precedente, ciascuna delle VM di Seesaw per i cluster di amministrazione e per i cluster utente dispone di due interfacce di rete. Per ogni VM di Seesaw, le due interfacce di rete sono connesse a due gruppi di porte separati:

  • gruppo di porte del bilanciatore del carico

  • gruppo di porte nodo cluster

I due gruppi di porte di un cluster si trovano sulla stessa VLAN per il cluster.

Configura il bilanciatore del carico Seesaw

Il diagramma precedente mostra la configurazione di rete consigliata per il bilanciamento del carico di Seesaw. Quando pianifichi la tua configurazione, ti consigliamo vivamente di utilizzare vSphere 6.7 o versioni successive e Virtual Distributed Switch (VDS) 6.6 o versioni successive, per la modalità di bilanciamento del carico in bundle.

Se preferisci, puoi utilizzare le versioni precedenti, ma l'installazione sarà meno sicura. Le altre sezioni di questo argomento forniscono ulteriori dettagli sui vantaggi in termini di sicurezza derivanti dall'uso di vSphere 6.7 e versioni successive e VDS 6.6 e versioni successive.

Pianifica le tue VLAN

Con la modalità di bilanciamento del carico in bundle, consigliamo vivamente di utilizzare i cluster su VLAN separate.

Se il cluster di amministrazione utilizza la propria VLAN, il traffico del piano di controllo è separato dal traffico del piano dati. Questa separazione protegge il cluster di amministrazione e i piani di controllo del cluster utente da errori di configurazione involontari. Questi errori possono causare, ad esempio, problemi come una tempesta di trasmissione dovuta a loop di livello 2 nella stessa VLAN o un indirizzo IP in conflitto che elimina la separazione desiderata tra il piano dati e il piano di controllo.

Esegui il provisioning delle risorse VM

Per le VM che eseguono il bilanciatore del carico Seesaw, esegui il provisioning delle risorse di CPU e memoria in base al traffico di rete che prevedi di incontrare.

Il bilanciatore del carico di Seesaw non utilizza molta memoria e può essere eseguito in VM con 1 GB di memoria. Tuttavia, il requisito della CPU aumenta con l'aumentare della frequenza dei pacchetti di rete.

La tabella seguente mostra le linee guida relative a spazio di archiviazione, CPU e memoria per il provisioning delle VM di Seesaw. Poiché la velocità dei pacchetti non è una misura tipica delle prestazioni di rete, la tabella mostra anche le linee guida per il numero massimo di connessioni di rete attive. Le linee guida presuppongono un ambiente in cui le VM hanno un link a 10 Gbps e le CPU vengono eseguite a meno del 70% della capacità.

Quando il bilanciatore del carico di Seesaw viene eseguito in modalità ad alta disponibilità, utilizza una coppia(master, backup), in modo che tutto il traffico passi attraverso una singola VM. Poiché i casi d'uso effettivi variano, queste linee guida devono essere modificate in base al traffico effettivo. Monitora le metriche di CPU e frequenza dei pacchetti per determinare le modifiche necessarie.

Se devi cambiare la CPU e la memoria delle VM di Seesaw, consulta Upgrade di un bilanciatore del carico. Tieni presente che puoi mantenere la stessa versione del bilanciatore del carico e modificare il numero di CPU e l'allocazione della memoria.

Per i cluster di amministrazione di piccole dimensioni consigliamo 2 CPU, mentre per i cluster di amministrazione di grandi dimensioni consigliamo 4 CPU.

Archiviazione CPU Memoria Percentuale pacchetti (pps) Numero massimo di connessioni attive
20 GB 1 (non di produzione) 1 GB 250.000 100
20 GB 2 3 GB 450.000 300
20 GB 4 3 GB 850.000 6000
20 GB 6 3 GB 1.000.000 10.000

Metti da parte VIP e indirizzi IP

VIP

Indipendentemente dalla modalità di bilanciamento del carico, devi mettere da parte diversi indirizzi IP virtuali (VIP) che intendi utilizzare per il bilanciamento del carico. Questi VIP consentono ai client esterni di raggiungere i server API, i servizi in entrata e i servizi aggiuntivi di Kubernetes.

Pensa anche a quanti Servizi di tipo LoadBalancer potrebbero essere attivi nel tuo cluster utente in un determinato momento e metti da parte un numero sufficiente di VIP per questi Servizi. Quando crei servizi di tipo LoadBalancer in un secondo momento, Cluster Anthos su VMware configura automaticamente i VIP dei servizi sul bilanciatore del carico.

Indirizzi IP dei nodi

Con la modalità di bilanciamento del carico in bundle, puoi specificare gli indirizzi IP statici per i nodi del cluster oppure i nodi del cluster possono ottenere gli indirizzi IP da un server DHCP.

Se vuoi che i nodi del cluster abbiano indirizzi IP statici, dedica un numero sufficiente di indirizzi per i nodi nel cluster di amministrazione e per quelli in tutti i cluster utente che intendi creare. Inoltre, imposta un indirizzo IP aggiuntivo per ogni cluster da utilizzare durante l'upgrade del cluster. Per maggiori dettagli sul numero di indirizzi IP dei nodi da accantonare, consulta Creazione di un cluster di amministrazione.

Indirizzi IP per le VM Seesaw

Poi, per ogni cluster, amministratore e utente, accantona gli indirizzi IP per le VM che eseguiranno i bilanciatori del carico di Seesaw. Il numero di indirizzi da parte dipende da se vuoi creare bilanciatori del carico Seesaw ad alta disponibilità o bilanciatori del carico Seesaw non ad alta disponibilità.

Indirizzi IP master

Oltre agli indirizzi IP delle VM di Seesaw, imposta anche un singolo indirizzo IP master per la coppia di VM di Seesaw per ogni cluster.

Configurazione non ad alta disponibilità

Se la tua impostazione è una configurazione non ad alta disponibilità:

  • Per il cluster di amministrazione, imposta un indirizzo IP per una VM Seesaw e un indirizzo IP master per il bilanciatore del carico di Seesaw. Entrambi questi indirizzi devono essere sulla stessa VLAN dei nodi del cluster di amministrazione.

  • Per il cluster utente, imposta un indirizzo IP per una VM di Seesaw e un indirizzo IP master per il bilanciatore del carico di Seesaw. Entrambi gli indirizzi devono essere sulla stessa VLAN dei nodi del cluster utente.

Pianifica i gruppi di porte

Il diagramma precedente descriveva i due gruppi di porte utilizzati in una configurazione ad alta disponibilità e il modo in cui sono connessi alle interfacce di rete sulle VM di Seesaw. Per una singola VM Seesaw, decidi se connettere le due interfacce di rete allo stesso gruppo di porte vSphere o a gruppi di porte separati. Se non stai abilitando l'apprendimento MAC, puoi avere un gruppo di porte. Se i gruppi di porte sono separati, devono trovarsi sulla stessa VLAN.

Creare file di blocchi IP

Per ogni cluster, amministratore e utente, specifica gli indirizzi che hai scelto per le VM di Seesaw in un file di blocchi IP. Se intendi utilizzare indirizzi IP statici per i nodi del cluster, devi creare file di blocchi IP separati per tali indirizzi.

Compila i file di configurazione

Prepara un file di configurazione per il cluster di amministrazione e un altro file di configurazione per il cluster utente.

Nel file di configurazione per un determinato cluster, imposta loadBalancer.kind su "Seesaw".

In loadBalancer, compila la sezione seesaw:

loadBalancer:
  kind: Seesaw
  seesaw:

Per informazioni su come compilare la sezione seesaw di un file di configurazione del cluster, consulta loadbalancer.seesaw (cluster di amministrazione) o loadbalancer.seesaw (cluster utente).

Nel file di configurazione del cluster di amministrazione, indica quanto segue:

  • VIP per il server API Kubernetes del cluster di amministrazione
  • VIP per i componenti aggiuntivi del cluster di amministrazione
  • Indirizzo IP master per la coppia di VM Seesaw che gestisce il cluster di amministrazione.

Questi VIP devono trovarsi nella subnet del cluster di amministrazione.

Nel file di configurazione del cluster utente, indica:

  • VIP per il server API Kubernetes del cluster utente (deve trovarsi nella subnet del cluster di amministrazione)
  • VIP in entrata nel cluster utente
  • Indirizzo IP master per la coppia di VM Seesaw che gestisce il cluster utente.

Gli ultimi due indirizzi nell'elenco precedente devono trovarsi nella subnet del cluster utente.

Attiva apprendimento MAC o modalità promiscuo (solo ad alta disponibilità)

Se stai configurando un bilanciatore del carico Seesaw non ad alta disponibilità, puoi saltare questa sezione.

Se hai impostato loadBalancer.seesaw.disableVRRPMAC su true, puoi saltare questa sezione.

Se stai configurando un bilanciatore del carico di Seesaw ad alta disponibilità e hai impostato loadBalancer.seesaw.disableVRRPMAC su false, devi abilitare una combinazione di apprendimento MAC, trasmissioni elaborate e modalità promiscuo sul gruppo di porte del bilanciatore del carico.

La modalità di attivazione di queste funzionalità varia in base al tipo di sensore:

Tipo di switchAttivazione delle funzionalitàImpatto sulla sicurezza
vSphere 7.0 VDS Per vSphere 7.0 con alta disponibilità, devi impostare loadBalancer.seesaw.disableVRRPMAC su true. L'apprendimento MAC non è supportato.
vSphere 6.7 con VDS 6.6

Abilita l'apprendimento MAC e trasmissioni falsificate per il bilanciatore del carico eseguendo questo comando: gkectl prepare network --config [CONFIG_FILE], dove [CONFIG_FILE] è il percorso del file di configurazione del cluster. Per eseguire questa operazione, devi disporre dell'autorizzazione dvPort group.Modified.

Minimo. Se il gruppo di porte del bilanciatore del carico è connesso solo alle VM Seesaw, puoi limitare l'apprendimento dei MAC alle VM Seesaw attendibili.

vSphere 6.5 o

vSphere 6.7 con una versione di VDS precedente alla 6.6

Abilita la modalità promiscuo e le trasmissioni contraffatte per il gruppo di porte del bilanciatore del carico. Utilizza l'interfaccia utente vSphere nella pagina del gruppo di porte nella scheda Networking: Modifica impostazioni -> Sicurezza. Tutte le VM sul gruppo di porte del bilanciatore del carico sono in modalità promiscuo. Pertanto, qualsiasi VM nel gruppo di porte del bilanciatore del carico possa vedere tutto il traffico. Se il gruppo di porte del bilanciatore del carico è connesso solo alle VM di Seesaw, solo quelle VM possono vedere tutto il traffico.
Switch logico NSX-T Abilita l'apprendimento MAC sullo switch logico. vSphere non supporta la creazione di due opzioni logiche nello stesso dominio di livello 2. Di conseguenza, le VM di Seesaw e i nodi del cluster devono trovarsi sullo stesso switch logico. Ciò significa che l'apprendimento MAC è abilitato per tutti i nodi del cluster. Un utente malintenzionato potrebbe essere in grado di ottenere uno spoofing MAC eseguendo pod con privilegi nel cluster.
Switch vSphere Standard Abilita la modalità promiscuo e le trasmissioni contraffatte per il gruppo di porte del bilanciatore del carico. Utilizza l'interfaccia utente vSphere su ciascun host ESXI: Configura -> Switch virtuali -> Switch standard -> Modifica impostazione nel gruppo di porte -> Sicurezza. Tutte le VM sul gruppo di porte del bilanciatore del carico sono in modalità promiscuo. Pertanto, qualsiasi VM nel gruppo di porte del bilanciatore del carico possa vedere tutto il traffico. Se il gruppo di porte del bilanciatore del carico è connesso solo alle VM di Seesaw, sono solo quelle VM che possono vedere tutto il traffico.

Completa la compilazione del file di configurazione del cluster di amministrazione

Segui le istruzioni in Creare un cluster di amministrazione per completare la compilazione del file di configurazione del cluster di amministrazione.

Esecuzione di controlli preliminari

Esegui i controlli preflight sul file di configurazione del cluster di amministrazione:

gkectl check-config --config ADMIN_CLUSTER_CONFIG

Sostituisci ADMIN_CLUSTER_CONFIG con il percorso del file di configurazione del cluster di amministrazione.

Carica immagini sistema operativo

Carica le immagini sistema operativo nel tuo ambiente vSphere:

gkectl prepare --config ADMIN_CLUSTER_CONFIG

Crea un bilanciatore del carico per il cluster di amministrazione

gkectl create loadbalancer --config [ADMIN_CLUSTER_CONFIG]

Crea il cluster di amministrazione

Segui le istruzioni in Creare un cluster di amministrazione per creare il cluster di amministrazione.

Completa la compilazione dei file di configurazione del cluster utente

Segui le istruzioni in Creare un cluster utente per completare la compilazione del file di configurazione del cluster utente.

Esecuzione di controlli preliminari

Esegui i controlli preflight sul file di configurazione del cluster utente:

gkectl check-config --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

Sostituisci quanto segue:

  • ADMIN_CLUSTERE_KUBECONFIG: il percorso del file kubeconfig del cluster di amministrazione

  • USER_CLUSTER_CONFIG: il percorso del file di configurazione del cluster utente

Carica immagini sistema operativo

Carica le immagini sistema operativo nel tuo ambiente vSphere:

gkectl prepare --config USER_CLUSTER_CONFIG

Crea un bilanciatore del carico per il cluster utente

Crea un bilanciatore del carico per il cluster utente:

gkectl create loadbalancer --config USER_CLUSTER_CONFIG

Crea il cluster utente

Segui le istruzioni in Creare un cluster utente per creare il tuo cluster utente.

Test di prestazioni e carico

La velocità effettiva di download della tua applicazione scala in modo lineare in base al numero di backend. Questo perché i backend inviano le risposte direttamente ai client, ignorando il bilanciatore del carico, utilizzando Direct Server Return.

Al contrario, la velocità effettiva di caricamento della tua applicazione è limitata dalla capacità della VM di Seesaw che esegue il bilanciamento del carico.

Le applicazioni richiedono una quantità variabile di CPU e memoria, pertanto è fondamentale eseguire un test di carico prima di iniziare a gestire un numero elevato di client.

Il test indica che una singola VM Seesaw con 6 CPU e 3 GB di memoria è in grado di gestire 10 GB/s (frequenza di riga) di caricamento di traffico con 10.000 connessioni TCP simultanee. Tuttavia, è importante eseguire un test di carico personalizzato se prevedi di supportare un numero elevato di connessioni TCP simultanee.

Limiti di scalabilità

Con il bilanciamento del carico in bundle, sono previsti dei limiti alla scalabilità del cluster. Esiste un limite al numero di nodi nel cluster e un limite al numero di servizi che possono essere configurati sul bilanciatore del carico. Esiste anche un limite ai controlli di integrità. Il numero di controlli di integrità dipende dal numero di nodi e dal numero di servizi.

A partire dalla versione 1.3.1, il numero di controlli di integrità dipende dal numero di nodi e dal numero di traffico dei servizi locali. Un servizio locale di traffico è un servizio la cui externalTrafficPolicy è impostata su "Local".

Versione 1.3.0Versione 1.3.1 e successive
Max servizi (S)100500
Numero massimo di nodi (N)100100
Numero massimo di controlli di integrità S * N <= 10KN + L * N <= 10 K, dove L è il numero di traffico dei servizi locali

Esempio: nella versione 1.3.1, supponiamo di avere 100 nodi e 99 di traffico servizi locali. Il numero di controlli di integrità è quindi 100 + 99 * 100 = 10.000, entro il limite di 10.000.

Esegui l'upgrade del bilanciatore del carico per un cluster

Quando esegui l'upgrade di un cluster, viene eseguito automaticamente l'upgrade del bilanciatore del carico. Non è necessario eseguire un comando separato per eseguire l'upgrade del bilanciatore del carico. Se il bilanciatore del carico è in modalità ad alta disponibilità, Cluster Anthos su VMware ricrea le VM del bilanciatore del carico in modo continuativo. Per evitare un'interruzione del servizio durante un upgrade, il cluster avvia un failover prima di creare la nuova VM.

Se vuoi, puoi aggiornare le CPU o la memoria delle VM Seesaw senza eseguire un upgrade completo. Innanzitutto, modifica i valori cpus e memoryMB nel file di configurazione del cluster. Ad esempio:

apiVersion: v1
bundlePath:
loadBalancer:
  kind: Seesaw
  seesaw:
    cpus: 3
    memoryMB: 3072

Quindi, per aggiornare il bilanciatore del carico per un cluster di amministrazione:

gkectl upgrade loadbalancer --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
    --config ADMIN_CLUSTER_CONFIG --admin-cluster
Per aggiornare il bilanciatore del carico per un cluster utente:
gkectl upgrade loadbalancer --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
    --config USER_CLUSTER_CONFIG

Sostituisci quanto segue:

  • ADMIN_CLUSTER_KUBECONFIG: il percorso del file kubeconfig del cluster di amministrazione

  • ADMIN_CLUSTER_CONFIG: il percorso del file di configurazione del cluster di amministrazione

  • USER_CLUSTER_CONFIG: il percorso del file di configurazione del cluster utente

Visualizza i log di Seesaw

Il bilanciatore del carico in bundle di Seesaw archivia i file di log sulle VM di Seesaw in /var/log/seesaw/. Il file di log più importante è seesaw_engine.INFO.

A partire dalla v1.6, se Stackdriver è abilitato, vengono caricati anche i log nel cloud. Puoi visualizzarli nella risorsa "anthos_l4lb". Per disabilitare il caricamento dei log, puoi accedere tramite SSH alla VM ed eseguire:

sudo systemctl disable --now docker.fluent-bit.service

Visualizza le informazioni sulle tue VM Seesaw

Puoi ottenere informazioni sulle VM di Seesaw per un cluster dalla risorsa personalizzata SeesawGroup.

Visualizza la risorsa personalizzata SeesawGroup per un cluster:

kubectl --kubeconfig CLUSTER_KUBECONFIG get seesawgroups -n kube-system -o yaml

Sostituisci CLUSTER_KUBECONFIG con il percorso del file kubeconfig del cluster.

L'output ha un campo isReady che mostra se le VM sono pronte a gestire il traffico. L'output mostra anche i nomi e gli indirizzi IP delle VM di Seesaw e la VM principale:

apiVersion: seesaw.gke.io/v1alpha1
kind: SeesawGroup
metadata:
  ...
  name: seesaw-for-cluster-1
  namespace: kube-system
  ...
spec: {}
status:
  machines:
  - hostname: cluster-1-seesaw-1
    ip: 172.16.20.18
    isReady: true
    lastCheckTime: "2020-02-25T00:47:37Z"
    role: Master
  - hostname: cluster-1-seesaw-2
    ip: 172.16.20.19
    isReady: true
    lastCheckTime: "2020-02-25T00:47:37Z"
    role: Backup

Visualizzare le metriche di Seesaw

Il bilanciatore del carico in bundle di Seesaw fornisce le seguenti metriche:

  • Velocità effettiva per servizio o nodo
  • Tariffa pacchetti per servizio o nodo
  • Connessioni attive per servizio o nodo
  • Utilizzo di CPU e memoria
  • Numero di pod di backend integri per servizio
  • Qual è la VM principale e quella di backup
  • Uptime

A partire dalla v1.6, queste metriche vengono caricate su Cloud con Stackdriver. Puoi visualizzarli nella risorsa di monitoraggio di "anthos_l4lb".

Puoi anche utilizzare qualsiasi soluzione di monitoraggio e dashboard di tua scelta, purché supporti il formato Prometheus.

Elimina un bilanciatore del carico

Se elimini un cluster che utilizza il bilanciamento del carico in bundle, devi eliminare le VM di Seesaw per quel cluster. Per farlo, elimina le VM di Seesaw nell'interfaccia utente di vSphere.

In alternativa, puoi eseguire gkectl delete loadbalancer.

Per un cluster di amministrazione:

gkectl delete loadbalancer --config ADMIN_CLUSTER_CONFIG --seesaw-group-file GROUP_FILE

Per un cluster utente:

gkectl delete loadbalancer  --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG \
    --seesaw-group-file GROUP_FILE

Sostituisci quanto segue:

  • ADMIN_CLUSTER_CONFIG: il percorso del file di configurazione del cluster di amministrazione

  • USER_CLUSTER_CONFIG: il percorso del file di configurazione del cluster utente

  • ADMIN_CLUSTER_KUBECONFIG: il percorso del file kubeconfig del cluster di amministrazione

  • GROUP_FILE: il percorso del file di gruppo di Seesaw. Il nome del file del gruppo ha questo modulo:
    seesaw-for-CLUSTER_NAME-IDENTIFIER.yaml.
    Ad esempio: seesaw-for-gke-admin-12345.yaml.

Configurazione dei criteri firewall distribuiti NSX-T stateless per l'utilizzo con il bilanciatore del carico Seesaw

Se la tua configurazione utilizza il firewall distribuito stateful NSX-T e vuoi utilizzare anche il bilanciatore del carico Seesaw, hai diverse opzioni. Scegli quello che meglio si adatta al tuo ambiente.

Elenco di controllo per la configurazione di NSX

Prima di implementare una delle opzioni di correzione descritte, verifica di avere la seguente configurazione NSX DFW:

  • Le sezioni DFW NSX stateful sono la configurazione predefinita. Questo è probabilmente ciò che è presente nel tuo ambiente. Consulta Sezioni del firewall e regole firewall.

  • L'inserimento del servizio a volte viene utilizzato con NSX DFW per fornire il concatenamento dei servizi e l'ispezione L7 nell'ambito dell'integrazione del partner. Anche i criteri di inserimento di servizi sono stateful per impostazione predefinita. Per verificare che l'integrazione sia abilitata nel tuo ambiente, esamina le informazioni seguenti.

Opzione 1: crea un criterio firewall distribuito stateless per i bilanciatori del carico Seesaw

Con questa opzione, puoi mantenere abilitato il firewall distribuito nell'ambiente, mappando l'infrastruttura Anthos, in particolare i bilanciatori del carico di Seesaw, a un criterio stateless. Considera le differenze tra firewall stateless e stateful per essere certo di scegliere il tipo più adatto al tuo ambiente. Consulta la sezione Aggiungere una regola firewall in modalità gestore - Procedura - Passaggio 6 della documentazione di VMware.

Per creare un criterio firewall stateless:

  1. Vai a Inventario > Tag. Crea un tag denominato seesaw.

  2. Vai a Inventario > Gruppi. Crea un gruppo denominato Seesaw.

  3. Configura l'insieme di membri di Seesaw.

    • Fai clic su Imposta membri. Configura i membri impostati con Criteri di appartenenza in base al tag seesaw che hai creato. Sebbene l'utilizzo dei tag NSX sia generalmente considerato una best practice da VMware, questa metodologia richiede l'automazione per impostarli ogni volta che l'ambiente cambia, ad esempio durante l'upgrade o il ridimensionamento dei cluster Anthos nel tuo ambiente. In questo caso, un criterio basato su altri criteri di appartenenza potrebbe funzionare meglio. Puoi utilizzare altre opzioni di appartenenza dinamica, ad esempio nomi VM (incluse le espressioni regolari), segmenti e porte di segmenti. Per saperne di più sui criteri di appartenenza ai gruppi, consulta Aggiungere un gruppo.
  4. Vai a Sicurezza > Firewall distribuito. Crea una sezione denominata Anthos.

  5. Fai clic sull'icona a forma di ingranaggio in alto a destra e imposta l'opzione Stateful su No.

  6. Aggiungi regole alla sezione. Ti consigliamo di aggiungere almeno due regole simmetriche, come le seguenti:

    Source: Seesaw Group, Destination: Any, Applied to: Seesaw Group
    Source: Any, Destination: Seesaw Group, Applied to: Seesaw Group
    

  7. Pubblica le modifiche e verifica le operazioni.

La sezione stateless deve essere inserita nella tabella DFW NSX in modo da avere la precedenza su altre sezioni che potrebbero consentire lo stesso traffico in modo stateful, mascherando così le regole stateless. Assicurati che la sezione stateless sia la più specifica e che preceda altri criteri che potrebbero creare una sovrapposizione.

Sebbene non sia obbligatorio, puoi creare un gruppo che includa tutte le VM Anthos utilizzando criteri di appartenenza granulari come il tag di segmento, in modo che tutte le VM connesse a una specifica rete NSX siano incluse nel gruppo. Puoi quindi utilizzare questo gruppo nel tuo criterio stateless.

Opzione 2: aggiungi le VM di Seesaw all'elenco di esclusione dei firewall distribuiti

Con questa opzione, puoi escludere completamente le VM dall'ispezione del firewall distribuita senza disabilitare NSX DFW. Vedi Gestire un elenco di esclusione dei firewall.

  1. Vai a Sicurezza > Firewall distribuito. Seleziona Azioni > Elenco di esclusione.

  2. Scegli il gruppo Seesaw o il gruppo che include tutte le VM Anthos.

Risoluzione dei problemi

Recupero di una connessione SSH a una VM Seesaw

Di tanto in tanto potresti voler accedere tramite SSH a una VM Seesaw per la risoluzione dei problemi o il debug.

Recupero della chiave SSH

Se hai già creato il cluster, segui questi passaggi per ottenere la chiave SSH:

  1. Recupera il secret seesaw-ssh dal cluster. Recupera la chiave SSH dal secret e decodificala in base64. Salva la chiave decodificata in un file temporaneo:

    kubectl --kubeconfig CLUSTER_KUBECONFIG get -n  kube-system secret seesaw-ssh -o \
    jsonpath='{@.data.seesaw_ssh}' | base64 -d | base64 -d > /tmp/seesaw-ssh-key
    

    Sostituisci CLUSTER_KUBECONFIG con il percorso del file kubeconfig del cluster.

  2. Imposta le autorizzazioni appropriate per il file di chiave:

    chmod 0600 /tmp/seesaw-ssh-key

    Se non hai ancora creato il cluster, segui questi passaggi per ottenere la chiave SSH:

  3. Individua il file denominato seesaw-for-CLUSTER_NAME-IDENTIFIER.yaml.

    Il file è denominato file di gruppo e si trova accanto a config.yaml.

    Inoltre, gkectl create loadbalancer stampa la posizione del file del gruppo.

  4. Nel file, ottieni il valore di credentials.ssh.privateKey e decodificalo in base64. Salva la chiave decodificata in un file temporaneo:

    cat seesaw-for-CLUSTER_NAME-IDENTIFIER.yaml  | grep privatekey | sed 's/    privatekey: //g' \
    | base64 -d > /tmp/seesaw-ssh-key
    
  5. Imposta le autorizzazioni appropriate per il file di chiave:

    chmod 0600 /tmp/seesaw-ssh-key
    

Ora puoi connetterti alla VM Seesaw tramite SSH:

ssh -i /tmp/seesaw-ssh-key ubuntu@SEESAW_IP

Sostituisci SEESAW_IP con l'indirizzo IP della VM Seesaw.

Ottieni snapshot

Puoi acquisire snapshot delle VM Seesaw utilizzando il comando gkectl diagnose snapshot insieme al flag --scenario.

Se imposti --scenario su all o all-with-logs, l'output includerà gli snapshot di Seesaw insieme ad altri snapshot.

Se imposti --scenario su seesaw, l'output includerà solo le istantanee di Seesaw.

Esempi:

gkectl diagnose snapshot --kubeconfig ADMIN_CLUSTER_KUBECONFIG --scenario seesaw

gkectl diagnose snapshot --kubeconfig ADMIN_CLUSTER_KUBECONFIG --cluster-name CLUSTER_NAME --scenario seesaw

gkectl diagnose snapshot --seesaw-group-file GROUP_FILE --scenario seesaw

Sostituisci quanto segue:

  • ADMIN_CLUSTER_KUBECONFIG: il percorso del file kubeconfig del cluster di amministrazione

  • GROUP_FILE: il percorso del file del gruppo per il cluster.

Ricrea la VM Seesaw da stato non funzionante

Se una VM di Seesaw viene eliminata per errore, puoi ricrearla utilizzando il comando gkectl upgrade loadbalancer con i flag --no-diff e --force. In questo modo vengono ricreate tutte le VM di Seesaw nel cluster, indipendentemente dall'esistenza o dallo stato di integrità. Se il bilanciatore del carico è in modalità ad alta disponibilità e solo una su due VM viene eliminata, l'esecuzione di questo comando ricrea entrambe le VM.

Ad esempio, per ricreare il bilanciatore del carico di Seesaw nel cluster di amministrazione, esegui questo comando:

gkectl upgrade loadbalancer --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
    --config ADMIN_CLUSTER_CONFIG --admin-cluster --no-diff --force

Per ricreare il bilanciatore del carico di Seesaw nel cluster utente, esegui questo comando:

gkectl upgrade loadbalancer --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
    --config USER_CLUSTER_CONFIG --no-diff --force

Sostituisci quanto segue:

  • ADMIN_CLUSTER_KUBECONFIG: il percorso del file kubeconfig del cluster di amministrazione

  • ADMIN_CLUSTER_CONFIG: il percorso del file di configurazione del cluster di amministrazione

  • USER_CLUSTER_CONFIG: il percorso del file di configurazione del cluster utente

Problemi noti

Cisco ACI non funziona con Direct Server Return (DSR)

Seesaw viene eseguito in modalità DSR e per impostazione predefinita non funziona in Cisco ACI a causa dell'apprendimento dell'IP del piano dati. Una possibile soluzione alternativa per l'utilizzo del gruppo di endpoint applicazioni è disponibile qui.

Citrix Netscaler non funziona con Direct Server Return (DSR)

Se esegui il bilanciatore del carico Netscaler davanti a Seesaw, devi disattivare il forwarding basato su MAC (MBF). Fai riferimento alla documentazione di Citrix.

In alcuni casi l'upgrade del bilanciatore del carico di Seesaw non funziona

Se tenti di eseguire l'upgrade di un cluster dalla versione 1.8.0 o se utilizzi gkectl upgrade loadbalancer per aggiornare alcuni parametri del bilanciatore del carico di Seesaw alla versione 1.8.0, non funzionerà in modalità DHCP o IPAM. Attendi la correzione annunciata in una versione imminente prima di eseguire l'upgrade.