Če je število replik nastavljeno na 100 in je povpraševanje premalo, tudi takrat bo 100 sklopov pripravljeno in deluje. Posledica tega je izguba CPU in pomnilniških virov. Da, ponuja zanesljivost v smislu, da če vozlišče zruši in stroki znotraj njega odmrejo, bo krmilnik Replica Set poskusil vrniti število strokov nazaj na 100 z drstitvijo strokov v drugih vozliščih. Aplikacija ostane na spletu.
V bolj abstraktnem smislu bi Replica Set poskušal doseči a želeno stanje grozda in bi pogledal trenutno stanje in ugotovite, kako lahko doseže želeno stanje.
Vendar bi radi nekaj bolj občutljivega na resnično povpraševanje. Enter Horizontalni samodejni skalirnik. Naloga Horizontal Pod Autoscaler je, da aplikacijo povečate, ko jo potrebujete, in jo nato zmanjšate, ko delovna obremenitev pade.
Zakaj uporabljati Horizontal Pod Autoscaler?
Kot že ime pove, bi ta komponenta samodejno prilagodila vašo aplikacijo. V oblaku vam lahko to resnično pomaga zmanjšati računske in pomnilniške vire, ki vam bodo zaračunani. Ker je Autoscaler občutljiv na izrabo virov, ko vidi, da veliko strokov sedi brez dela, program zmanjša, ko pa se povpraševanje po teh strokih poveča, ga poveča tako, da ustvari nove stroke in se tovor porazdeli na tiste.
Prihranite lahko tako dragocen čas kot računske vire. Ko pišete razmestitev, vam ne bo treba skrbeti, kakšno naj bo število kopij za vaše stroje, samodejni skaler bi to uredil namesto vas.
Začetna nastavitev
Prva in najpomembnejša zahteva bi bila, da imate delujočo gručo Kubernetes. Uporabite igrišče Katacoda, ki je kot nalašč za eksperimentiranje in učenje o Kubernetesu. Naslednja stvar, ki bi jo potrebovali, je metrični strežnik.
Ta dodatek k vašemu sistemu Kubernetes (imenski prostor kube-sistema) bi zbral meritve, kot sta poraba procesorja in pomnilnika z dveh različnih vidikov:
- Vir, ki ga uporablja vsak pod
- Viri, porabljeni na vsakem vozlišču
Meritve z obeh vidikov so ključnega pomena za pomoč Autoscalerju pri odločitvi, kakšen bo naslednji korak. Če želite v metlico Kubernetes dodati metrični strežnik, sledite tem navodilom. Zdaj smo pripravljeni videti Horizontal Pod Autoscaler v akciji.
Uporaba samodejnega skala
Če želimo videti samodejni program za skaliranje, potrebujemo testno aplikacijo. Ustvarimo preprost strežnik php-apache in ga predstavimo kot storitev.
$ kubectl zažene php-apache --image = k8s.gcr.io / hpa-primer --requests = cpu = 200m --expose--vrata = 80
Slika, uporabljena tukaj, je ena izmed vzorčnih slik, ki jih ponuja projekt Kubernetes. Izvaja nekaj CPU intenzivnih nalog in s tem naredi postopek bolj očiten.
Če želite samodejno prilagoditi obseg te razmestitve, moramo samodejnemu skalatorju obvestiti, kakšno je najmanjše in največje število pods, ki jih bomo dovolili, in odstotek CPU, ki ga lahko uporabljajo. Obstaja veliko več dejavnikov, ki jih lahko upoštevate, kot so pomnilnik, pomnilnik in omrežje.
$ kubectl samodejno uvajanje / php-apache --cpu -% = 50 --min = 1 --max = 10Ker trenutno nihče ne uporablja te storitve, bo najbolj všeč, da ostane na najnižji vrednosti. Stanje vse samodejno razširjene razmestitve v privzetem imenskem prostoru lahko preverite tako, da zaženete:
$ kubectl dobite hpaIME REFERENČNI CILJI MINPODS MAXPODS REPLIKE STAROST
uvajanje php-apache / php-apache 0% / 50% 1 10 1 2m
Ustvarjanje obremenitve in preizkušanje funkcije samodejnega merjenja
Opazite, da je število kopij še vedno samo eno, obremenitev procesorja pa neznatno majhna. Ustvarimo lahko dodatno obremenitev in preverimo, kako se samodejni merilnik hitrosti odziva nanjo. Storitev, ki razkriva naše pods php-apache, ni izpostavljena zunanjemu svetu, zato bomo ustvarili začasni pod in v njem odprli interaktivno lupinsko sejo.
To nam bo omogočilo komunikacijo z vsemi storitvami, ki so na voljo v gruči, vključno s storitvijo php-apache.
$ kubectl run -i --tty busybox --image = busybox --restart = Nikoli - sh/ #
Opazili boste, da se bo poziv spremenil, kar kaže, da smo znotraj tega vsebnika. Poskusimo zdaj z večkratnimi zahtevami nekoliko obremeniti našo storitev. V novem pozivu zaženimo naslednjo zanko while:
/ # medtem ko je res; naredite wget -q -O- http: // php-apache.privzeto.svc.grozd.lokalni; KončanoOdprite nov terminal, saj te zanke še ne moremo dokončati. Po pregledu samodejnega skalerja boste videli izkoriščenost procesorja in ko boste našteli pods, boste videli več primerov strežnika php-apache,
$ kubectl dobite hpaIME REFERENČNI CILJI MINPODS MAXPODS REPLIKE STAROST
uvajanje php-apache / php-apache 121% / 50% 1 10 4 1h
$ kubectl dobite stroke
IME PRIPRAVLJENO STANJE ZAVARUJE STAROST
busybox 1/1 Tek 0 6m
php-apache-8699449574-7qwxd 1/1 Tek 0 28s
php-apache-8699449574-c9v54 1/1 Tek 0 10h
php-apache-8699449574-h9s5f 1/1 Tek 0 28s
php-apache-8699449574-sg4hz 1/1 Tek 0 28s
Prekinite zanko while in število strokov se bo v nekaj minutah zmanjšalo na eno.
Zaključek
To je preprost prikaz Horizontal Pod Autoscaler. Ne pozabite imeti funkcionalnega strežnika za meritve za svojo gručo in med ustvarjanjem razmestitve naj bo število replik 1. Za ostalo bo poskrbel vodoravni samodejni skalar.