Ti consigliamo di configurare una delle seguenti modalità di bilanciamento del carico:
Con la modalità in bundle, Google Distributed Cloud fornisce e gestisce il bilanciatore del carico. Non devi ottenere una licenza per un bilanciatore del carico e la quantità di configurazione da eseguire è minima.
Con la modalità manuale, Google Distributed Cloud utilizza un bilanciatore del carico a tua scelta, come F5 BIG-IP o Citrix. La modalità di bilanciamento del carico manuale richiede una configurazione più complessa rispetto alla modalità in bundle.
Il bilanciamento del carico manuale è supportato per i seguenti tipi di cluster:
Cluster utente con Controlplane V2 abilitato. Con Controlplane V2, i nodi del control plane per un cluster utente si trovano nel cluster utente stesso.
Cluster utente che utilizzano kubeception. Il termine kubeception si riferisce al caso in cui il control plane per un cluster utente viene eseguito su uno o più nodi nel cluster di amministrazione. Se Controlplane V2 non è abilitato, un cluster utente utilizza kubeception.
Questo documento descrive i passaggi da seguire se scegli di utilizzare la modalità di bilanciamento del carico manuale.
In questo documento, metti da parte gli indirizzi IP per i nodi del control plane e i nodi worker per un utilizzo successivo. Inoltre, metti da parte gli indirizzi IP per gli IP virtuali (VIP) e decidi i valori NodePort. L'idea è di scegliere gli indirizzi IP e i valori NodePort che vuoi utilizzare e poi registrarli in un foglio di lavoro o in un altro strumento. Quando sei pronto per creare i cluster, avrai bisogno degli indirizzi IP e dei valori NodePort per compilare i file di configurazione per il cluster di amministrazione e per il cluster utente e i file di blocchi IP per i cluster.
Avrai bisogno anche degli indirizzi IP e dei valori NodePort quando configuri manualmente il bilanciatore del carico per i cluster utente.
Configura un altro tipo di bilanciatore del carico per il control plane
Nella versione 1.32 e successive, quando è abilitato il cluster avanzato, puoi configurare facoltativamente un tipo diverso di bilanciatore del carico per il control plane quando crei un nuovo cluster. Per ulteriori informazioni, consulta le seguenti risorse:
- Cluster di amministrazione:
adminMaster.controlPlaneLoadBalancer
- Cluster utenti:
masterNode.controlPlaneLoadBalancer
Riservare gli indirizzi IP dei nodi
Con la modalità di bilanciamento del carico manuale, non puoi utilizzare DHCP. Devi specificare indirizzi IP statici per i nodi del cluster. Devi riservare un numero sufficiente di indirizzi per i nodi del cluster di amministrazione e per i nodi di tutti i cluster utente che intendi creare. Per informazioni dettagliate su quanti indirizzi IP dei nodi riservare, consulta Pianificare gli indirizzi IP (Controlplane V2) e Pianificare gli indirizzi IP (kubeception).
Configura gli indirizzi IP
La posizione in cui configuri gli indirizzi IP statici che hai riservato dipende dal tipo di cluster e dal fatto che Controlplane V2 sia abilitato nei cluster utente.
Cluster di amministrazione HA
La tabella seguente descrive a cosa servono gli indirizzi IP e dove configurarli per i cluster di amministrazione HA.
IP statici | Configurazione |
---|---|
Nodi del control plane | Se
il cluster utilizza domini di topologia, aggiungi gli indirizzi IP in un
file di blocco IP per il
cluster di amministrazione e aggiungi il percorso nel
campo Se il cluster non utilizza domini di topologia, aggiungi gli indirizzi IP nel
file di configurazione del cluster di amministrazione nella sezione
|
1.16 e versioni precedenti: nodi del componente aggiuntivo | File del blocco IP del cluster di amministrazione e aggiungi il percorso nel campo network.ipMode.ipBlockFilePath del file di configurazione del cluster di amministrazione |
Nella versione 1.28 e successive, i nuovi cluster di amministrazione HA non hanno nodi aggiuntivi, quindi non è necessario riservare indirizzi IP per i nodi aggiuntivi come nelle versioni precedenti.
Cluster di amministrazione non HA
La tabella seguente descrive a cosa servono gli indirizzi IP e dove configurarli per i cluster di amministrazione non HA.
IP statici | Configurazione |
---|---|
Nodo del control plane | File del blocco IP del cluster di amministrazione e aggiungi il percorso nel campo network.ipMode.ipBlockFilePath del file di configurazione del cluster di amministrazione |
Nodi aggiuntivi | File di blocco IP del cluster di amministrazione |
Nella versione 1.28 e successive, tutti i nuovi cluster di amministrazione devono essere cluster ad alta disponibilità (HA) con 3 nodi del control plane.
Cluster utente CP V2
La tabella seguente descrive a cosa servono gli indirizzi IP e dove configurarli per i cluster utente con Controlplane V2 abilitato.
IP statici | Configurazione |
---|---|
Nodi del control plane | Se
il cluster utilizza domini di topologia, aggiungi gli indirizzi IP in un
file di blocco IP per il
cluster utente e aggiungi il percorso nel
campo Se il cluster non utilizza domini di topologia, aggiungi gli indirizzi IP nel file di configurazione del cluster utente nella sezione |
Nodi worker | File di blocco IP del cluster utente e aggiungi il percorso nel campo network.ipMode.ipBlockFilePath del file di configurazione del cluster utente. |
Cluster utente Kubeception
La seguente tabella descrive a cosa servono gli indirizzi IP e dove configurarli per i cluster utente che utilizzano kubeception.
IP statici | Configurazione |
---|---|
Nodi del control plane | File del blocco IP del cluster di amministrazione e aggiungi il percorso nel campo network.ipMode.ipBlockFilePath del file di configurazione del cluster di amministrazione |
Nodi worker | File di blocco IP del cluster utente e aggiungi il percorso nel campo network.ipMode.ipBlockFilePath del file di configurazione del cluster utente. |
Nella versione 1.30 e successive, Controlplane V2 è obbligatorio per i nuovi cluster utente.
Riservare indirizzi IP per VIP
Indipendentemente dalla modalità di bilanciamento del carico integrato, in bundle o manuale, devi mettere da parte diversi indirizzi IP che intendi utilizzare per gli IP virtuali (VIP) per il bilanciamento del carico. Questi VIP consentono ai client esterni di raggiungere i server API Kubernetes e il servizio di ingresso sui cluster utente.
Configura VIP
La posizione in cui configurare gli IP virtuali dipende dal tipo di cluster.
Cluster di amministrazione HA
La tabella seguente descrive a cosa serve il VIP e dove configurarlo per i cluster di amministrazione ad alta disponibilità.
VIP | Configurazione |
---|---|
VIP per il server API Kubernetes del cluster di amministrazione | File di configurazione del cluster di amministrazione nel campo
loadBalancer.vips.controlPlaneVIP |
1.15 e versioni precedenti: VIP componenti aggiuntivi | File di configurazione del cluster di amministrazione nel campo
loadBalancer.vips.addonsVIP |
Tieni presente le seguenti differenze tra le versioni:
Nelle versioni 1.16 e successive, non è necessario configurare un VIP per i componenti aggiuntivi per i cluster di amministrazione HA.
Nelle versioni 1.28 e successive, i nuovi cluster di amministrazione HA non hanno nodi aggiuntivi.
Cluster di amministrazione non HA
La tabella seguente descrive a cosa serve il VIP e dove configurarlo per i cluster di amministrazione non HA.
VIP | Configurazione |
---|---|
VIP per il server API Kubernetes del cluster di amministrazione | File di configurazione del cluster di amministrazione nel campo
loadBalancer.vips.controlPlaneVIP |
1.15 e versioni precedenti: VIP componenti aggiuntivi | File di configurazione del cluster di amministrazione nel campo
loadBalancer.vips.addonsVIP |
Tieni presente le seguenti differenze tra le versioni:
Nelle versioni 1.16 e successive, non è necessario configurare un VIP dei componenti aggiuntivi per i cluster di amministrazione non HA.
Cluster utente CP V2
La seguente tabella descrive a cosa servono i VIP e dove configurarli per i cluster utente con Controlplane V2 abilitato.
VIP | Configurazione |
---|---|
VIP per il server API Kubernetes del cluster utente | File di configurazione del cluster utente nel campo
loadBalancer.vips.controlPlaneVIP |
VIP per il servizio in entrata nel cluster utente | File di configurazione del cluster utente nel campo
loadBalancer.vips.ingressVIP |
Cluster utente Kubeception
La tabella seguente descrive a cosa servono i VIP e dove configurarli per i cluster utente che utilizzano kubeception.
VIP | Configurazione |
---|---|
VIP per il server API Kubernetes del cluster utente | File di configurazione del cluster utente nel campo
loadBalancer.vips.controlPlaneVIP |
VIP per il servizio in entrata nel cluster utente | File di configurazione del cluster utente nel campo
loadBalancer.vips.ingressVIP |
Messa da parte dei valori NodePort
In Google Distributed Cloud, il server API Kubernetes e il servizio in entrata sono esposti dai servizi Kubernetes. Con la modalità di bilanciamento del carico manuale, devi scegliere i tuoi valori NodePort per questi servizi. Scegli valori compresi tra 30.000 e 32.767.
Configura i valori NodePort
Il punto in cui configuri i valori NodePort dipende dal fatto che il cluster utente abbia ControlPlane V2 abilitato.
Cluster di amministrazione HA
La tabella seguente descrive a cosa serve NodePort e dove configurarlo per i cluster di amministrazione HA.
nodePort |
Configurazione |
---|---|
1.15 e versioni precedenti: nodePort per i nodi del componente aggiuntivo |
File di configurazione del cluster di amministrazione nel campo
loadBalancer.manualLB.addonsNodePort |
Nella versione 1.16 e successive, non è necessario configurare un NodePort per i nodi dei componenti aggiuntivi per i cluster di amministrazione HA.
Cluster di amministrazione non HA
La tabella seguente descrive a cosa servono i valori NodePort e dove configurarli per i cluster di amministrazione non HA.
nodePort |
Configurazione |
---|---|
1.16 e versioni precedenti: nodePort per il server API Kubernetes del cluster di amministrazione |
1.15 e versioni precedenti: file di configurazione del cluster di amministrazione nel campo
loadBalancer.vips.controlPlaneNodePort |
1.15 e versioni precedenti: nodePort per i nodi dei componenti aggiuntivi |
File di configurazione del cluster di amministrazione nel campo
loadBalancer.manualLB.addonsNodePort |
Nella versione 1.16 e successive, non è necessario configurare un NodePort per i nodi dei componenti aggiuntivi per i cluster di amministrazione non HA.
Cluster utente CP V2
La tabella seguente descrive a cosa servono i NodePort e dove configurarli per i cluster utente con Controlplane V2 abilitato. Nella versione 1.30 e successive, non è necessario configurare i valori per i NodePort in entrata.
nodePorts |
Configurazione |
---|---|
HTTP nodePort per il servizio in entrata nel cluster utente |
File di configurazione del cluster utente in
loadBalancer.manualLB.ingressHTTPNodePort |
HTTPS nodePort per il servizio in entrata nel cluster utente |
File di configurazione del cluster utente in
loadBalancer.manualLB.ingressHTTPSNodePort |
Cluster utente Kubeception
La tabella seguente descrive a cosa servono i valori NodePort e dove configurarli per i cluster utente che utilizzano kubeception.
nodePort |
Configurazione |
---|---|
nodePort per il server API Kubernetes del cluster utente |
File di configurazione del cluster utente nel campo
loadBalancer.manualLB.controlPlaneNodePort |
nodePort per il server Konnectivity del cluster utente (il server Konnectivity utilizza il VIP del control plane) |
File di configurazione del cluster utente nel campo
loadBalancer.manualLB.konnectivityServerNodePort |
HTTP nodePort per il servizio in entrata nel cluster utente |
File di configurazione del cluster utente in
loadBalancer.manualLB.ingressHTTPNodePort |
HTTPS nodePort per il servizio in entrata nel cluster utente |
File di configurazione del cluster utente in
loadBalancer.manualLB.ingressHTTPSNodePort |
File di configurazione del cluster di esempio
L'esempio seguente mostra una parte di un file di configurazione del cluster di amministrazione e utente:
Cluster di amministrazione HA
Versione 1.16 e successive:
network: controlPlaneIPBlock: netmask: "255.255.248.0" gateway: "21.0.143.254" ips: - ip: "21.0.140.226" hostname: "admin-cp-vm-1" - ip: "21.0.141.48" hostname: "admin-cp-vm-2" - ip: "21.0.141.65" hostname: "admin-cp-vm-3" loadBalancer: vips: controlPlaneVIP: "172.16.21.40" kind: ManualLB
La versione 1.15 e precedenti richiedono un VIP e NodePort per i nodi aggiuntivi.
network: controlPlaneIPBlock: netmask: "255.255.248.0" gateway: "21.0.143.254" ips: - ip: "21.0.140.226" hostname: "admin-cp-vm-1" - ip: "21.0.141.48" hostname: "admin-cp-vm-2" - ip: "21.0.141.65" hostname: "admin-cp-vm-3" loadBalancer: vips: controlPlaneVIP: "172.16.21.40" addonsVIP: "203.0.113.4" kind: ManualLB manualLB: addonsNodePort: 31405
Cluster di amministrazione non HA
Versione 1.16 e successive:
network: ipMode: type: static ipBlockFilePath: "ipblock-admin.yaml" loadBalancer: vips: controlPlaneVIP: "172.16.21.40" kind: ManualLB manualLB: controlPlaneNodePort: 30562
La versione 1.15 e precedenti richiedono un VIP e NodePort per i nodi aggiuntivi.
network: ipMode: type: static ipBlockFilePath: "ipblock-admin.yaml" loadBalancer: vips: controlPlaneVIP: "172.16.21.40" addonsVIP: "172.16.21.41" kind: ManualLB manualLB: controlPlaneNodePort: 30562 addonsNodePort: 30563
Cluster utente CP V2
network:
ipMode:
type: static
ipBlockFilePath: "ipblock1.yaml"
controlPlaneIPBlock:
netmask: "255.255.255.0"
gateway: "172.16.21.1"
ips:
- ip: "172.16.21.6"
hostname: "cp-vm-1"
- ip: "172.16.21.7"
hostname: "cp-vm-2"
- ip: "172.16.21.8"
hostname: "cp-vm-3"
loadBalancer:
vips:
controlPlaneVIP: "172.16.21.40"
ingressVIP: "172.16.21.30"
kind: ManualLB
manualLB:
ingressHTTPNodePort: 30243
ingressHTTPSNodePort: 30879
Cluster utente Kubeception
network:
ipMode:
type: static
ipBlockFilePath: "ipblock1.yaml"
loadBalancer:
vips:
controlPlaneVIP: "172.16.21.40"
ingressVIP: "172.16.21.30"
kind: ManualLB
manualLB:
ingressHTTPNodePort: 30243
ingressHTTPSNodePort: 30879
konnectivityServerNodePort: 30563
controlPlaneNodePort: 30562
Configura il bilanciatore del carico
Utilizza la console di gestione o gli strumenti del bilanciatore del carico per configurare i seguenti mapping nel bilanciatore del carico. La procedura dipende dal bilanciatore del carico.
Cluster di amministrazione HA
Traffico verso i nodi del control plane
Il mapping che devi configurare dipende dal fatto che tu abbia abilitato i cluster avanzati quando crei il cluster di amministrazione.
Se i cluster avanzati non sono abilitati: Google Distributed Cloud gestisce automaticamente il bilanciamento del carico del traffico del piano di controllo per i cluster di amministrazione HA. Sebbene non sia necessario configurare un mapping nel bilanciatore del carico, devi specificare un indirizzo IP nel campo
loadBalancer.vips.controlPlaneVIP
.Se i cluster avanzati sono abilitati, devi configurare il bilanciatore del carico come segue:
Specifica un indirizzo IP nel campo
loadBalancer.vips.controlPlaneVIP
.Configura la seguente mappatura:
- (
controlPlaneVIP
:443
) -> (CONTROL_PLANE_NODE_IP_ADDRESSES:6433
)
- (
Assicurati che il controllo di integrità del backend sia configurato correttamente. Il controllo di integrità deve utilizzare HTTPS e controllare l'endpoint
/readyz
sulla porta6443
. Il controllo di integrità deve verificare che questo endpoint restituisca il codice di stato200
per considerare il nodo integro.
Traffico verso i servizi nei nodi aggiuntivi
1.15 e versioni precedenti: di seguito è riportato il mapping agli indirizzi IP e ai valori NodePort per il traffico verso i servizi nei nodi aggiuntivi:
- (
addonsVIP
:8443) -> (NODE_IP_ADDRESSES:addonsNodePort
)
Aggiungi questo mapping per tutti i nodi nel cluster di amministrazione, sia i nodi del control plane sia i nodi dei componenti aggiuntivi.
Nella versione 1.16 e successive, non è necessario configurare questa mappatura per i nodi aggiuntivi per i cluster di amministrazione HA.
Cluster di amministrazione non HA
Traffico del control plane
Di seguito è riportato il mapping all'indirizzo IP e al valore NodePort per il nodo del control plane:
- (
controlPlaneVIP
:443) -> (NODE_IP_ADDRESSES:controlPlaneNodePort
)
Aggiungi questo mapping per tutti i nodi nel cluster di amministrazione, sia il nodo del control plane sia i nodi dei componenti aggiuntivi.
Traffico verso i servizi nei nodi aggiuntivi
1.15 e versioni precedenti: di seguito è riportato il mapping agli indirizzi IP e ai valori NodePort per i servizi in esecuzione nei nodi dei componenti aggiuntivi:
- (
addonsVIP
:8443) -> (NODE_IP_ADDRESSES:addonsNodePort
)
Aggiungi questo mapping per tutti i nodi nel cluster di amministrazione, sia il nodo del control plane sia i nodi dei componenti aggiuntivi.
Nella versione 1.16 e successive, non è necessario configurare questa mappatura per i nodi aggiuntivi per i cluster di amministrazione non HA.
Cluster utente CP V2
Traffico del control plane
Il mapping che devi configurare dipende dal fatto che tu attivi i cluster avanzati quando crei il cluster utente.
Se i cluster avanzati non sono abilitati: Google Distributed Cloud gestisce automaticamente il bilanciamento del carico del traffico del piano di controllo per i cluster utente. Sebbene non sia necessario configurare un mapping nel bilanciatore del carico, devi specificare un indirizzo IP nel campo
loadBalancer.vips.controlPlaneVIP
.Se i cluster avanzati sono abilitati, devi configurare il bilanciatore del carico come segue:
Specifica un indirizzo IP nel campo
loadBalancer.vips.controlPlaneVIP
.Configura la seguente mappatura:
- (
controlPlaneVIP
:443
) -> (CONTROL_PLANE_NODE_IP_ADDRESSES:6433
)
- (
Assicurati che il controllo di integrità del backend sia configurato correttamente. Il controllo di integrità deve utilizzare HTTPS e controllare l'endpoint
/readyz
sulla porta6443
. Il controllo di integrità deve verificare che questo endpoint restituisca il codice di stato200
per considerare il nodo integro.
Traffico del piano dati
Il mapping che devi configurare dipende dal fatto che tu voglia attivare i cluster avanzati quando crei il cluster utente.
Se i cluster avanzati non sono attivi, segui questi passaggi prima di creare il cluster:
Nel file di configurazione del cluster utente, configura
loadBalancer.vips.ingressVIP
,loadBalancer.manualLB.ingressHTTPNodePort
eloadBalancer.manualLB.ingressHTTPSNodePort
.Nel bilanciatore del carico, configura i mapping da indirizzo IP a porta per ogni NodePort in entrata:
- (
ingressVIP
:80
) -> (NODE_IP_ADDRESSES:ingressHTTPNodePort
) - (
ingressVIP
:443
) -> (NODE_IP_ADDRESSES:ingressHTTPSNodePort
)
- (
Se i cluster avanzati sono abilitati, segui questi passaggi:
Prima di creare il cluster, configura
loadBalancer.vips.ingressVIP
nel file di configurazione del cluster utente. Non è necessario configurare i valori per ogni NodePort di ingresso perché non hanno effetto quando sono abilitati i cluster avanzati.Dopo aver creato il cluster, recupera i valori per ogni NodePort di ingresso:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG -n gke-system get service istio-ingress -oyaml
Cerca HTTP e HTTPS nella sezione delle porte della specifica del servizio e annota i valori NodePort.
Nel bilanciatore del carico, configura i mapping da indirizzo IP a porta per ogni NodePort in entrata:
- (
ingressVIP
:80
) -> (NODE_IP_ADDRESSES:ingressHTTPNodePort
) - (
ingressVIP
:443
) -> (NODE_IP_ADDRESSES:ingressHTTPSNodePort
)
- (
In entrambi i casi, aggiungi questi mapping per tutti i nodi del control plane e i nodi worker nel cluster utente. Poiché hai configurato NodePort sul cluster, Kubernetes apre NodePort su tutti i nodi del cluster. Questa configurazione consente a qualsiasi nodo del cluster di gestire il traffico del piano dati.
Dopo aver configurato i mapping, il bilanciatore del carico rimane in ascolto del traffico sull'indirizzo IP configurato per il VIP in entrata del cluster utente sulle porte HTTP e HTTPS standard. Il bilanciatore del carico instrada le richieste a qualsiasi nodo del cluster. Dopo che una richiesta viene instradata a uno dei nodi del cluster, il networking Kubernetes interno prende il sopravvento e instrada la richiesta al pod di destinazione.
Cluster utente Kubeception
Traffico del control plane
Di seguito è riportato il mapping agli indirizzi IP e ai valori NodePort per il traffico del control plane:
- (
controlPlaneVIP
:443
) -> (NODE_IP_ADDRESSES:controlPlaneNodePort
) - (
controlPlaneVIP
:8132
) -> (NODE_IP_ADDRESSES:konnectivityServerNodePort
)
Aggiungi questo mapping per tutti i nodi nel cluster admin, sia per il cluster di amministrazione che per i nodi del control plane del cluster utente.
Traffico del piano dati
Di seguito è riportato il mapping agli indirizzi IP e ai valori NodePort per il traffico del data plane:
- (
ingressVIP
:80
) -> (NODE_IP_ADDRESSES:ingressHTTPNodePort
) - (
ingressVIP
:443
) -> (NODE_IP_ADDRESSES:ingressHTTPSNodePort
)
Aggiungi questi mapping per tutti i nodi nel cluster utente. Con i cluster utente che utilizzano kubeception, tutti i nodi del cluster sono nodi worker.
Reimpostazione delle 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.
Richiedere assistenza per il bilanciamento del carico manuale
Google non fornisce assistenza per i bilanciatori del carico configurati utilizzando la modalità di bilanciamento del carico manuale. Se riscontri problemi con il bilanciatore del carico, contatta il fornitore del bilanciatore del carico.