Как да

Активирайте клъстерния автоскалер в клъстер EKS Kubernetes

Активирайте клъстерния автоскалер в клъстер EKS Kubernetes

Клъстерният автоскалер е компонент на Kubernetes, който автоматично регулира размера на клъстер на Kubernetes, така че всички шушулки да имат място за изпълнение и да няма ненужни възли. Работи с големи доставчици на облак - GCP, AWS и Azure. В този кратък урок ще разгледаме как можете да инсталирате и конфигурирате Cluster Autoscaler във вашия клъстер Amazon EKS. Автоматичният скенер на клъстера автоматично ще модифицира групите ви възли, така че те да се мащабират, когато имате нужда от повече ресурси и да се мащабират, когато имате недостатъчно използвани ресурси.

Трябва да имате работещ EKS клъстер, преди да можете да използвате това ръководство. Нашето ръководство по-долу трябва да ви помогне да започнете.

Лесно настройване на клъстер Kubernetes на AWS с EKS

Ако разглеждате функцията за автоматично мащабиране на Pods, вижте ръководството по-долу.

Използване на Horizontal Pod Autoscaler на клъстер Kubernetes EKS

Активирайте клъстерния автоскалер в клъстер EKS Kubernetes

Клъстерният автоскалер изисква някои допълнителни правила за IAM и маркиране на ресурси, преди да може да управлява автоматично мащабиране във вашия клъстер.

Стъпка 1: Създайте EKS допълнителна IAM политика

Автоматичният клъстер на клъстера изисква следните разрешения на IAM, за да извършва обаждания до API на AWS от ваше име.

Създайте json файл на IAM policy:

cat> aws-s3-eks-iam-policy.json<

Приложете политиката:

aws iam create-policy --policy-name EKS-Node-group-IAM-policy --policy-document file: // aws-s3-eks-iam-policy.json

Това е изходът ми за създаване на политики:

"Policy": "PolicyName": "EKS-Node-group-IAM-policy", "PolicyId": "ANPATWFKCYAHACUQCHO3D", "Arn": "arn: aws: iam :: 253750766592: policy / EKS-Node- group-IAM-policy "," Path ":" / "," DefaultVersionId ":" v1 "," AttachCount ": 0," PermissionsBoundaryUsageCount ": 0," IsAttachable ": true," CreateDate ":" 2020-09- 04T12: 26: 20 + 00: 00 "," UpdateDate ":" 2020-09-04T12: 26: 20 + 00: 00 "

Стъпка 2: Прикачете политика към групата EKS Node

Ако сте използвали екскл команди, с които да създадете групите си възли -asg-достъп опция необходимите разрешения се предоставят автоматично и се прикачват към вашите IAM роли на възел.

Влезте в AWS Console и отидете EC2> Екземпляр EKS> Описание> Роля на IAM

Кликнете върху връзката IAM role, за да добавите разрешения под Прикачете политики

Прикачете политиката, която създадохме по-рано.

Потвърдете настройките.

Направете същото на EKS> Име на клъстера> Подробности

Обърнете внимание на IAM ARN, използван от клъстера, след което отидете на IAM> Роли и го потърсете.

Прикрепете създадената от нас политика към ролята.

Потвърдете, че политиката е в списъка на приложените правила.

Стъпка 3: Добавяне на маркери за групи на възли

Автоматичният скалер на клъстера изисква следните маркери на вашите групи за автоматично мащабиране на възела, за да могат те да бъдат автоматично открити.

КлючСтойност
k8s.io / клъстер-автоскалер /притежавани
k8s.io / cluster-autoscaler / enabledвярно

Отидете до EKS> Клъстери> Име на клъстер> Изчислете

Изберете Node Group и щракнете редактиране

Добавете етикетите отдолу и запазете промените, когато сте готови.

Стъпка 4: Разположете клъстерния автоскалер в EKS

Влезте в машината, откъдето изпълнявате командата kubectl за разполагане на автомащабиране на клъстер.

kubectl приложи -f https: // raw.githubuserсъдържание.com / kubernetes / autoscaler / master / cluster-autoscaler / cloudprovider / aws / examples / cluster-autoscaler-autodiscover.ямъл

Можете също така да изтеглите ямъл файл преди кандидатстване.

wget https: // raw.githubuserсъдържание.com / kubernetes / autoscaler / master / cluster-autoscaler / cloudprovider / aws / examples / cluster-autoscaler-autodiscover.yaml kubectl прилага -f ./ cluster-autoscaler-autodiscover.ямъл

Изпълнете следната команда, за да добавите клъстер-автоскалер.кубернети.io / безопасно за изселване анотация към разполагането:

kubectl -n kube-system анотиране на разполагане.apps / cluster-autoscaler клъстер-autoscaler.кубернети.io / safe-to-evict = "false"

Редактирайте внедряването на клъстер Autoscaler:

kubectl редактиране разполагане клъстер-autoscaler -n kube-система

За да зададете името на вашия клъстер и да добавите следните опции

--balance-similar-node-groups --skip-nodes-with-system-pods = false

Вижте екранната снимка по-долу за моята настройка.

Отворете страницата за издания на Cluster Autoscaler в уеб браузър и намерете най-новата версия на Cluster Autoscaler, която съответства на основната и второстепенната версия на Kubernetes на вашия клъстер. Например, ако версията Kubernetes на вашия клъстер е 1.17 намерете най-новата версия на Cluster Autoscaler, която започва с 1.17. Запишете семантичния номер на версията (1.17.н) за това издание да се използва в следващата стъпка.

Тъй като моят клъстер е v1.17, Ще използвам най-новата версия на изображението на контейнера, налична за 1.17 което е 1.17.3:

kubectl -n kube-system задаване на разгръщане на изображение.apps / cluster-autoscaler cluster-autoscaler = eu.gcr.io / k8s-artefacts-prod / autoscaling / cluster-autoscaler: v1.17.3

Проверете дали Cluster Autoscaler Pod работи:

$ kubectl вземе под -n kube-system -w ИМЕ ГОТОВ СТАТУС ВЪЗСТАНОВЯВА ВЪЗРАСТ aws-node-glfrs 1/1 Изпълнение 0 23d aws-node-sgh8p 1/1 Изпълнение 0 23d cluster-autoscaler-6f56b86d9b-p9gc7 1/1 Изпълнение 5 21m # Работи coredns-6987776bbd-2mgxp 1/1 Работи 0 23d coredns-6987776bbd-vdn8j 1/1 Работи 0 23d efs-csi-node-p57gw 3/3 Работи 0 18d efs-csi-node-z7gh9 3/3 Изпълнение 0 18d kube-proxy-5glzs 1/1 Изпълнение 0 23d kube-proxy-hgqm5 1/1 Изпълнение 0 23d metrics-server-7cb45bbfd5-kbrt7 1/1 Изпълнение 0 23d

Можете да наблюдавате потока от дневници.

kubectl -n kube-системни дневници -f разполагане.приложения / клъстер-автоскалер

Изход:

I0904 14:28:50.937242 1 мащаб_надолу.go: 431] Изчисляване на мащаба: игнориране на 1 невъзстановими възли през последните 5m0s I0904 14:28:50.937257 1 мащаб_надолу.go: 462] Възел ip-192-168-138-244.eu-west-1.изчисли.вътрешна - използване на паметта 0.702430 I0904 14:28:50.937268 1 мащаб_надолу.go: 466] Възел ip-192-168-138-244.eu-west-1.изчисли.вътрешен не е подходящ за премахване - използването на паметта е твърде голямо (0.702430) I0904 14:28:50.937333 1 static_autoscaler.go: 439] Съкращаване на състоянието: unneededOnly = false lastScaleUpTime = 2020-09-04 13:57:03.11117817 +0000 UTC m = + 15.907067864 lastScaleDownDeleteTime = 2020-09-04 13:57:03.111178246 +0000 UTC m = + 15.907067938 lastScaleDownFailTime = 2020-09-04 13:57:03.111178318 +0000 UTC m = + 15.907068011 scaleDownForbidden = false isDeleteInProgress = false scaleDownInCooldown = false I0904 14:28:50.937358 1 static_autoscaler.go: 452] Начална скала надолу I0904 14:28:50.937391 1 мащаб_надолу.go: 776] Няма кандидати за намаляване

Стъпка 5: Тестване на EKS Cluster Autoscaler

След като инсталацията приключи. Нека го поставим на тест.

Имам два възела в клъстера. Максималният брой, зададен в Node Group е 3.

$ $ kubectl вземете възли ИМЕ СТАТУТ РОЛИ ВЪЗРАСТ ВЕРСИЯ ip-192-168-138-244.eu-west-1.изчисли.вътрешен Готов  23d v1.17.9-eks-4c6976 ip-192-168-176-247.eu-west-1.изчисли.вътрешен Готов  23d v1.17.9-eks-4c6976

Ще разположим огромен брой Pods, за да видим дали ще се мащабира автоматично до максимален брой възли, зададени в Node group.

vim nginx-пример-автомащаб.yml

Добавяне:

apiVersion: apps / v1 kind: Метаданни за внедряване: име: nginx-етикети за разполагане: app: nginx spec: реплики: 100 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: контейнери: - name: nginx image : nginx: 1.14.2 порта: - контейнер Порт: 80

Приложете YAML файла

kubectl приложи -f nginx-пример-автомащаб.yml

Наблюдавайте как се създават нови възли.

$ watch kubectl получи възли

Трябва да видите нов възел, създаден и добавен към клъстера.

$ kubectl получи възли ИМЕ СТАТУТ РОЛИ ВЪЗРАСТ ВЕРСИЯ ip-192-168-119-255.eu-west-1.изчисли.вътрешен Готов  26 м v1.17.9-eks-4c6976 ip-192-168-138-244.eu-west-1.изчисли.вътрешен Готов  23d v1.17.9-eks-4c6976 ip-192-168-176-247.eu-west-1.изчисли.вътрешен Готов  23d v1.17.9-eks-4c6976

Изтрийте разполагането с Pods и клъстерът трябва да се намали.

$ kubectl delete -f nginx-example-autoscale.yml

Това е всичко, от което се нуждаете, за да конфигурирате автоматично скалиране на клъстери в клъстер EKS Kubernetes.

Повече за EKS:

Инсталирайте Istio Service Mesh в клъстер EKS Kubernetes

Инсталирайте CloudWatch Container Insights на EKS | Кубернети

Разполагане на Прометей в клъстера EKS Kubernetes

Kubernetes Курсове за обучение:

ONTIVA MP3 YOUTUBE ПРЕОБРАЗОВАТЕЛ ЗА КАКВО ПРЕДСТАВЛЯВА?
Ontiva е предназначена за конвертиране на видеоклипове в най-висококачествени формати като mp3, mp4. Технологията, използвана за превключване на видео...
Пет най - чести проблема, с които да се справи системният администратор
Системният администратор е специалист по ИТ технологии, ангажиран с конфигурирането и управлението на офис оборудването, както и с осигуряването на ст...
Как да инсталирам Java 8 на Ubuntu 20.18.04.04/16.04
Как мога да инсталирам Java 8 на Ubuntu 20.18.04.04?. Как да инсталирам Java 8 на Ubuntu 16.04?. Лесно е да инсталирате Java 8 на Ubuntu 20.18.04.04 и...