Kubernetes

Kubernetes Horisontal Pod Autoscaler

Kubernetes Horisontal Pod Autoscaler
Pods kan oprettes som enkeltstående objekter eller som en del af et skalerbart replika-sæt eller en implementering. Hvert af de sidstnævnte to objekter bruges til ikke kun at implementere en pod, men et væld af dem. Målet her er, at bælgene kan være fungible, hvis man har for meget trafik, to mere kan gyde op og tage den ekstra byrde. En vigtig ting at bemærke her er imidlertid, at både replika-sæt og implementeringsobjekter har et hårdt kodet antal pod-replikaer, som de har til hensigt at køre.

Hvis replikantallet er indstillet til 100, og efterspørgslen er for lille, vil de 100 bælg også være i gang. Dette resulterer i spild af CPU- og hukommelsesressourcer. Ja, det giver pålidelighed, i den forstand at hvis en knude kolliderer og bælg i den dør, ville Replica Set-controlleren forsøge at bringe antallet af bælg tilbage til 100 ved at gyde bælg i andre noder. Ansøgningen forbliver online.

I en mere abstrakt forstand ville replikasættet forsøge at opnå en ønsket tilstand af klyngen og ville se på nuværende tilstand og find ud af, hvordan det kan opnå den ønskede tilstand.

Vi vil dog gerne have noget lidt mere følsomt over for den virkelige verdens efterspørgsel. Gå ind Vandret pod autoscaler. Det er Horisontal Pod Autoscaler's opgave at skalere applikationen op, når der er behov for den, og derefter skalere den ned igen, når arbejdsbelastningen falder.

Hvorfor bruge en Horisontal Pod Autoscaler?

Som navnet antyder, skal denne komponent automatisk skalere din applikation. I skyen kan dette virkelig hjælpe dig med at reducere de beregnings- og hukommelsesressourcer, du bliver faktureret for. Da Autoscaler er følsom over for ressourceudnyttelsen, når den ser, at mange bælg bare sidder inaktiv, skalerer den applikationen ned, og når efterspørgslen på disse bælg øges, skalerer den applikationen op ved at oprette nye bælg og belastningen distribueres til de der.

Det kan spare dig både værdifuld tid og beregningsressourcer. Du behøver ikke bekymre dig om, hvad replikantalet skal være for dine bælg, når du skriver en implementering, autoskaler vil klare det for dig.

Første opsætning

Først og fremmest er kravet, at du har en kørende Kubernetes-klynge. Brug Katacoda Playground, som er perfekt til eksperimenter og læring om Kubernetes. Den næste ting, du har brug for, er en metrisk server.

Denne tilføjelse til dit Kubernetes-system (kube-systemnavneområde) samler metrics såsom CPU og hukommelsesforbrug fra to forskellige perspektiver:

  1. Ressource, der bruges af hver pod
  2. Ressource forbrugt ved hver node

Mål fra både perspektivet er afgørende for at hjælpe Autoscaler med at beslutte, hvad det næste skridt skal være. Følg denne vejledning for at føje metrisk server til din Kubernetes-klynge. Nu er vi klar til at se Horisontal Pod Autoscaler i aktion.

Brug af Autoscaler

For at se Autoscaler fungerer, har vi brug for en testapplikation. Lad os oprette en simpel php-apache-server og udsætte den for en tjeneste.

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

Billedet, der bruges her, er et af de prøvebilleder, der leveres af Kubernetes-projektet. Det udfører nogle CPU-intensive opgaver og gør processen meget mere tydelig ved at gøre det.

For at autoskalere denne implementering er vi nødt til at informere autoskaleren, hvad der er det mindste og maksimale antal pods, som vi tillader, og CPU-procenten, som de har lov til at bruge. Der er mange flere faktorer, som du også kan overveje som hukommelse, opbevaring og netværk.

$ kubectl autoskala implementeringer / php-apache --cpu-procent = 50 --min = 1 --max = 10

I den nuværende tilstand, da ingen bruger denne service, vil det mest lide at forblive på minimumsværdien. Du kan kontrollere tilstanden for al autoskaleret implementering i standardnavneområdet ved at køre:

$ kubectl få hpa
NAVN REFERENCE MÅL MINPODS MAXPODS REPLICAS ALDER
php-apache Implementering / php-apache 0% / 50% 1 10 1 2m

Generering af belastning og test af autoskala-funktionen

Du kan se, at antallet af replikaer stadig kun er en, og CPU-belastningen er ubetydelig lav. Vi kan oprette yderligere belastning og se, hvordan autoskaleren reagerer på den. Tjenesten, der udsætter vores php-apache-bælg, udsættes ikke for omverdenen, så vi opretter en midlertidig pod og åbner en interaktiv shell-session i den pod.

Dette giver os mulighed for at kommunikere med alle de tilgængelige tjenester i klyngen, inklusive php-apache-tjenesten.

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

Du vil bemærke, at meddelelsen ændres, hvilket indikerer, at vi er inde i denne container. Lad os nu prøve at lægge noget på vores service ved gentagne gange at stille anmodninger. Lad os i den nye prompt køre følgende mens loop:

/ # mens det er sandt; gør wget -q -O- http: // php-apache.Standard.svc.klynge.lokal; Færdig

Åbn en ny terminal, da vi ikke kan lade denne loop ende endnu. Efter inspektion af autoskaleren vil du se CPU-udnyttelsen, og når du viser listen over bælgene, vil du se, at der nu er flere forekomster af php-apache-server,

$ kubectl få hpa
NAVN REFERENCE MÅL MINPODS MAXPODS REPLICAS ALDER
php-apache Implementering / php-apache 121% / 50% 1 10 4 1h
 
$ kubectl få bælg
NAVN KLAR STATUS OMSTARTER ALDER
busybox 1/1 Løb 0 6m
php-apache-8699449574-7qwxd 1/1 Kører 0 28s
php-apache-8699449574-c9v54 1/1 Kører 0 10h
php-apache-8699449574-h9s5f 1/1 Kører 0 28s
php-apache-8699449574-sg4hz 1/1 Kører 0 28s

Afslut mens løkken og antallet af bælg vil dø ned til en i løbet af få minutter.

Konklusion

Så det er en simpel demonstration af Horisontal Pod Autoscaler. Husk at have en funktionel metrics-server til din klynge, og hold replikantallet på 1, mens du opretter en implementering. Den vandrette podeautoskaler tager sig af resten.

Nyttige værktøjer til Linux-spillere
Hvis du kan lide at spille spil på Linux, er chancerne for, at du måske har brugt apps og hjælpeprogrammer som Wine, Lutris og OBS Studio for at forbe...
HD Remastered-spil til Linux, der aldrig tidligere havde haft en Linux-udgivelse
Mange spiludviklere og udgivere kommer med HD-remaster af gamle spil for at forlænge franchisens levetid. Venligst fans, der anmoder om kompatibilitet...
Sådan bruges AutoKey til at automatisere Linux-spil
AutoKey er et desktopautomatiseringsværktøj til Linux og X11, programmeret i Python 3, GTK og Qt. Ved hjælp af dets scripting og MACRO-funktionalitet ...