Ja kopiju skaits ir iestatīts uz 100 un pieprasījums ir pārāk mazs, pat tad 100 pākstis tiks izveidotas un darbosies. Tā rezultātā tiek izšķiesti CPU un atmiņas resursi. Jā, tas nodrošina uzticamību tādā nozīmē, ka, ja mezgls avarē un tajā esošās pākstis mirst, kontrolieris Replica Set mēģina atgriezt pākšu skaitu līdz 100, nārstojot pākstis citos mezglos. Lietojumprogramma paliek tiešsaistē.
Abstraktākā nozīmē Replikas komplekts mēģinātu sasniegt a vēlamais stāvoklis kopas un apskatītu pašreizējais stāvoklis un izdomājiet, kā tas var sasniegt vēlamo stāvokli.
Tomēr mēs vēlētos kaut ko mazliet jutīgāku pret reālās pasaules pieprasījumu. Enter Horizontālais Pod Autoscaler. Horizontal Pod Autoscaler uzdevums ir palielināt lietojumprogrammu, kad tā ir nepieciešama, un pēc tam atkal samazināt, kad darba slodze samazinās.
Kāpēc izmantot Horizontal Pod Autoscaler?
Kā norāda nosaukums, šis komponents automātiski mērogos jūsu lietojumprogrammu. Mākonī tas patiešām var palīdzēt samazināt skaitļošanas un atmiņas resursus, par kuriem jums tiks izrakstīti rēķini. Tā kā Autoscaler ir jutīgs pret resursu izmantošanu, tad, redzot, ka daudzi pākstis vienkārši sēž dīkstāvē, tas samazina lietojumprogrammu un, kad pieprasījums pēc šīm pākstīm palielinās, tas palielina lietojumprogrammu, izveidojot jaunas pākstis un slodze tiek sadalīta tie.
Tas var ietaupīt gan dārgo laiku, gan aprēķināt resursus. Rakstot izvietošanu, jums nebūs jāuztraucas par to, kādam jābūt jūsu kopiju skaitam, autoskaleris to pārvaldīs jums.
Sākotnējā iestatīšana
Pirmkārt un galvenokārt, jums ir jābūt darbojošai Kubernetes kopai. Izmantojiet Katacoda rotaļu laukumu, kas ir ideāli piemērots eksperimentiem un Kubernetes iepazīšanai. Nākamā lieta, kas jums būtu nepieciešama, ir metriskais serveris.
Šis jūsu Kubernetes sistēmas papildinājums (kube-sistēmas nosaukumvieta) apkopotu metriku, piemēram, CPU un atmiņas lietojumu, no divām dažādām perspektīvām:
- Resurss, ko izmanto katrs pods
- Katrā mezglā patērētais resurss
Metrika no abām perspektīvām ir izšķiroša, lai palīdzētu Autoscaler izlemt, kādam jābūt tā nākamajam solim. Lai pievienotu metrisko serveri savam Kubernetes kopai, izpildiet šo rokasgrāmatu. Tagad mēs esam gatavi redzēt Horizontal Pod Autoscaler darbībā.
Izmantojot Autoscaler
Lai redzētu, kā darbojas Autoscaler, mums ir nepieciešama testa lietojumprogramma. Izveidosim vienkāršu php-apache serveri un pakļausim to kā pakalpojumu.
$ kubectl palaist php-apache --image = k8s.gcr.io / hpa-example - pieprasījumi = cpu = 200m - eksponēt--osta = 80
Šeit izmantotais attēls ir viens no Kubernetes projekta sniegtajiem attēlu paraugiem. Tas veic dažus intensīvus procesora uzdevumus un, to darot, padara procesu daudz redzamāku.
Lai automātiski mērogotu šo izvietojumu, mums jāinformē autoskaleris, kāds ir minimālais un maksimālais pākšu skaits, ko mēs atļausim, un CPU procentuālais daudzums, ko viņi drīkst izmantot. Varat apsvērt daudz vairāk faktoru, piemēram, atmiņu, atmiņu un tīklu.
Automātiska mēroga izvietošana $ kubectl / php-apache --cpu-percent = 50 --min = 1 --max = 10Tā kā pašreizējā stāvoklī neviens šo pakalpojumu neizmanto, tam visvairāk patiks palikt pie minimālās vērtības. Noklusējuma nosaukumvietā var pārbaudīt visas automātiski mērogotās izvietošanas stāvokli, palaižot:
$ kubectl get hpaNOSAUKUMA ATSAUCES MĒRĶI MINPODS MAXPODS REPLICAS AGE
php-apache izvietošana / php-apache 0% / 50% 1 10 1 2m
Slodzes ģenerēšana un automātiskā mēroga funkcijas pārbaude
Var redzēt, ka kopiju skaits joprojām ir tikai viens, un CPU slodze ir nenozīmīgi maza. Mēs varam radīt papildu slodzi un redzēt, kā autoskalers reaģē uz to. Pakalpojums, kas atmasko mūsu php-apache pākstis, nav pakļauts ārpasaulei, tāpēc mēs izveidosim pagaidu pogu un šajā pogā atvērsim interaktīvu čaulas sesiju.
Tas ļaus mums sazināties ar visiem klasterī pieejamajiem pakalpojumiem, tostarp ar php-apache pakalpojumu.
$ kubectl run -i - atty busybox --image = busybox --restart = Never - sh/ #
Jūs pamanīsit, ka uzvedne mainīsies, norādot, ka mēs atrodamies šajā konteinerā. Tagad mēģināsim nedaudz noslogot mūsu pakalpojumu, atkārtoti pieprasot. Jaunajā uzvednē palaidīsim šādu darbību, kamēr cikls:
/ # lai arī patiess; do wget -q -O- http: // php-apache.noklusējums.svc.kopa.vietējais; izdarītsAtveriet jaunu termināli, jo mēs vēl nevaram ļaut šai cilpai izbeigties. Pārbaudot autoskaleru, jūs redzēsiet CPU izmantošanu, un, uzskaitot pākstis, redzēsit, ka tagad ir vairāki php-apache servera gadījumi,
$ kubectl get hpaNOSAUKUMA ATSAUCES MĒRĶI MINPODS MAXPODS REPLICAS AGE
php-apache izvietošana / php-apache 121% / 50% 1 10 4 1h
$ kubectl iegūst pākstis
VĀRDS GATAVS STATUSS ATKĀRTOTI VECUMS
autobusu kaste 1/1 Skriešana 0 6m
php-apache-8699449574-7qwxd 1/1 Darbojas 0 28s
php-apache-8699449574-c9v54 1/1 Darbojas 0 10h
php-apache-8699449574-h9s5f 1/1 Darbojas 0 28s
php-apache-8699449574-sg4hz 1/1 Darbojas 0 28s
Pārtrauciet cilpu while, un pākšu skaits dažās minūtēs samazināsies līdz vienam.
Secinājums
Tātad tas ir vienkāršs Horizontal Pod Autoscaler demonstrējums. Atcerieties, ka savam klasterim ir jābūt funkcionālam metrikas serverim, un, veidojot izvietošanu, saglabājiet kopiju skaitu 1. Horizontālais pākšu autoskalators rūpēsies par pārējo.