Questa pagina spiega i requisiti di bilanciamento del carico quando si utilizza il bilanciamento del carico manuale. A differenza del bilanciamento del carico in bundle, in cui Google Distributed Cloud esegue il deployment dei bilanciatori del carico sui nodi del cluster per il traffico del control plane e del data plane, con il bilanciamento del carico manuale configuri le tue soluzioni di bilanciamento del carico per il traffico del control plane e del data plane.
Prima di creare un cluster bare metal, devi configurare un bilanciatore del carico esterno per il piano di controllo. Il bilanciatore del carico del control plane esterno può essere utilizzato anche per il traffico del data plane oppure puoi configurare un bilanciatore del carico separato per il data plane. Ad esempio, puoi utilizzare un bilanciatore del carico in-cluster come MetalLB per il traffico del data plane.
Oltre a spiegare i requisiti di bilanciamento del carico, questa pagina descrive come configurare il bilanciamento del carico manuale utilizzando F5 BIG-IP.
Prerequisiti
Le sezioni seguenti descrivono i prerequisiti per la configurazione del bilanciamento del carico manuale.
Indirizzo IP obbligatorio
Devi pianificare i VIP prima di creare un cluster. Tutti i cluster hanno bisogno di un VIP per il control plane. Tutti i cluster utente hanno bisogno di un secondo VIP per il servizio in entrata.
Questi VIP possono trovarsi in qualsiasi subnet IPv4 instradabile dal bilanciatore del carico. Il VIP del control plane deve essere raggiungibile da tutti i nodi del cluster e dalla workstation di amministrazione su cui esegui bmctl
.
Quando crei il cluster, il servizio di ingresso viene sottoposto a deployment utilizzando l'IP virtuale che specifichi nel file di configurazione del cluster. Puoi configurare il bilanciamento del carico per questo indirizzo IP dopo la creazione del cluster.
Devi conoscere gli indirizzi IP che utilizzerai per i nodi che verranno utilizzati come nodi del control plane.
Requisiti del bilanciatore del carico del control plane esterno
Il bilanciatore del carico del control plane deve essere configurato prima di creare il cluster. Il bilanciatore del carico del control plane deve soddisfare i seguenti requisiti:
- Un servizio virtuale (frontend) per il VIP del control plane. La porta di ascolto
predefinita del control plane è 443. Tuttavia, se specifichi una porta diversa, il campo
loadBalancer.ports.controlPlaneLBPort
del file di configurazione del cluster utilizza quella porta per il servizio virtuale. - Un gruppo di backend contenente tutti gli indirizzi IP dei nodi del control plane del cluster. La porta di backend su cui rimane in ascolto il control plane è 6444.
- Un controllo di integrità che monitora i nodi di backend. Il controllo di integrità deve utilizzare
HTTPS e controllare l'endpoint
/readyz
sulla porta 6444. Il controllo di integrità deve verificare che questo endpoint restituisca il codice di stato 200 per considerare il nodo integro.
Se il bilanciatore del carico esterno non è configurato correttamente, è probabile che il bootstrapping del cluster non vada a buon fine. Un controllo
prevolo verifica che il bilanciatore del carico esterno sia configurato correttamente, inclusa la verifica che il bilanciatore del carico esegua il controllo di integrità dell'endpoint /readyz
.
Reimposta le connessioni ai nodi non riusciti (consigliato)
Oltre ai requisiti precedenti, ti consigliamo di configurare il bilanciatore del carico per reimpostare le connessioni client quando rileva un errore del nodo di backend. Senza questa configurazione, i client del server API Kubernetes possono smettere di rispondere per diversi minuti quando un'istanza del server non è più disponibile, il che può causare instabilità nel control plane Kubernetes.
- Con F5 BIG-IP, questa impostazione è denominata Action On Service Down nella pagina di configurazione del pool di backend.
- Con HAProxy, questa impostazione viene chiamata on-marked-down shutdown-sessions nella configurazione del server di backend.
- Se utilizzi un bilanciamento del carico diverso, consulta la documentazione per trovare l'impostazione equivalente.
Configura il cluster
Prima di creare un cluster Google Distributed Cloud, crea un file di configurazione del cluster con bmctl
. Modifica questo file per abilitare il bilanciamento del carico manuale
nel cluster:
- Imposta il campo
loadBalancer.mode
sumanual
. - Imposta il campo
loadBalancer.vips.controlPlaneVIP
sul VIP che hai configurato sul bilanciatore del carico. - Rimuovi o commenta la sezione
loadBalancer.addressPools
.
Dopo aver terminato la modifica del file di configurazione, inclusi i campi non correlati al bilanciamento del carico, verifica che il VIP del control plane sia configurato correttamente sul bilanciatore del carico eseguendo i controlli preliminari:
bmctl check preflight -c CLUSTER_NAME
Sostituisci CLUSTER_NAME
con il nome del cluster.
Supportare i servizi LoadBalancer nei cluster utente
Devi configurare il bilanciamento del carico per supportare i servizi LoadBalancer In modalità di bilanciamento del carico manuale, Google Distributed Cloud non esegue automaticamente il provisioning dei bilanciatori del carico, pertanto i servizi LoadBalancer non funzionano a meno che tu non esegua il provisioning e la configurazione dei bilanciatori del carico in modo che puntino ai servizi.
Inoltre, Google Distributed Cloud esegue automaticamente il deployment di un servizio di ingresso in tutti i cluster utente utilizzando un servizio LoadBalancer. Per essere accessibile esternamente, questo servizio LoadBalancer richiede un bilanciatore del carico configurato in modo da puntare al servizio.
Le opzioni per supportare i servizi LoadBalancer includono:
- Configura manualmente il bilanciatore del carico per ogni servizio LoadBalancer nel cluster. Consulta la sezione Configurazione del supporto per i servizi LoadBalancer per un esempio di utilizzo di F5 BIG-IP.
- Installa un controller del bilanciatore del carico nel cluster che configura il bilanciatore del carico esterno quando vengono creati i servizi LoadBalancer.
- Installa una soluzione di bilanciamento del carico in cluster come MetalLB.
Bilanciamento del carico manuale con F5 BIG-IP
Questa sezione descrive come configurare il bilanciamento del carico manuale con F5 BIG-IP come bilanciatore del carico esterno. Se utilizzi un bilanciatore del carico diverso, consulta la documentazione relativa e utilizza questi passaggi come modello.
Configura il bilanciatore del carico del control plane
Devi configurare il bilanciatore del carico del control plane prima di creare un cluster. Dopo aver eseguito questi passaggi, puoi configurare il cluster e crearlo.
Crea una partizione per il cluster
Ogni cluster deve avere la propria partizione. Utilizza l'utilità di configurazione BIG-IP per creare una partizione:
- Vai a Sistema > Utenti > Elenco partizioni.
- Fai clic su Crea.
- Inserisci un nome per la partizione.
- Fai clic su Fine.
Nei passaggi successivi creerai gli oggetti in questa partizione. Assicurati che questa partizione sia selezionata nel menu a discesa nell'angolo in alto a destra dell'interfaccia utente per ciascuna delle seguenti attività, in modo che ogni oggetto venga creato in questa partizione.
Crea un monitor
Crea un monitor per eseguire controlli di integrità sui nodi del control plane:
- Vai a Traffico locale > Monitor.
- Fai clic su Crea.
- Inserisci un nome per il monitor (ad esempio, https_readyz).
- Imposta Tipo su HTTPS.
- In Send String (Stringa di invio), inserisci
GET /readyz HTTP/1.1\r\nHost: \r\nConnection: close
. - In Receive String, inserisci
HTTP/1.1 200
. - Fai clic su Fine.
Crea nodi
Crea un nodo che punta ai nodi del control plane. Se il cluster ha un control plane ad alta disponibilità (HA) con più nodi del control plane, crea un oggetto nodo per ogni nodo del control plane.
- Vai a Traffico locale > Nodi > Elenco nodi.
- Fai clic su Crea.
- Inserisci un nome per il nodo.
- Inserisci l'indirizzo IP del nodo nel campo Indirizzo.
- Fai clic su Fine.
Crea un pool di backend
Crea un pool per i nodi del control plane:
- Vai a Traffico locale > Pool > Elenco pool.
- Fai clic su Crea.
- Seleziona Avanzata nel menu a discesa Configurazione.
- Inserisci un nome per il pool.
- Seleziona il monitoraggio dell'integrità creato in precedenza.
- Imposta Azione in caso di interruzione del servizio su Rifiuta (vedi la discussione di questa impostazione nella sezione Reimpostazione delle connessioni ai nodi non riusciti).
- Aggiungi il nodo del control plane al pool. Se il cluster ha più nodi del piano di controllo, ripeti questi passaggi per ogni nodo:
- Nella sezione Nuovi membri, fai clic su Elenco nodi e poi seleziona il nodo del control plane creato in precedenza.
- Nel campo Porta servizio, inserisci 6444.
- Fai clic su Aggiungi.
Crea un server virtuale
Crea un server virtuale per il control plane:
- Vai a Local Traffic > Virtual Servers > Virtual Server List.
- Fai clic su Crea.
- Inserisci un nome per il server virtuale.
- Imposta Tipo su Standard.
- Inserisci 0.0.0.0/0 nel campo Indirizzo di origine per consentire il traffico da qualsiasi origine.
- Inserisci il VIP del control plane come Indirizzo di destinazione.
- Inserisci la porta del control plane come porta del servizio. Per impostazione predefinita è 443,
ma è configurabile e deve corrispondere a ciò che configuri nella configurazione del cluster
per
loadBalancer.ports.controlPlaneLBPort
. - Nel campo Traduzione indirizzo di origine, seleziona Mappatura automatica.
- In Pool predefinito, seleziona il pool creato in precedenza nel menu a discesa.
- Fai clic su Fine.
Configura il supporto per i servizi LoadBalancer
In modalità di bilanciamento del carico manuale, Google Distributed Cloud non esegue automaticamente il provisioning dei bilanciatori del carico per supportare i servizi LoadBalancer. Per ulteriori informazioni, consulta la sezione Supporto dei servizi LoadBalancer nei cluster utente.
Questa sezione mostra come configurare manualmente un bilanciatore del carico F5 BIG-IP per un servizio LoadBalancer. Ripeti questi passaggi per ogni servizio LoadBalancer che vuoi esporre.
Prerequisiti
Per configurare un servizio LoadBalancer, devi conoscere il VIP che vuoi esporre tramite il bilanciatore del carico, la porta su cui vuoi esporlo e la porta NodePort utilizzata dal servizio LoadBalancer in Kubernetes.
Dopo aver eseguito il deployment di un servizio LoadBalancer nel cluster, determina il NodePort utilizzato per il servizio LoadBalancer. Il seguente comando mostrerà le porte del servizio:
kubectl --kubeconfig KUBECONFIG get service SERVICE_NAME -oyaml
Sostituisci quanto segue:
KUBECONFIG
con il percorso del file kubeconfig da utilizzare.SERVICE_NAME
con il nome del servizio LoadBalancer.
L'output di kubctl get service
include una sezione ports
. Ogni voce della porta
mostra la porta nodePort esposta per la porta sul servizio e questa porta nodePort è
quella a cui configuri il backend del bilanciatore del carico. Il seguente output
di esempio mostra la struttura della sezione ports
:
spec:
clusterIP: 172.26.232.107
externalTrafficPolicy: Cluster
loadBalancerIP: 21.0.101.77
ports:
- name: status-port
nodePort: 30281
port: 15021
protocol: TCP
targetPort: 15021
- name: http
nodePort: 30124
port: 80
protocol: TCP
targetPort: 80
- name: https
nodePort: 31858
port: 443
protocol: TCP
targetPort: 443
Esistono porte per il traffico HTTP e HTTPS. Puoi esporre una o entrambe queste porte tramite il bilanciatore del carico.
Se esponi il servizio di ingresso di cui viene eseguito il deployment automatico in tutti i cluster, il servizio LoadBalancer è denominato istio-ingress
e si trova nello spazio dei nomi gke-system
. Trova le sue porte con questo comando:
kubectl --kubeconfig KUBECONFIG -n gke-system get service istio-ingress -oyaml
Il servizio Ingress è configurato con un loadBalancerIP, ovvero l'IP fornito
nel campo loadBalancer.vips.ingressVIP
nella configurazione
iniziale del cluster. Devi esporre questo VIP per esporre il servizio Ingress sul bilanciatore del carico esterno.
Crea un pool di backend
- Vai a Traffico locale > Pool > Elenco pool.
- Fai clic su Crea.
- Inserisci un nome per il pool.
- Seleziona tcp come monitor di integrità.
- Aggiungi nodi worker al pool di nodi. Ripeti questi passaggi per ogni nodo. Puoi
aggiungere control plane e nodi worker poiché i NodePort Kubernetes sono
accessibili su qualsiasi nodo del cluster.
- Nella sezione Nuovi membri, fai clic su Elenco nodi e poi seleziona uno dei nodi creati in precedenza.
- Nel campo Porta servizio, inserisci il valore NodePort per il servizio.
- Fai clic su Aggiungi.
Crea un server virtuale
- Vai a Local Traffic > Virtual Servers > Virtual Server List.
- Fai clic su Crea.
- Inserisci un nome per il server virtuale.
- Imposta Tipo su Standard.
- Inserisci 0.0.0.0/0 nel campo Indirizzo di origine per consentire il traffico da qualsiasi origine.
- Inserisci il VIP del servizio di bilanciamento del carico come Indirizzo di destinazione.
- Inserisci la porta esposta per il servizio di bilanciamento del carico come porta di servizio.
- Nel campo Traduzione indirizzo di origine, seleziona Mappatura automatica.
- In Pool predefinito, seleziona il pool creato in precedenza nel menu a discesa.
- Fai clic su Fine.