Configurazione del bilanciamento del carico manuale

Questa pagina illustra i requisiti di bilanciamento del carico quando si utilizza il bilanciamento del carico manuale. A differenza del bilanciamento del carico in bundle, in cui i cluster Anthos su Bare Metal eseguono il deployment dei bilanciatori del carico sui nodi del cluster per il traffico del piano di controllo e del piano dati, con il bilanciamento del carico manuale configuri le tue soluzioni di bilanciamento del carico per il traffico del piano di controllo e del piano dati.

Devi configurare un bilanciatore del carico esterno per il piano di controllo prima di creare un cluster Bare Metal. Il bilanciatore del carico del piano di controllo esterno può essere utilizzato anche per il traffico del piano dati oppure puoi configurare un bilanciatore del carico separato per il piano dati. Ad esempio, puoi utilizzare un bilanciatore del carico nel cluster come MetalLB per il traffico del piano dati.

Oltre a spiegare i requisiti di bilanciamento del carico, in questa pagina viene descritto come configurare il bilanciamento del carico manuale utilizzando F5 BIG-IP.

Prerequisiti

Indirizzo IP obbligatorio

Devi pianificare i tuoi VIP prima di creare un cluster. Tutti i cluster hanno bisogno di un VIP per il piano di controllo. Tutti i cluster utente richiedono un secondo VIP per il servizio in entrata.

Questi VIP possono essere inseriti in qualsiasi subnet IPv4 dal bilanciatore del carico. Il VIP del piano di controllo deve essere raggiungibile da tutti i nodi del cluster e dalla workstation di amministrazione su cui esegui bmctl.

Quando crei il cluster, viene eseguito il deployment del servizio in entrata utilizzando il VIP specificato 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 piano di controllo.

Requisiti del bilanciatore del carico del piano di controllo esterno

Il bilanciatore del carico del piano di controllo deve essere configurato prima di creare il cluster. Il bilanciatore del carico del piano di controllo deve soddisfare i seguenti requisiti:

  • Un servizio virtuale (frontend) per il VIP del piano di controllo. La porta predefinita per l'ascolto del piano di controllo è 443. Tuttavia, se specifichi una porta diversa, il campo loadBalancer.ports.controlPlaneLBPort del file di configurazione del cluster utilizza tale porta per il servizio virtuale.
  • Un gruppo di backend contenente tutti gli indirizzi IP dei nodi del piano di controllo del cluster. La porta di backend su cui il piano di controllo rimane in ascolto è 6444.
  • Un controllo di integrità che monitora i nodi di backend. Il controllo di integrità deve utilizzare HTTPS e l'endpoint /readyz sulla porta 6444. Il controllo di integrità deve verificare che questo endpoint restituisca il codice di stato 200 per considerare lo stato del nodo.

Se il bilanciatore del carico esterno non è configurato correttamente, è probabile che il bootstrap del cluster non funzioni. Un controllo preliminare verifica che il bilanciatore del carico esterno sia configurato correttamente, inclusa la verifica che il bilanciatore del carico stia controllando l'endpoint /readyz.

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 in caso di interruzione di un'istanza del server, il che può causare instabilità nel piano di controllo di Kubernetes.

  • Con F5 BIG-IP, questa impostazione è denominata Azione in corso e abbassata di servizio nella pagina di configurazione del pool di backend.
  • Con HAProxy, questa impostazione viene chiamata sessioni di arresto on-marked-down nella configurazione del server di backend.
  • Se utilizzi un bilanciatore del carico diverso, consulta la documentazione per trovare l'impostazione equivalente.

Configura il tuo cluster

Prima di creare un cluster Anthos su cluster Bare Metal, devi creare un file di configurazione del cluster con bmctl. Modifica questo file per abilitare il bilanciamento del carico manuale nel cluster:

  1. Imposta il campo loadBalancer.mode su manual.
  2. Imposta il campo loadBalancer.vips.controlPlaneVIP sul VIP che hai configurato sul bilanciatore del carico.
  3. Rimuovi o commenta la sezione loadBalancer.addressPools.

Una volta completata la modifica del file di configurazione, inclusi i campi non correlati al bilanciamento del carico, verifica che il VIP del piano di controllo 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.

Supporto dei servizi LoadBalancer nei cluster utente

Devi configurare il bilanciamento del carico per supportare i servizi di bilanciamento del carico Kubernetes In modalità di bilanciamento del carico manuale, i cluster Anthos su Bare Metal non eseguono automaticamente il provisioning dei bilanciatori del carico, quindi i servizi LoadBalancer non funzionano a meno che non venga eseguito il provisioning e la configurazione dei bilanciatori del carico in modo che puntino i servizi.

Inoltre, i cluster Anthos su Bare Metal eseguono automaticamente il deployment di un servizio in entrata in tutti i cluster utente utilizzando un servizio LoadBalancer. Per essere accessibile dall'esterno, 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 Configurazione del supporto per i servizi LoadBalancer per un esempio utilizzando BIG-IP di F5.
  • Installare 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 di tale bilanciatore e utilizza questi passaggi come modello.

Configurazione del bilanciatore del carico del piano di controllo

Devi configurare il bilanciatore del carico del piano di controllo prima di creare un cluster. Dopo aver eseguito questi passaggi, puoi configurare il cluster e crearlo.

Creazione di una partizione per il cluster

Ogni cluster deve avere la propria partizione. Utilizza l'utilità di configurazione BIG-IP per creare una partizione:

  1. Vai a System > Users > Partition List,
  2. Fai clic su Crea.
  3. Inserisci un nome per la partizione.
  4. Fai clic su Finished (Fine).

Nei passaggi seguenti creerai 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.

Creazione di un monitor

Crea un monitoraggio per eseguire controlli di integrità sui nodi del piano di controllo:

  1. Vai a Traffico locale > Monitor.
  2. Fai clic su Crea
  3. Inserisci un nome per il monitor (ad esempio https://readyz).
  4. Imposta Type su HTTPS.
  5. In Invia stringa, inserisci GET /readyz HTTP/1.1\r\nHost: \r\nConnection: close.
  6. In Ricevi stringa, inserisci HTTP/1.1 200.
  7. Fai clic su Finished (Fine).

Creazione dei nodi

Crea un nodo che rimandi ai nodi del piano di controllo. Se il tuo cluster ha un piano di controllo ad alta disponibilità (HA) con più nodi del piano di controllo, crea un oggetto nodo per ogni nodo del piano di controllo.

  1. Vai a Traffico locale > nodi > elenco nodi.
  2. Fai clic su Crea.
  3. Inserisci un nome per il nodo.
  4. Inserisci l'indirizzo IP del nodo nel campo Indirizzo.
  5. Fai clic su Finished (Fine).

Creazione di un pool di backend

Crea un pool per i nodi del piano di controllo:

  1. Vai a Traffico > Pool > Elenco pool locali.
  2. Fai clic su Crea.
  3. Seleziona Avanzate nel menu a discesa Configurazione.
  4. Inserisci un nome per il pool.
  5. Seleziona il monitor di integrità creato in precedenza.
  6. Imposta Action On Service Off su Rifiuta (consulta la discussione di questa impostazione nella sezione Ripristino delle connessioni ai nodi non riusciti).
  7. Aggiungi il nodo del piano di controllo al pool. Se il tuo cluster ha più nodi del piano di controllo, ripeti questi passaggi per ciascun nodo:
    1. Nella sezione Nuovi membri, fai clic su Elenco nodi e seleziona il nodo del piano di controllo creato in precedenza.
    2. Nel campo Service Port (Porta del servizio), inserisci 6444.
    3. Fai clic su Aggiungi.

Creazione di un server virtuale

Crea un server virtuale per il piano di controllo:

  1. Vai a Traffico locale > Server virtuali > Elenco server virtuali.
  2. Fai clic su Crea.
  3. Inserisci un nome per il server virtuale.
  4. Imposta Type su Standard.
  5. Inserisci 0.0.0.0/0 nel campo Source Address (Indirizzo origine) per consentire il traffico da qualsiasi destinazione.
  6. Inserisci il VIP del piano di controllo come Indirizzo di destinazione.
  7. Inserisci la porta del piano di controllo come Porta di servizio. Per impostazione predefinita, il valore è 443, ma è configurabile e deve corrispondere a quanto configurato nella configurazione del cluster per loadBalancer.ports.controlPlaneLBPort.
  8. Nel campo Source Address Translation (Traduzione degli indirizzi di origine), seleziona Auto Map (Mappa automatica).
  9. In Pool predefinito, seleziona il pool creato in precedenza nel menu a discesa.
  10. Fai clic su Finished (Fine).

Configurazione del supporto per i servizi LoadBalancer

In modalità di bilanciamento del carico manuale, i cluster Anthos su Bare Metal non eseguono il provisioning automatico dei bilanciatori del carico per supportare i servizi LoadBalancer. Per ulteriori informazioni, consulta la pagina relativa al supporto dei servizi LoadBalancer nei cluster utente.

Questa sezione mostra come configurare manualmente un bilanciatore del carico BIG-IP di F5 per un servizio LoadBalancer. Ripeti questi passaggi per ciascun 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 eseguire l'esposizione e la porta Node 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 del file kubctl get service include una sezione ports. Ogni voce di porta mostra la porta del nodo esposta per la porta sul servizio. Questo nodo è quello a cui configurerai il backend del bilanciatore del carico. Di seguito è riportato un esempio:

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

Sono disponibili porte per il traffico http e https. Puoi esporre una o entrambe le porte tramite il tuo bilanciatore del carico.

Se stai esponendo il servizio in entrata 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 porte con questo comando:

kubectl --kubeconfig KUBECONFIG -n gke-system get service istio-ingress -oyaml

Il servizio in entrata è configurato con un bilanciatore del carico, che è l'IP fornito nel campo loadBalancer.vips.ingressVIP nella configurazione del cluster iniziale. Dovresti esporre questo VIP per esporre il servizio in entrata sul bilanciatore del carico esterno.

Creazione di un pool di backend

  1. Vai a Traffico locale > pool > elenco pool.
  2. Fai clic su Crea.
  3. Inserisci un nome per il pool.
  4. Seleziona tcp come monitoraggio dello stato di integrità.
  5. Aggiungi nodi worker al pool di nodi. Ripeti questi passaggi per ciascun nodo. Puoi aggiungere piani di controllo e nodi worker poiché le nodi NodePort di Kubernetes sono accessibili su qualsiasi nodo nel cluster.
    1. Nella sezione Nuovi membri, fai clic su Elenco nodi e seleziona uno dei nodi creati in precedenza.
    2. Nel campo Porta del servizio, inserisci il valore NodePort per il servizio.
    3. Fai clic su Aggiungi.

Creazione di un server virtuale

  1. Vai a Traffico locale > Server virtuali > Elenco server virtuali.
  2. Fai clic su Crea.
  3. Inserisci un nome per il server virtuale.
  4. Imposta Type su Standard.
  5. Inserisci 0.0.0.0/0 nel campo Source Address (Indirizzo origine) per consentire il traffico da qualsiasi destinazione.
  6. Inserisci il VIP del servizio bilanciatore del carico come Indirizzo di destinazione.
  7. Inserisci la porta esposta per il servizio bilanciatore del carico come Porta di servizio.
  8. Nel campo Source Address Translation (Traduzione degli indirizzi di origine), seleziona Auto Map (Mappa automatica).
  9. In Pool predefinito, seleziona il pool creato in precedenza nel menu a discesa.
  10. Fai clic su Finished (Fine).