Доступны узлы AWS EKS 0/1. 1 недостаточное количество стручков

Мы пытаемся развернуть службу API ядра сети dot на Amazon EKS с использованием ECR. Развертывание прошло успешно, но модули находятся в состоянии ожидания. Ниже приведены подробные шаги, которые мы выполнили.

Последовали шаги. 1. Создал образ докера 2. Запихнул образ в ECR. Изображение теперь также отображается в консоли AWS. // Изображение выглядит хорошо, мне удалось запустить его локально с помощью докера.

  1. Создан кластер t2-micro, как показано ниже, eksctl create cluster --name net-core-prod --version 1.14 --region us-west-2 --nodegroup-name standard-worker --node-type t2.micro --nodes 1 --nodes-min 1 --nodes-max 1 –managed // Кластер и группы узлов созданы успешно. // Также были созданы роли IAM

  2. Развернул контроллер репликации с использованием прикрепленного json / yaml // net-app.json  введите описание изображения здесь

  3. Развернул службу с помощью прикрепленного json / yaml //net-app-scv.json  введите описание изображения здесь
  4. Команда get all вернула это. //get_all.png  get all POD всегда остается в статусе PENDING.

  5. Pod description дал следующий результат //describe_pod.png  description pod

  6. Мы также попытались добавить политику к роли IAM кластера, чтобы включить прикрепленные разрешения ECR. //ECR_policy.json

Ключевые моменты:
1. Мы используем кластер экземпляров t2-micro, поскольку это бесплатная учетная запись AWS.
2. Мы создали кластер Linux и попытались запустить приложение ядра dotnet. // это нормально работало на нашем локальном компьютере
3. В кластере был только 1 узел // - узлы 1 --nodes-min 1 --nodes-max 1

Может кто-нибудь посоветовать нам, как это правильно настроить.


person snehgin    schedule 22.11.2019    source источник
comment
Вывод kubectl describe pod ‹pod-name› на снимке экрана не завершен. поделиться полным выводом   -  person P Ekambaram    schedule 22.11.2019
comment
Выполните kubectl get nodes -o yaml | grep pods, чтобы увидеть текущее максимальное количество модулей на узел   -  person pcampana    schedule 22.11.2019


Ответы (4)


В Amazon Elastic Kubernetes Service (EKS) максимальное количество модулей на узел зависит от типа узла и составляет от 4 до 737.

Если вы достигнете максимального предела, вы увидите что-то вроде:

❯ kubectl get node -o yaml | grep pods
      pods: "17" => this is allocatable pods that can be allocated in node
      pods: "17" => this is how many running pods you have created

Если у вас есть только один номер, он должен быть распределенным. Другой способ подсчитать все запущенные модули - выполнить следующую команду:

kubectl get pods --all-namespaces | grep Running | wc -l

Вот список максимального количества модулей для каждого типа узла: https://github.com/awslabs/amazon-eks-ami/blob/master/files/eni-max-pods.txt

В Google Kubernetes Engine (GKE) ограничение составляет 110 модулей на узел. проверьте следующий URL:

https://github.com/kubernetes/community/blob/master/sig-scalability/configs-and-limits/thresholds.md

В службе Azure Kubernetes (AKS) ограничение по умолчанию составляет 30 модулей на узел, но его можно увеличить до 250. Максимальное количество модулей на узел по умолчанию зависит от сети kubenet и Azure CNI, а также от метода развертывания кластера. проверьте следующий URL-адрес для получения дополнительной информации:

https://docs.microsoft.com/en-us/azure/aks/configure-azure-cni#maximum-pods-per-node.

person Muhammad Soliman    schedule 07.03.2020
comment
Это фантастика. Самый полезный пост о Kubernetes, который я когда-либо встречал. Спасибо! - person A. Kendall; 06.09.2020
comment
❯ kubectl get node -o yaml | grep pods pods: "17" => this is allocatable pods that can be allocated in node pods: "17" => this is how many running pods you have created это неверно. Первый - Емкость, второй - Распределяемый. Короче говоря, они всегда такие же. - person Shinebayar G; 09.12.2020
comment
Большое вам спасибо за это, я совершенно не подозревал, что он существует, и этот ответ сэкономил мне массу времени! - person E-Kami; 18.04.2021

Проблема в том, что вы используете t2.micro. Требуется как минимум t2.small. Планировщик не может запланировать модуль на узле, потому что на экземпляре t2.micro недостаточно ресурсов. Большая часть емкости уже занята системными ресурсами. Используйте как минимум t2.small.

person Rajesh Gupta    schedule 22.11.2019
comment
Спасибо, Раджеш. Даже у меня была такая же мысль, но я не мог найти никакой документации относительно минимальных требований. Есть ли у нас какие-либо справочные ссылки, которые могут нам помочь? - person snehgin; 22.11.2019
comment
Информация о том, сколько модулей можно запланировать, доступна в репозиторий экс-ами на гитхабе. Вы можете посмотреть ограничения для любого типа машины. - person Matt; 22.11.2019
comment
Я использовал t3.micro, и этого было недостаточно, поэтому я добавил еще одну группу узлов размером t3.small, которая устранила проблему. - person Tara Prasad Gurung; 04.03.2020

Пуск не удалось запланировать.

Проблема могла быть в конфигурации узла.

поделитесь выводом из приведенных ниже команд, чтобы определить основную причину

1.  kubectl describe node <node-name>
2.  kubectl describe pod <pod-name>
3.  kubectl get ev

Существует ограничение на количество модулей, которые вы можете запускать на каждом узле (независимо от ресурсов), вы достигаете этого лимита. Вы можете найти этот предел в выводе kubectl get node -o yaml

Из выходных данных узла видно, что вы достигли предела количества модулей на узел. Проверьте выделенную емкость для модулей. Оба показывают, что в счетчике 4.

Решение: вам нужно добавить еще один узел в кластер, чтобы иметь возможность развертывать дополнительную рабочую нагрузку.

person P Ekambaram    schedule 22.11.2019

Обновление: я попытался увеличить количество узлов до 6, и теперь он работает.

4 модуля kube-system уже были запланированы, поэтому попробуйте увеличить его до 6.

Я не очень хорош в Кубе, это всего лишь результат проб и ошибок.

Будет действительно полезно, если опытный сможет пролить свет на то, как это работает.

person snehgin    schedule 04.12.2019