Kubernetes

Kubernetes Horizontal Pod Autoscaler

Kubernetes Horizontal Pod Autoscaler
Pods kan skapas som fristående objekt eller som en del av en skalbar replikuppsättning eller en distribution. Var och en av de två sistnämnda objekten används för att inte bara distribuera en pod utan en mängd av dem. Målet här är att bälgen kan vara svampbara om man har för mycket trafik, två till kan leka upp och ta den extra bördan. En viktig sak att notera här är dock att både replikuppsättnings- och distributionsobjekt har ett hårt kodat antal podkopior som de tänker köra.

Om replikantalet är inställt på 100 och efterfrågan är för liten, kommer även 100 pods att vara igång. Detta resulterar i slöseri med CPU- och minnesresurser. Ja, det ger tillförlitlighet, i den meningen att om en nod kraschar och pods inom den dör, skulle Replica Set-kontrollen försöka få tillbaka antalet pods till 100 genom att leka pods i andra noder. Ansökan stannar online.

I en mer abstrakt mening skulle replikuppsättningen försöka uppnå en önskat tillstånd av klustret och skulle titta på nuvarande tillstånd och ta reda på hur den kan uppnå önskat tillstånd.

Vi skulle dock vilja ha något lite mer känsligt för den verkliga efterfrågan. Stiga på Horisontell Pod Autoscaler. Det är Horizontal Pod Autoscalers uppgift att skala upp applikationen när det behövs och sedan skala ner den igen när arbetsbelastningen sjunker.

Varför använda en Horisontell Pod Autoscaler?

Som namnet antyder skulle denna komponent automatiskt skala din applikation. I molnet kan detta verkligen hjälpa dig att minska de beräknings- och minnesresurser du kommer att faktureras för. Eftersom Autoscaler är känslig för resursutnyttjandet, när den ser att många pods bara sitter på tomgång, skalar den ner applikationen och när efterfrågan på dessa pods ökar, skalar den upp applikationen genom att skapa nya pods och belastningen distribueras till de där.

Det kan spara både värdefull tid och beräkningsresurser. Du behöver inte oroa dig för vad replikantalet ska vara för dina pods när du skriver en distribution, autoskalare skulle hantera det för dig.

Första installationen

Först och främst kravet skulle vara att du har ett löpande Kubernetes-kluster. Använd Katacoda Playground som är perfekt för experiment och lär dig mer om Kubernetes. Nästa sak du skulle behöva är en metrisk server.

Det här tillägget till ditt Kubernetes-system (kube-systemnamnutrymme) samlar mätvärden som CPU- och minnesanvändning ur två olika perspektiv:

  1. Resurs som används av varje pod
  2. Resurs förbrukas vid varje nod

Mätvärden ur både perspektivet är avgörande för att hjälpa Autoscaler att avgöra vad nästa steg ska vara. Följ den här guiden om du vill lägga till metrisk server i ditt Kubernetes-kluster. Nu är vi redo att se Horisontell Pod Autoscaler i aktion.

Använda Autoscaler

För att se Autoscaler fungera behöver vi en testapplikation. Låt oss skapa en enkel php-apache-server och exponera den som en tjänst.

$ kubectl kör php-apache --image = k8s.gcr.io / hpa-exempel --requests = cpu = 200m --expose
--port = 80

Bilden som används här är en av de exempelbilder som tillhandahålls av Kubernetes-projektet. Det utför vissa CPU-intensiva uppgifter och gör processen mycket tydligare genom att göra det.

För att autoskala denna distribution måste vi informera autoskalaren vad som är det lägsta och maximala antalet pods som vi tillåter och CPU-procent som de får använda. Det finns många fler faktorer som du kan tänka på som minne, lagring och nätverk också.

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

I det nuvarande läget, eftersom ingen konsumerar den här tjänsten, kommer de mest att stanna vid minimivärdet. Du kan kontrollera tillståndet för all autoskalad distribution i standardnamnområdet genom att köra:

$ kubectl få hpa
NAMN REFERENS MÅL MINPODER MAXPODS REPLICAS AGE
php-apache Deployment / php-apache 0% / 50% 1 10 1 2m

Generera belastning och testa autoskalningsfunktionen

Du kan se att antalet repliker fortfarande bara är en och CPU-belastningen är obetydligt låg. Vi kan skapa ytterligare belastning och se hur autoskalaren reagerar på den. Tjänsten som exponerar våra php-apache-pods exponeras inte för omvärlden, så vi skapar en tillfällig pod och öppnar en interaktiv shell-session i den pod.

Detta gör att vi kan kommunicera med alla tillgängliga tjänster i klustret, inklusive tjänsten php-apache.

$ kubectl kör -i --tty upptagen låda - bild = upptagen låda - omstart = Aldrig - sh
/ #

Du kommer att märka att meddelandet kommer att ändras vilket indikerar att vi befinner oss i denna behållare. Låt oss nu försöka lägga lite belastning på vår tjänst genom att göra upprepade gånger. I den nya prompten, låt oss köra följande medan loop:

/ # medan det är sant; gör wget -q -O- http: // php-apache.standard.svc.klunga.lokal; Gjort

Öppna en ny terminal, eftersom vi inte kan låta den här slingan avslutas ännu. Vid inspektion av autoskalern ser du CPU-användningen och när du listar podsna ser du att det nu finns flera instanser av php-apache-server,

$ kubectl få hpa
NAMN HÄNVISNING MÅL MINPODER MAXPODS REPLICAS AGE
php-apache Deployment / php-apache 121% / 50% 1 10 4 1h
 
$ kubectl få skida
NAMN KLAR STATUS ÅTERSTART Åldern
upptagen låda 1/1 Löpning 0 6m
php-apache-8699449574-7qwxd 1/1 Running 0 28s
php-apache-8699449574-c9v54 1/1 Kör 0 10h
php-apache-8699449574-h9s5f 1/1 Running 0 28s
php-apache-8699449574-sg4hz 1/1 Running 0 28s

Avsluta while-slingan och antalet pods kommer att minska till en på några minuter.

Slutsats

Så det är en enkel demonstration av Horizontal Pod Autoscaler. Kom ihåg att ha en funktionell mätningsserver för ditt kluster och håll replikantalet medan du skapar en distribution. Den horisontella pod-autoskalern tar hand om resten.

Mus Microsoft Sculpt Touch Wireless Mouse Review
Microsoft Sculpt Touch Wireless Mouse Review
Jag har nyligen läst om Microsoft Sculpt Touch trådlös mus och bestämde mig för att köpa den. Efter att ha använt den ett tag bestämde jag mig för att...
Mus AppyMouse styrplatta och muspekare för Windows-surfplattor
AppyMouse styrplatta och muspekare för Windows-surfplattor
Surfplattanvändare saknar ofta muspekaren, särskilt när de brukar använda bärbara datorer. Pekskärmen Smartphones och surfplattor har många fördelar o...
Mus Mellan musknappen fungerar inte i Windows 10
Mellan musknappen fungerar inte i Windows 10
De mittknappen hjälper dig att bläddra igenom långa webbsidor och skärmar med mycket data. Om det slutar, kommer du sluta använda tangentbordet för at...