Cluster Autoscaler көмегімен worker-түйіндерін автоматты масштабтау
Cloud Containers сервисінде Kubernetes кластерлерінің worker-түйіндері топтарын автоматты масштабтау Cluster Autoscaler құралының көмегімен жүзеге асады. Ол кластердің worker-түйіндеріне түсетін жүктемені үнемі қадағалап, жұмыс жүктемелерінің қажеттіліктеріне қарай олардың санын берілген шектерде реттейді. Құралдың негізгі міндеті — кластердегі барлық подтар үшін есептеу ресурстарының жеткілікті болуын қамтамасыз ету және сонымен бірге артық қуат бөлінуі мен олардың бос тұрып қалуын болдырмау. Бұл қолданбалардың жоғары қолжетімділігі мен өнімділігін қамтамасыз етуге, сонымен қатар ресурстарды және оларға кететін шығындарды оңтайландыруға көмектеседі.
Worker-түйіндері топтарындағы Cluster Autoscaler міндеттері:
- жұмыс жүктемесі талап еткен кезде жаңа түйіндер құру;
- жеткіліксіз жүктелген түйіндерді жою.
Cluster Autoscaler Cloud Containers сервисінде жасайтын барлық Kubernetes кластерлерінде алдын ала орнатылған, бірақ әдепкі бойынша қосылмаған. Worker-түйіндерін автоматты масштабтауды әр worker-түйіндері тобы үшін оның баптауларын анықтау кезінде қолмен қосу керек.
Cluster Autoscaler бар түйіндерде подтарды орналастыруға ресурс жетіспеген кезде топтағы worker-түйіндерінің санын арттырады.
Жаңа подты құрған кезде ресурстар — CPU мен RAM сұралады. Подты орналастырған кезде Kubernetes жоспарлаушысы оған resources.limits шектеулеріне емес, resources.requests ресурстық сұрауларына сәйкес келетін түйінді іздейді. Яғни жоспарлаушы осы подты орналастыру үшін түйінде жеткілікті ресурс бар-жоғын талдайды. Мысалы, егер под 100m CPU мен 64 МБ RAM сұраса, жоспарлаушы кемінде 100m CPU және 64 МБ RAM қалған түйінді іздейді. Егер кластердің қолданыстағы түйіндерінің ешқайсысында бұл подты оның сұраулары бойынша орналастыруға ресурс болмаса, Cluster Autoscaler топқа жаңа түйін қосуды іске қосады.
Түйіндерді қосу тек топ баптауларында көрсеткен ең жоғары мәнге дейін ғана мүмкін. Егер автоматты масштабтау қосулы болса, бірақ worker-түйіндері қосылмаса, Автоматты масштабтау кезінде жаңа түйіндер қосылмайды бөліміндегі шешімдерді қолданып көріңіз.
Cluster Autoscaler кластердегі түйіндердің жүктемесін тексереді және жүктеме төмен болып, түйіндер жеткіліксіз жүктелген болса, яғни барлық подтарды азырақ түйін санына орналастыруға болатын жағдайда олардың санын азайтады. Жеткіліксіз жүктелген worker-түйіні жойылуы үшін Cluster Autoscaler:
-
Осы түйіннен подтарды ығыстыру процесін іске қосады.
-
Бұл подтар жеткілікті ресурстары бар басқа түйіндерге ауысқанша күтеді.
-
Белгіленген бос тұру уақыты өткен соң осы түйінді шектеумен (taint) белгілейді, бұл оған жаңа подтар мен жұмыс жүктемесін орналастыруға тыйым салады, және оны жоюды іске қосады.
Түйіннің бос тұру уақытына
--scale-down-unneeded-timeпараметрі жауап береді. Ол автоматты масштабтау кезінде түйінді жоюға дейін оның подтарсыз қанша уақыт қалуы керегін көрсетеді.Бос тұру уақыты қандай да бір себеппен подтар уақытша болмаған жағдайда (мысалы, жүктеменің қысқа мерзімді өршуіне байланысты) түйіннің кездейсоқ жойылуынан қорғайды. Сонымен қатар ол түйін шынымен қажетсіз болған кезде ресурстарды босатуға мүмкіндік береді.
Cloud Containers сервисінде белгіленген бос тұру уақыты — 5 минут. Егер түйін 5 минут бойы бос тұрса (одан барлық подтар ығыстырылса), және осы уақыт ішінде бұл түйінде бірде-бір под пайда болмаса, Cluster Autoscaler оны жоюды іске қосады.
Түйіндерді жою тек топ баптауларында көрсеткен ең төменгі мәнге дейін ғана мүмкін. Егер автоматты масштабтау қосулы болса, бірақ worker-түйіндері жойылмаса, Автоматты масштабтау кезінде жеткіліксіз жүктелген түйіндер жойылмайды бөліміндегі шешімдерді қолданып көріңіз.