Hva er Kubernetes Load Balancer?
Lastbalanser fordeler innkommende trafikk over en gruppe verter for å garantere optimal arbeidsmengde og høy tilgjengelighet. På grunn av den underliggende utformingen, er en Kubernetes Cluster's distribuerte arkitektur avhengig av flere forekomster av tjenester, noe som gir utfordringer i fravær av passende belastningsfordeling.
En belastningsbalanse er en trafikkontroller som ruter klientforespørsler til nodene som kan tjene dem raskt og effektivt. Lastbalansen omfordeler arbeidsmengden over de gjenværende nodene når en av vertene mislykkes. Når en ny node kommer inn i en klynge, derimot, begynner tjenesten automatisk å sende forespørsler til belgene som er tilknyttet den.
En belastningsbalanse -tjeneste i en Kubernetes -klynge gjør følgende:
Hvordan legge til en belastningsbalanse i en Kubernetes -klynge?
En belastningsbalanse kan legges til en Kubernetes -klynge på to måter:
Ved bruk av en konfigurasjonsfil:
Lastbalansen er aktivert ved å spesifisere LoadBalancer i typefeltet i tjenestekonfigurasjonsfilen. Skytjenesteleverandøren administrerer og guider denne belastningsbalansen, som sender trafikk til back-end pods. Tjenestekonfigurasjonsfilen skal ligne følgende:
Brukere kan være i stand til å tilordne en IP -adresse til lastbalansen, avhengig av skyleverandøren. Den brukerspesifiserte LoadBalancerip-taggen kan brukes til å sette opp dette. Hvis brukeren ikke oppgir en IP -adresse, tildeles Load Balancer en flyktig IP -adresse. Hvis brukeren spesifiserer en IP -adresse som skyleverandøren ikke støtter, blir den ignorert.
De.status.LoadBalancer -eiendom bør brukes hvis brukeren ønsker å legge til mer informasjon i Load Balancer -tjenesten. Se bildet nedenfor for å angi IP -adressen.
status:Ved å bruke kubectl:
Type = LoadBalancer: Parameter kan også brukes til å konstruere en belastningsbalanse med KUBECTL Expose -kommandoen.
Kommandoen over oppretter den nye tjenesten og kobler den nye poden til en bestemt port.
Hva er søppelinnsamlingsbalanser?
Når en lastbalancer -type tjeneste blir ødelagt, bør de tilhørende belastningsbalanseressursene i skyleverandøren rengjøres så snart som mulig. Imidlertid er det velkjent at skyressurser kan bli foreldreløse hvis den relaterte tjenesten fjernes i en rekke situasjoner. For å forhindre at dette oppstår, ble finalisatorbeskyttelse for service -belastningsbelastere utviklet.
Hvis en tjeneste er av typen LoadBalancer, vil tjenestekontrolleren legge til en finalisator som heter tjeneste.Kubernetes.IO/Load-Balancer-Cleanup til det. Finalisatoren vil bli slettet etter at belastningsbalanseressursen allerede er ryddet opp. Selv i ekstreme tilfeller, for eksempel når tjenestekontrolleren krasjer, forhindrer dette dinglende belastningsbalanser ressurser.
Ulike måter å konfigurere lastbalanser i Kubernetes
For å håndtere ekstern trafikk til belg, er Kubernetes lastbalanseremetoder og algoritmer tilgjengelige.
Rundt Robin
En rund Robin -tilnærming distribuerer nye tilkoblinger til kvalifiserte servere i sekvensiell rekkefølge. Denne teknikken er statisk, noe som betyr at den ikke tar hensyn til spesifikke serverhastigheter eller ytelseshensyn, derfor vil en treg server og en bedre presterende server begge motta samme antall tilkoblinger. Som et resultat er runde robinbelastningsbalansering ikke alltid det beste valget for produksjonstrafikk og er bedre egnet til enkel belastningstesting.
Kube-proxy l4 runde robin
Kube-Proxy samler inn og ruter Alle forespørsler levert til Kubernetes-tjenesten.
Fordi det er en prosess og ikke en proxy, bruker den en virtuell IP for tjenesten. Den tilfører da arkitektur så vel som kompleksitet til rutingen. Hver forespørsel legger til latensen, og problemet blir verre etter hvert som antall tjenester vokser.
L7 runde robin
Noen ganger unngår ruting av trafikk direkte til Pods Kube-Proxy. Dette kan oppnås med en Kubernetes API -gateway som bruker en L7 -proxy for å håndtere forespørsler blant tilgjengelige Kubernetes Pods.
Konsistent hashing/ring hash
Kubernetes Load Balancer bruker en hasj basert på en definert nøkkel for å distribuere nye tilkoblinger på tvers av serverne ved hjelp av konsistente hashingteknikker. Denne strategien er best for å håndtere store cache -servere med dynamisk innhold.
Fordi den komplette hash -tabellen ikke trenger å beregnes på nytt hver gang en server legges til eller tas ut, er denne tilnærmingen konsistent.
Færrest servere
I stedet for å fordele alle forespørsler mellom alle servere, klassifiserer en færrest serverens teknikk den minste mengden servere obligatorisk for å oppfylle den nåværende klientbelastningen. Overdreven servere kan avslås eller deposisjoneres for tiden.
Denne teknikken fungerer ved å spore variasjoner som respons latens når belastningen varierer i henhold til serverkapasitet.
Minst tilkoblinger
Denne belastningsbalanseringsalgoritmen i Kubernetes ruter klientforespørsler til applikasjonsserveren med færrest aktive tilkoblinger på forespørselstidspunktet. Denne metoden bruker aktiv tilkoblingsbelastning til konto siden en applikasjonsserver kan være overbelastet på grunn av lengre levde tilkoblinger hvis applikasjonsservere har like krav.
Konklusjon
Denne artikkelen hadde som mål å gi leserne en omfattende forståelse av Kubernetes belastningsbalansering, som dekker arkitekturen og mange leveringsmetoder for en Kubernetes -klynge. Lastbalansering er en viktig del av å kjøre en effektiv Kubernetes -klynge og er en av de viktigste jobbene til en Kubernetes -administrator. Oppgaver kan planlegges effektivt på tvers av klyngeboller og noder ved hjelp av en optimalt medført belastningsbalanse, noe som muliggjør høy tilgjengelighet, rask gjenoppretting og lav latens for containerte applikasjoner som opererer på Kubernetes.