Kubernetes

Kubernetes Horisontal Pod Autoscaler

Kubernetes Horisontal Pod Autoscaler
Pods kan opprettes som frittstående objekter, eller som en del av et skalerbart replika-sett eller en distribusjon. Hver av de to sistnevnte objektene brukes til å distribuere ikke bare en pod, men en mengde av dem. Målet her er at belgene kan være soppbare hvis man har for mye trafikk to til kan gyte opp og ta den ekstra byrden. En viktig ting å merke seg her er imidlertid at både replika-sett og distribusjonsobjekter har et hardt kodet antall pod-replikaer som de har tenkt å kjøre.

Hvis replikantallet er satt til 100, og etterspørselen er for liten, vil også 100 pods være i gang. Dette resulterer i sløsing med CPU og minne ressurser. Ja, det gir pålitelighet, i den forstand at hvis en node krasjer og pods i den dør, ville Replica Set-kontrolleren prøve å bringe tilbake antallet pods tilbake til 100 ved å gyte pods i andre noder. Søknaden forblir online.

I en mer abstrakt forstand ville Replikasettet prøve å oppnå et ønsket tilstand av klyngen og ville se på nåværende tilstand og finne ut hvordan den kan oppnå ønsket tilstand.

Imidlertid ønsker vi noe litt mer følsomt for den virkelige etterspørselen. Tast inn Horisontal Pod Autoscaler. Det er jobben til Horizontal Pod Autoscaler å skalere applikasjonen når det er behov for den, og deretter skalere den ned når arbeidsmengden synker.

Hvorfor bruke en Horisontal Pod Autoscaler?

Som navnet antyder, vil denne komponenten automatisk skalere applikasjonen din. I skyen kan dette virkelig hjelpe deg med å redusere beregnings- og minneressursene du blir fakturert for. Siden Autoscaler er følsom overfor ressursutnyttelsen, når den ser at mange pods bare sitter inaktiv, skalerer den applikasjonen ned, og når behovet på disse podene øker, skalerer den applikasjonen opp ved å lage nye pods og belastningen blir distribuert til de.

Det kan spare deg både verdifull tid og beregningsressurser. Du trenger ikke å bekymre deg for hva replikatallet skal være for podene dine når du skriver en distribusjon, autoskaler vil klare det for deg.

Førstegangs oppsett

Først og fremst vil kravet være at du har en løpende Kubernetes-klynge. Bruk Katacoda Playground som er perfekt for eksperimentering og læring om Kubernetes. Det neste du trenger er en metrisk server.

Dette tillegget til Kubernetes-systemet ditt (kube-systemnavnområde) vil samle beregninger som CPU og minnebruk fra to forskjellige perspektiv:

  1. Ressurs brukt av hver pod
  2. Ressursforbruk på hver node

Målinger fra begge perspektiver er avgjørende for å hjelpe Autoscaler med å bestemme hva det neste trekket skal være. Følg denne veiledningen for å legge til metriske servere i Kubernetes-klyngen. Nå er vi klare til å se Horizontal Pod Autoscaler i aksjon.

Bruke Autoscaler

For å se Autoscaler fungerer, trenger vi en testapplikasjon. La oss lage en enkel php-apache-server og avsløre den som en tjeneste.

$ kubectl kjør php-apache - image = k8s.gcr.io / hpa-eksempel - forespørsler = cpu = 200m --eksponere
--port = 80

Bildet som brukes her er et av eksemplene på bilder fra Kubernetes-prosjektet. Den utfører noen CPU-intensive oppgaver og gjør prosessen mye tydeligere ved å gjøre det.

For å autoskalere denne distribusjonen, må vi informere autoskaleren om hva som er det minste og maksimale antall pods som vi tillater og CPU-prosentandelen de har lov til å bruke. Det er mange flere faktorer du kan vurdere som minne, lagring og nettverk også.

$ kubectl autoscale distribusjoner / php-apache --cpu-prosent = 50 --min = 1 --max = 10

I den nåværende tilstanden, siden ingen bruker denne tjenesten, vil de mest ligge på minimumsverdien. Du kan sjekke tilstanden til all autoskalert distribusjon i standard navneområdet ved å kjøre:

$ kubectl få hpa
NAVN REFERANSE MÅL MINPODER MAKSPODER REPLIKASJONSALDER
php-apache Deployment / php-apache 0% / 50% 1 10 1 2m

Generere belastning og teste funksjonen for autoskala

Du kan se at antall replikaer fremdeles bare er én og CPU-belastningen er ubetydelig lav. Vi kan skape ekstra belastning og se hvordan autoskaleren reagerer på den. Tjenesten som avslører våre php-apache pods er ikke utsatt for omverdenen, så vi vil lage en midlertidig pod og åpne en interaktiv shell-økt i den pod.

Dette vil tillate oss å kommunisere med alle tjenestene som er tilgjengelige i klyngen, inkludert php-apache-tjenesten.

$ kubectl run -i --tty busybox - image = busybox - restart = Aldri - sh
/ #

Du vil legge merke til at ledeteksten endres, noe som indikerer at vi er inne i denne containeren. La oss nå prøve å legge litt på tjenesten vår ved å gjenta forespørsler gjentatte ganger. I den nye ledeteksten, la oss kjøre følgende mens sløyfe:

/ # mens det er sant; gjør wget -q -O- http: // php-apache.misligholde.svc.klynge.lokal; ferdig

Åpne en ny terminal, siden vi ikke kan la denne sløyfen avslutte ennå. Ved inspeksjon av autoskaleren vil du se CPU-bruken, og når du viser listene, vil du se at det nå er flere forekomster av php-apache-server,

$ kubectl få hpa
NAVN REFERANSE MÅL MINPODER MAKSPODER REPLIKASJONSALDER
php-apache Distribusjon / php-apache 121% / 50% 1 10 4 1t
 
$ kubectl få pods
NAVN KLAR STATUS RESTARTER ALDER
busybox 1/1 Løping 0 6m
php-apache-8699449574-7qwxd 1/1 Kjører 0 28s
php-apache-8699449574-c9v54 1/1 Kjører 0 10h
php-apache-8699449574-h9s5f 1/1 Kjører 0 28s
php-apache-8699449574-sg4hz 1/1 Kjører 0 28s

Avslutt mens sløyfen, og antall belter vil dø ned til en i løpet av få minutter.

Konklusjon

Så det er en enkel demonstrasjon av Horizontal Pod Autoscaler. Husk å ha en funksjonell beregningsserver for klyngen din, og hold replikatallet på 1 mens du oppretter en distribusjon. Den horisontale pod-autoskaleren tar seg av resten.

Mus Kartlegg museknappene på en annen måte for annen programvare med X-Mouse Button Control
Kartlegg museknappene på en annen måte for annen programvare med X-Mouse Button Control
Kanskje du trenger et verktøy som kan gjøre at musens kontroll endres med hvert program du bruker. Hvis dette er tilfelle, kan du prøve et program som...
Mus Microsoft Sculpt Touch Wireless Mouse Review
Microsoft Sculpt Touch Wireless Mouse Review
Jeg har nylig lest om Microsoft Sculpt Touch trådløs mus og bestemte meg for å kjøpe den. Etter å ha brukt den en stund bestemte jeg meg for å dele mi...
Mus AppyMouse Pekeplate og musepeker på skjermen for Windows-nettbrett
AppyMouse Pekeplate og musepeker på skjermen for Windows-nettbrett
Nettbrettbrukere savner ofte musepekeren, spesielt når de bruker vanlige bærbare datamaskiner. Berøringsskjermen Smarttelefoner og nettbrett har mange...