Bilanciamento del carico in bundle con Seesaw

GKE On-Prem può essere eseguito in una delle tre modalità di bilanciamento del carico: integrata, manuale o in bundle. Questo argomento mostra come configurare GKE On-Prem per l'esecuzione in modalità di bilanciamento del carico in bundle.

In modalità di bilanciamento del carico, GKE On-Prem offre e gestisce il bilanciatore del carico. Non è necessario ottenere una licenza per un bilanciatore del carico e la quantità di configurazione che devi fare è minima.

Il bilanciatore del carico in bundle fornito da GKE On-Prem è il bilanciatore del carico di Seesaw.

Vantaggi della modalità di bilanciamento del carico

La modalità di bilanciamento del carico in bundle offre questi vantaggi rispetto alla modalità di bilanciamento del carico manuale:

  • Un singolo team può essere responsabile sia della creazione del cluster che della configurazione del bilanciatore del carico. Ad esempio, un team di amministrazione del cluster non dovrebbe fare affidamento su un team di networking separato per acquisire, eseguire e configurare il bilanciatore del carico in anticipo.

  • GKE On-Prem configura automaticamente gli indirizzi IP virtuali (VIP) sul bilanciatore del carico. Al momento della creazione del cluster, GKE On-Prem configura il bilanciatore del carico con VIP per il server API di Kubernetes, il servizio in entrata e i componenti aggiuntivi del cluster. Quando i client creano servizi di tipo LoadBalancer, GKE On-Prem configura automaticamente i VIP di servizio nel bilanciatore del carico.

  • Le dipendenze tra organizzazioni, gruppi e amministratori sono ridotte. In particolare, il gruppo che gestisce un cluster dipende meno da quello che gestisce la rete,

Consigliamo vivamente di utilizzare vSphere 6.7 e Virtual Distributed Switch (VDS) 6.6 per la modalità di bilanciamento del carico.

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

Pianificazione delle VLAN

Un'installazione di GKE On-Prem ha un cluster di amministrazione e uno o più cluster utente. Con la modalità di bilanciamento del carico in bundle, consigliamo vivamente di configurare i cluster su VLAN separate, in particolare perché il cluster di amministrazione è su una propria VLAN.

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

Provisioning delle risorse VM per il bilanciamento del carico in bundle (Seesaw)

Con il bilanciamento del carico in bundle, esegui il provisioning di CPU e memoria VM, in base al traffico di rete che prevedi di riscontrare.

Il bilanciatore del carico in bundle non richiede un utilizzo intensivo della memoria e può essere eseguito in VM con 1 GB di memoria. Tuttavia, l'aumento della percentuale di pacchetti di rete richiede più CPU.

La tabella seguente mostra le linee guida su archiviazione, CPU e memoria per il provisioning delle VM. Poiché la frequenza dei pacchetti non è una misurazione 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 inoltre un ambiente in cui le VM abbiano un link da 10 Gbps e le CPU vengano eseguite con una capacità inferiore al 70%.

Quando il bilanciatore del carico in bundle viene eseguito in modalità ad alta disponibilità, esegue una coppia attiva e di backup, quindi tutto il traffico passa 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 della CPU e della frequenza di pacchetto per apportare le modifiche necessarie.

Se devi modificare CPU e memoria per le VM di Seesaw, devi seguire le istruzioni per eseguire l'upgrade dei bilanciatori del carico. Tieni presente che puoi mantenere la stessa versione del bilanciatore del carico in bundle e modificare solo il numero di CPU e l'allocazione della memoria.

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

Archiviazione CPU Memoria Velocità 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 1000.000 10.000

Tieni presente che devi eseguire il provisioning di una singola CPU in un ambiente non di produzione.

Mettere da parte gli indirizzi IP virtuali

Indipendentemente dalla scelta della 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.

Devi mettere da parte un insieme di VIP per il cluster di amministrazione e un insieme di VIP per ogni cluster utente che intendi creare. Per un determinato cluster, questi VIP devono trovarsi sulla stessa VLAN dei nodi del cluster e delle VM di Seesaw per quel cluster.

Per le istruzioni per mettere da parte i VIP, vedi Mettere da parte gli indirizzi IP virtuali.

Mettere da parte gli indirizzi IP dei nodi

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

Se vuoi che i nodi del tuo cluster abbiano indirizzi IP statici, metti da parte gli indirizzi sufficienti per i nodi nel cluster di amministrazione e i nodi in tutti i cluster utente che intendi creare. Per maggiori dettagli sul numero di indirizzi IP dei nodi da rimuovere, consulta la pagina Configurazione di indirizzi IP statici.

Mettere da parte gli indirizzi IP per le VM di Seesaw

Quindi, metti da parte gli indirizzi IP per le VM che eseguiranno i bilanciatori del carico di Seesaw.

Il numero di indirizzi messi da parte varia a seconda che tu voglia creare bilanciatori del carico Seesaw ad alta disponibilità o bilanciatori del carico Seesaw ad alta disponibilità.

Caso 1: bilanciatori del carico ad alta disponibilità

Per il tuo cluster di amministrazione, metti da parte due indirizzi IP per una coppia di VM di Seesaw. Anche per il cluster di amministrazione, riserva un singolo IP principale per la coppia di VM di Seesaw. Tutti e tre questi indirizzi devono trovarsi sulla stessa VLAN dei tuoi nodi cluster di amministrazione.

Per ogni cluster utente che intendi creare, metti a disposizione due indirizzi IP per una coppia di VM di Seesaw. Inoltre, per ogni cluster utente, metti da parte un singolo IP principale per la coppia di VM Seesaw. Per un determinato cluster utente, tutti e tre questi indirizzi devono trovarsi sulla stessa VLAN dei nodi del cluster utente.

Caso 2: bilanciatori del carico Seesaw non ad alta disponibilità

Per il tuo cluster di amministrazione, riserva un indirizzo IP per una VM di Seesaw. Anche per il cluster di amministrazione, metti da parte un IP principale per il bilanciatore del carico di Seesaw. Entrambi i indirizzi devono trovarsi sulla stessa VLAN dei tuoi nodi cluster di amministrazione.

Per ogni cluster utente che intendi creare, metti da parte un solo indirizzo IP per una VM di Seesaw. Inoltre, per ogni cluster utente, metti da parte un IP principale per il bilanciatore del carico di Seesaw. Entrambi gli indirizzi devono trovarsi sulla stessa VLAN dei nodi del cluster utente.

Pianificare i gruppi di porte

Ogni tua VM di Seesaw ha due interfacce di rete. Una di queste interfacce di rete è configurata con i VIP di servizio. L'altra interfaccia di rete è configurata con l'indirizzo IP della VM stessa.

Per una singola VM di Seesaw, le due interfacce di rete possono essere collegate allo stesso gruppo di porte vSphere oppure possono essere collegate a gruppi di porte separati. Se i gruppi di porte sono separati, devono trovarsi sulla stessa VLAN.

Questo argomento si riferisce a due gruppi di porte:

  • gruppo di porte con bilanciatore del carico: per una VM di Seesaw, l'interfaccia di rete configurata con i VIP di servizio è connessa a questo gruppo di porte.

  • Gruppo di porte nodo di cluster: per una VM di Seesaw, l'interfaccia di rete configurata con l'indirizzo IP della VM è connessa a questo gruppo di porte. Anche i nodi del cluster GKE On-Prem sono connessi a questo gruppo di porte.

Il gruppo di porte del bilanciatore del carico e quello dei nodi del cluster possono essere uguali. Tuttavia, consigliamo vivamente di separarle.

Creazione di file di blocco IP

Per ogni cluster che intendi creare, specifica gli indirizzi che hai scelto per le VM di Seesaw in un file di blocco IP. Questo file di blocco IP è destinato alle VM del bilanciatore del carico, non ai nodi del cluster. Se intendi utilizzare indirizzi IP statici per i nodi del cluster, devi creare un file di blocco IP separato per tali indirizzi. Di seguito è riportato un esempio di file di blocco IP che specifica due indirizzi IP per le VM di Seesaw:

blocks:
  - netmask: "255.255.255.0"
    gateway: "172.16.20.1"
    ips:
    - ip: "172.16.20.18"
      hostname: "seesaw-vm"

Compilazione dei file di configurazione

Prepara un file di configurazione per ogni cluster: cluster amministratore e cluster utente.

Nel file di configurazione di ciascun cluster, imposta loadBalancer.kind su "Seesaw".

Per ogni cluster nel file di configurazione, compila la sezione seesaw nella sezione loadBalancer.

loadBalancer:
  kind: Seesaw
  seesaw:
    ipBlockFilePath::
    vrid:
    masterIP:
    cpus:
    memoryMB:
    vCenter:
      networkName:
    enableha:
    antiAffinityGroups:
      enabled:

seesaw.ipBlockFilePath

Stringa. Imposta questo percorso sul file del blocco IP per le VM di Seesaw. Ad esempio:

loadBalancer:
  seesaw:
    ipBlockFilePath: "admin-seesaw-ipblock.yaml"

seesaw.vrid

Numero intero. L'identificatore del router virtuale della tua VM Seesaw. Questo identificatore deve essere univoco in una VLAN. L'intervallo valido è 1-255. Ad esempio:

loadBalancer:
  seesaw:
    vrid: 125

seesaw.masterIP

Stringa. L'IP principale di Seesaw. Ad esempio:

loadBalancer:
  seesaw:
    masterIP: 172.16.20.21

seesaw.cpus

Numero intero. Il numero di CPU per la VM Seesaw. Ad esempio:

loadBalancer:
  seesaw:
    cpus: 4

seesaw.memoryMB

Numero intero. Il numero di megabyte di memoria per la tua VM di Seesaw. Ad esempio:

loadBalancer:
  seesaw:
    memoryMB: 3072

seesaw.vCenter.networkName

Stringa. Il nome della rete che contiene le VM di Seesaw. Se non impostato, utilizza la stessa rete del cluster. Ad esempio:

loadBalancer:
  seesaw:
    vCenter:
      networkName: "my-seesaw-network"

seesaw.enableHA

Valore booleano. Se vuoi creare un bilanciatore del carico Seesaw ad alta disponibilità, impostalo su true. Altrimenti, imposta questa opzione su false. Ad esempio:

loadBalancer:
  seesaw:
    enableHA: true

Se imposti enableha su true, devi attivare il MAC Learning.

seesaw.antiAffinityGroups.enabled

Se vuoi applicare una regola di anti-affinità alle tue VM di Seesaw, imposta il valore di seesaw.antiAffinityGroups.enabled su true. In caso contrario, imposta il valore su false. Il valore predefinito è true. Il valore consigliato è true, in modo che le VM di Seesaw vengano posizionate su host fisici diversi ogni volta che è possibile. Ad esempio:

loadBalancer:
  seesaw
    antiAffinityGroups:
      enabled: true

Abilitazione dell'apprendimento MAC o della modalità promiscua (solo HA)

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

Se stai configurando un bilanciatore del carico Seesaw ad alta disponibilità, devi abilitare una combinazione di apprendimento MAC, trasmissioni contraffatte e modalità promiscua sul gruppo di porte del bilanciatore del carico.

Il modo in cui attivi queste funzionalità varia in base al tipo di sensore che possiedi:

Tipo di switchAttivazione delle funzionalità in corso...Impatto sulla sicurezza
vSphere 6.7 con VDS 6.6

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

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

vSphere 6.5 o

vSphere 6.7 con una versione di VDS precedente a 6.6

Abilita la modalità promiscua e le trasmissioni contraffatte per il tuo gruppo di porte del bilanciatore del carico. Utilizza l'interfaccia utente vSphere nella pagina del gruppo di porte nella scheda Networking: Edit Settings -> Security. Tutte le VM sul gruppo di porte del bilanciatore del carico sono in modalità promiscua. Quindi qualsiasi VM sul tuo gruppo di porte del bilanciatore del carico può visualizzare tutto il traffico. Se il gruppo di porte del bilanciatore del carico è collegato solo alle VM di Seesaw, solo quelle possono visualizzare tutto il traffico.
Interruttore logico NSX-T Attiva l'apprendimento MAC sul sensore logico. vSphere non supporta la creazione di due sensori logici nello stesso dominio di livello 2. Pertanto, le VM di Seesaw e i nodi del cluster devono essere sullo stesso switch logico. Ciò significa che il machine learning è abilitato per tutti i nodi del cluster. Un utente malintenzionato potrebbe ottenere uno spoofing MAC eseguendo pod con privilegi nel cluster.
Switch standard vSphere Abilita la modalità promiscua e le trasmissioni contraffatte per il tuo gruppo di porte del bilanciatore del carico. Utilizza l'interfaccia utente vSphere su ogni host ESXI: Configure -> Virtual switch -> Standard Switch -> Edit Settings on the port group -> Security. Tutte le VM sul gruppo di porte del bilanciatore del carico sono in modalità promiscua. Quindi qualsiasi VM sul tuo gruppo di porte del bilanciatore del carico può visualizzare tutto il traffico. Se il gruppo di porte del bilanciatore del carico è collegato solo alle VM di Seesaw, solo quelle possono visualizzare tutto il traffico.

Esecuzione di un controllo preliminare sul file di configurazione

Dopo aver creato i file dei blocchi IP e il file di configurazione del cluster di amministrazione, esegui un controllo preliminare sul tuo file di configurazione:

gkectl check-config --config [ADMIN_CONFIG_FILE]

dove [ADMIN_CONFIG_FILE] è il percorso del file di configurazione del cluster di amministrazione GKE On-Prem.

Per il file di configurazione del cluster utente, devi includere il file kubeconfig del cluster amministratore nel comando:

gkectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] check-config --config [USER_CONFIG_FILE]

dove [ADMIN_CLUSTER_KUBECONFIG] è il percorso del file kubeconfig del cluster di amministrazione.

Se il controllo preliminare non riesce, apporta modifiche al file di configurazione on-prem di GKE e ai file dei blocchi IP in base alle esigenze. Quindi esegui di nuovo il controllo preliminare.

Caricamento delle immagini del sistema operativo in corso...

Esegui questo comando per caricare le immagini del sistema operativo nel tuo ambiente vSphere:

gkectl prepare --config [ADMIN_CONFIG_FILE]

dove [ADMIN_CONFIG_FILE] è il percorso del tuo file di configurazione del cluster di amministrazione on-prem di GKE.

Creazione di un cluster di amministrazione che utilizza la modalità di bilanciamento del carico in bundle

Crea e configura le VM per il bilanciatore del carico del cluster di amministrazione:

gkectl create loadbalancer --config [CONFIG_FILE]

dove [CONFIG_FILE] è il percorso del file di configurazione GKE on-prem per il cluster di amministrazione.

Crea il cluster di amministrazione:

gkectl create admin --config [CONFIG_FILE]

dove [CONFIG_FILE] è il percorso del file di configurazione del cluster di amministrazione on-prem di GKE.

Creazione di un cluster utente che utilizza la modalità bilanciamento del carico in bundle

Crea e configura le VM per il bilanciatore del carico del cluster utente:

gkectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] create loadbalancer --config [CONFIG_FILE]

Crea il cluster utente:

gkectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] create cluster --config [CONFIG_FILE]

dove [ADMIN_CLUSTER_KUBECONFIG] è il percorso del file kubeconfig per il cluster di amministrazione e [CONFIG_FILE] è il percorso del file di configurazione del cluster utente on-prem di GKE

Test delle prestazioni e del carico

La velocità effettiva di download della tua applicazione scala in modo lineare con il numero di backend. Questo perché i backend inviano risposte direttamente ai client, bypassando il bilanciatore del carico, tramite il ritorno diretto del server.

La velocità effettiva di caricamento dell'applicazione, invece, è limitata dalla capacità della VM di Seesaw che esegue il bilanciamento del carico.

Le applicazioni variano in base alla quantità di CPU e memoria richieste, quindi è fondamentale eseguire un test di carico prima di iniziare a gestire un numero elevato di client.

I test indicano che una singola VM di Seesaw con 6 CPU e 3 GB di memoria può gestire 10 GB/s (tariffa di rete) durante il caricamento del traffico con 10.000 connessioni TCP simultanee. Tuttavia, è importante eseguire un test di carico personalizzato se si prevede di supportare un numero elevato di connessioni TCP simultanee.

Limiti di scalabilità

Grazie al bilanciamento del carico in bundle, i limiti alla scalabilità del cluster possono essere limitati. Esiste un limite al numero di nodi nel cluster e 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 traffico dei servizi locali. Un servizio locale sul traffico è un servizio con l'opzione externalTrafficPolicy impostata su "Local".

Versione 1.3.0Versione 1.3.1 e successive
Servizi max (S)100500
Numero massimo di nodi (N)100100
Numero massimo controlli di integrità S * N <= 10.000N + L * N <= 10.000, dove L è il numero di servizi locali di traffico

Esempio: nella versione 1.3.1, supponiamo che tu abbia 100 nodi e 99 traffico di Servizi locali. Il numero dei controlli di integrità è quindi 100 + 99 * 100 = 10.000, che rientra nel limite di 10.000.

Upgrade del bilanciatore del carico per cluster di amministrazione

A partire dalla versione 1.4, viene eseguito l'upgrade dei bilanciatori del carico quando esegui l'upgrade del cluster. Non è necessario eseguire altro comando per eludere i bilanciatori del carico separatamente, Tuttavia, puoi comunque utilizzare gkectl upgrade loadbalancer di seguito per aggiornare alcuni parametri.

Puoi aggiornare CPU e memoria per le tue VM di Seesaw. Crea un nuovo file di configurazione come nell'esempio che segue, imposta le CPU e la memoria per le VM di Seesaw. Lasciarli vuoti per mantenerli invariati. Se bundlePath è impostato, eseguirà l'upgrade del bilanciatore del carico a quello specificato nel bundle.

Ad esempio:

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

Quindi esegui questo comando per eseguire l'upgrade del bilanciatore del carico:

gkectl upgrade loadbalancer --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] --config [CLUSTER_CONFIG] --admin-cluster

dove:

  • [ADMIN_CLUSTER_KUBECONFIG] è il file kubeconfig per il cluster di amministrazione.

  • [CLUSTER_CONFIG] è il file di configurazione che hai creato.

Durante l'upgrade di un bilanciatore del carico, si verificherà un tempo di inattività. Se l'alta disponibilità è abilitata per il bilanciatore del carico, il tempo di inattività massimo è di due secondi.

Upgrade del bilanciatore del carico per cluster utente

A partire dalla versione 1.4, viene eseguito l'upgrade dei bilanciatori del carico quando esegui l'upgrade del cluster. Non è necessario eseguire altro comando per eludere i bilanciatori del carico separatamente, Tuttavia, puoi comunque utilizzare gkectl upgrade loadbalancer di seguito per aggiornare alcuni parametri.

Puoi aggiornare CPU e memoria per le tue VM di Seesaw. Crea un nuovo file di configurazione come nell'esempio che segue, imposta le CPU e la memoria per le VM di Seesaw. Lasciarli vuoti per mantenerli invariati. Se è impostato gkeOnPremVersion, il bilanciatore del carico verrà aggiornato a quello specificato da questa versione.

Ad esempio:

apiVersion: v1
kind: UserCluster
name: cluster-1
gkeOnPremVersion:
loadBalancer:
  kind: Seesaw
  seesaw:
    cpus: 4
    memoryMB: 3072

Quindi esegui questo comando per eseguire l'upgrade del bilanciatore del carico:

gkectl upgrade loadbalancer --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] --config [CLUSTER_CONFIG] --name=[CLUSTER_NAME]

dove:

  • [ADMIN_CLUSTER_KUBECONFIG] è il file kubeconfig per il cluster di amministrazione.

  • [CLUSTER_CONFIG] è il file di configurazione che hai creato.

  • [CLUSTER_NAME] è il nome del cluster di cui è in corso l'upgrade.

Visualizzazione dei log di Seesaw

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

Visualizzazione delle informazioni sulle VM di Seesaw

Puoi trovare informazioni sulle VM di Seesaw per un cluster nella risorsa personalizzata SeesawGroup.

Visualizza la risorsa personalizzata SeesawGroup per un cluster:

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

dove [CLUSTER_KUBECONFIG] è il percorso del file kubeconfig per il 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 quale VM è 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

Visualizzazione delle metriche di Seesaw

Il bilanciatore del carico associato a Seesaw fornisce le seguenti metriche:

  • Velocità effettiva per servizio o nodo
  • Velocità pacchetti per servizio o nodo
  • Connessioni attive per servizio o nodo
  • Utilizzo CPU e memoria
  • Numero di pod di backend integri per servizio
  • Quale VM è la principale e qual è il backup
  • Tempo di attività

Puoi utilizzare qualsiasi soluzione di monitoraggio e dashboard a tua scelta, purché supporti il formato Prometheus. Una possibilità è utilizzare i componenti aggiuntivi Prometheus e Grafana integrati con GKE On-Prem.

Usare i componenti aggiuntivi integrati di Prometheus e Grafana

Abilita Prometheus e Grafana per il tuo cluster.

Il passaggio successivo consiste nel creare un oggetto Service e un oggetto Endpoints in modo che il componente aggiuntivo Prometheus conosca le tue VM di Seesaw.

Salva la configurazione seguente come seesaw-metrics.yaml. La configurazione include un manifest del servizio e un manifest degli endpoint:

apiVersion: v1
kind: Service
metadata:
   name: seesaw-metrics
    annotations:
      monitoring.gke.io/scrape: 'true'
      monitoring.gke.io/scheme: 'https'
      monitoring.gke.io/tls_config: 'seesaw-ca'
spec:
    type: ClusterIP
    clusterIP: "None"
    ports:
    - name: metrics
      port: 20257
      protocol: TCP
      targetPort: 20257
---
kind: Endpoints
apiVersion: v1
metadata:
  name: seesaw-metrics
subsets:
 - addresses:
     - ip: [SEESAW_VM1_IP]
     - ip: [SEESAW_VM2_IP]
   ports:
     - name: metrics
       port: 20257

dove:

  • [SEESAW_VM1_IP] è l'indirizzo IP di una delle tue VM di Seesaw.
  • [SEESAW_VM2_IP] è l'indirizzo IP dell'altra VM di Seesaw.

Crea gli oggetti Service ed Endpoints:

kubectl --kubeconfig [CLUSTER_KUBECONFIG] apply seesaw-metrics.yaml

Ora puoi creare dashboard e grafici di Gradana per visualizzare le metriche.

Eliminazione di un bilanciatore del carico

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

In alternativa, a partire dalla versione 1.4.2, puoi eseguire gkectl e passare file di configurazione per eliminare il bilanciatore del carico in bundle e il relativo file di gruppo.

Per i cluster di amministrazione, esegui il comando seguente:

gkectl delete loadbalancer --config [ADMIN_CONFIG_FILE] --seesaw-group-file [GROUP_FILE]

Per i cluster utente, esegui il comando seguente:

gkectl delete loadbalancer --config [CLUSTER_CONFIG_FILE] --seesaw-group-file [GROUP_FILE] --kubeconfig [ADMIN_CLUSTER_KUBECONFIG]

dove

  • [ADMIN_CONFIG_FILE] è il file di configurazione del cluster di amministrazione

  • [CLUSTER_CONFIG_FILE] è il file di configurazione del cluster utente

  • [ADMIN_CLUSTER_KUBECONFIG] è il file kubeconfig del cluster di amministrazione

  • [GROUP_FILE] è il file del gruppo di Seesaw. Il nome del file del gruppo ha il formato seesaw-for-[CLUSTER_NAME]-[IDENTIFIER].yaml.

Versioni precedenti alla 1.4.2

Nelle versioni precedenti alla 1.4.2, in alternativa, puoi eseguire questo comando, che elimina le VM di Seesaw e il file dei gruppi di Seesaw:

gkectl delete loadbalancer --config vsphere.yaml --seesaw-group-file [GROUP_FILE]

dove

  • [GROUP_FILE] è il file del gruppo di Seesaw. Il file del gruppo si trova nella workstation di amministrazione accanto a config.yaml. Il nome del file del gruppo ha il formato seesaw-for-[CLUSTER_NAME]-[IDENTIFIER].yaml.

  • vsphere.yaml è un file che contiene le seguenti informazioni sul tuo server vCenter:

vcenter:
  credentials:
    address:
    username:
    password:
  datacenter:
  cacertpath:

Risolvere i problemi

Ottenere una connessione SSH a una VM di Seesaw

Occasionalmente potresti voler connetterti a una VM di Seesaw tramite SSH per risolvere i problemi o eseguire il debug.

Recupero della chiave SSH in corso...

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

  1. Recupera il secret di seesaw-ssh dal cluster. Recupera la chiave SSH dal Secret e dalla codifica 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

    dove [CLUSTER_KUBECONFIG] è il file kubeconfig per il cluster.

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

    chmod 0600 /tmp/seesaw-ssh-key

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

  1. Individua il file denominato seesaw-for-[CLUSTER_NAME]-[IDENTIFIER].yaml.

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

    gkectl create loadbalancer stampa anche la posizione del file del gruppo.

  2. Nel file, recupera il valore 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
    
  3. Imposta le autorizzazioni appropriate per il file della chiave:

    chmod 0600 /tmp/seesaw-ssh-key

Ora puoi connetterti tramite SSH alla VM Seesaw:

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

dove [SEESAW_IP] è l'indirizzo IP della VM di Seesaw.

Recupero snapshot

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

Se imposti --scenario su all o all-with-logs, l'output include le istantanee di Seesaw insieme ad altri snapshot.

Se imposti --scenario su seesaw, l'output include solo gli snapshot Seesaw.

Esempi:

gkectl diagnose snapshot --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] --scenario seesaw

dove [ADMIN_CLUSTER_KUBECONFIG] è il file kubeconfig per il cluster di amministrazione.

gkectl diagnose snapshot --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] --cluster-name [CLUSTER_NAME] --scenario seesaw
gkectl diagnose snapshot --seesaw-group-file [GROUP_FILE] --scenario seesaw

dove [GROUP_FILE] è il percorso del file del gruppo del cluster: ad esempio:seesaw-for-gke-admin-xxxxxx.yaml.

Problemi noti

Impossibile eseguire l'upgrade del bilanciatore del carico della versione 1.3.x

È noto che, se antiaffinitygroups è disabilitato per un bilanciatore del carico di Seesaw, l'upgrade del bilanciatore del carico da v1.3.x a v1.3.x+ non riuscirà con errore:

SeesawGroup aggiornato non è valido: SeesawConfig non è valido: AntiAffinityGroup deve essere impostato sul valore predefinito se l'utente non lo fornisce.

Il problema è stato risolto nella versione 1.4, quindi puoi scegliere di saltare la versione 1.3.x+ ed eseguire l'upgrade alla versione 1.4.