Pokud je počet replik nastaven na 100 a poptávka je příliš nízká, bude i potom 100 podů funkční. To má za následek plýtvání CPU a paměťovými prostředky. Ano, nabízí spolehlivost v tom smyslu, že pokud dojde k selhání uzlu a pody v něm zemřou, pokusí se řadič sady replik vrátit počet lusků zpět na 100 vytvořením lusků v jiných uzlech. Aplikace zůstává online.
V abstraktnějším smyslu by se sada replik pokusila dosáhnout a požadovaný stav shluku a podíval by se na aktuální stav a zjistit, jak může dosáhnout požadovaného stavu.
Chtěli bychom však něco trochu citlivějšího na skutečnou poptávku. Enter Horizontální podavač aut. Úkolem společnosti Horizontal Pod Autoscaler je škálovat aplikaci, když je potřeba, a poté ji zmenšit zpět, jakmile pracovní zátěž klesne.
Proč používat automatický škálovač Horizontal Pod?
Jak název napovídá, tato součást by vaši aplikaci automaticky škálovala. V cloudu vám to opravdu pomůže snížit výpočetní a paměťové zdroje, které vám budou účtovány. Vzhledem k tomu, že Autoscaler je citlivý na využití prostředků, když zjistí, že spousta lusků právě nečinně sedí, zmenší velikost aplikace a když se zvýší poptávka po těchto luscích, změní velikost aplikace tím, že vytvoří nové lusky a zátěž se distribuuje do ty.
To vám může ušetřit jak drahocenný čas, tak výpočetní zdroje. Při psaní nasazení se nebudete muset starat o to, jaký by měl být počet replik pro vaše lusky, to by za vás spravoval autoscaler.
Počáteční nastavení
Nejdůležitějším požadavkem by bylo, abyste měli spuštěný cluster Kubernetes. Použijte hřiště Katacoda, které je ideální pro experimentování a poznávání Kubernetes. Další věc, kterou byste potřebovali, je metrický server.
Tento doplněk k vašemu systému Kubernetes (jmenný prostor kube-system) by shromažďoval metriky, jako je využití procesoru a paměti, ze dvou různých perspektiv:
- Zdroj používaný každým podem
- Zdroj spotřebovaný v každém uzlu
Metriky z obou hledisek jsou zásadní, protože pomáhají Autoscaleru rozhodnout, jaký by měl být jeho další krok. Chcete-li přidat metrický server do svého klastru Kubernetes, postupujte podle této příručky. Nyní jsme připraveni vidět Horizontal Pod Autoscaler v akci.
Používání automatického škálovače
Abychom viděli, jak Autoscaler funguje, potřebujeme testovací aplikaci. Vytvořme jednoduchý server php-apache a vystavme jej jako službu.
$ kubectl spustit php-apache --image = k8s.gcr.Příklad io / hpa --requests = cpu = 200m --expose--port = 80
Obrázek použitý zde je jedním z ukázkových obrázků poskytnutých projektem Kubernetes. Provádí některé úlohy náročné na CPU a díky tomu je proces mnohem více patrný.
K automatickému škálování tohoto nasazení musíme autoscaler informovat, jaký je minimální a maximální počet lusků, které povolíme, a procento CPU, které mohou používat. Existuje mnoho dalších faktorů, které můžete zvážit, například paměť, úložiště a síť.
$ kubectl nasazení autoscale / php-apache --cpu-percent = 50 --min = 1 --max = 10V současném stavu, protože tuto službu nikdo nespotřebovává, bude nejraději zůstat na minimální hodnotě. Stav všech autoscaled rozmístění ve výchozím jmenném prostoru můžete zkontrolovat spuštěním:
$ kubectl dostat hpaJMÉNO REFERENČNÍ CÍLE MINIPODY MAXPODY VĚK REPLIKY
php-apache Deployment / php-apache 0% / 50% 1 10 1 2 m
Generování zatížení a testování funkce automatického škálování
Můžete vidět, že počet replik je stále pouze jedna a zatížení CPU je nevýznamně nízké. Můžeme vytvořit další zatížení a zjistit, jak na něj automatický škálovač reaguje. Služba, která vystavuje naše php-apache lusky, není vystavena vnějšímu světu, takže vytvoříme dočasný pod a v tomto modulu otevřeme interaktivní relaci shellu.
To nám umožní komunikovat se všemi službami dostupnými v klastru, včetně služby php-apache.
$ kubectl run -i --tty busybox --image = busybox --restart = nikdy - sh/ #
Zjistíte, že se výzva změní, což naznačuje, že jsme uvnitř tohoto kontejneru. Zkusme nyní trochu zatěžovat naši službu opakovaným zadáváním požadavků. V nové výzvě spustíme následující smyčku while:
/ # zatímco true; do wget -q -O- http: // php-apache.výchozí.svc.shluk.místní; HotovoOtevřete nový terminál, protože ještě nemůžeme nechat tuto smyčku ukončit. Po kontrole automatického škálovače uvidíte využití procesoru a při výpisu podů uvidíte, že nyní existuje několik instancí serveru php-apache,
$ kubectl dostat hpaJMÉNO REFERENČNÍ CÍLE MINIPODY MAXPODY VĚK REPLIKY
php-apache nasazení / php-apache 121% / 50% 1 10 4 1 h
$ kubectl získat lusky
STAV JMÉNA PŘIPRAVENO VĚC RESTARTŮ
busybox 1/1 Běh 0 6m
php-apache-8699449574-7qwxd 1/1 běží 0 28 s
php-apache-8699449574-c9v54 1/1 běží 0 10 hodin
php-apache-8699449574-h9s5f 1/1 běží 0 28 s
php-apache-8699449574-sg4hz 1/1 běží 0 28 s
Ukončete smyčku while a počet lusků za několik minut zemře na jeden.
Závěr
Jedná se tedy o jednoduchou ukázku automatického škálovače Horizontal Pod. Nezapomeňte mít pro svůj cluster funkční server metrik a při vytváření nasazení udržujte počet replik na 1. O zbytek se postará horizontální autoscaler.