Назад | Перейти на главную страницу

Как проверить максимальную емкость пода узла Kubernetes

Занимаюсь настройкой нового кластера k8s.

Я использую rke с параметром --max-pods: 200

kubelet: # https://rancher.com/docs/rke/latest/en/config-options/services/services-extras/#extra-args
    extra_args: 
    - max-pods: 200  # https://forums.rancher.com/t/solved-setting-max-pods/11866/5

Как проверить, создан ли работающий узел с правильными настройками.

Внутри документации Kubernetes относительно Создание больших кластеров мы можем прочитать, что в версии 1.17 поддерживается:

Kubernetes поддерживает кластеры до 5000 узлов. В частности, мы поддерживаем конфигурации, которые соответствуют все следующих критериев:

  • Не более 5000 узлов
  • Всего не более 150000 капсул
  • Всего контейнеров не более 300000
  • Не более 100 контейнеров на узел

Внутри GKE жесткое ограничение количества модулей на узел составляет 110 из-за доступных адресов.

При максимальном значении по умолчанию 110 модулей на узел, Kubernetes назначает блок / 24 CIDR (256 адресов) каждому из узлов. Имея примерно в два раза больше доступных IP-адресов, чем количество подов, которые могут быть созданы на узле, Kubernetes может уменьшить повторное использование IP-адресов, когда поды добавляются к узлу и удаляются с него.

Это описано в Оптимизация выделения IP-адресов и Квоты и лимиты.

Как или установка максимального количества капсул для Rancher вот решение [Решено] Установка максимального количества капсул.

Также обсуждается Увеличьте максимальное количество пакетов на узел

... использование одного числа (максимальное количество модулей) может ввести пользователей в заблуждение, учитывая огромные различия в спецификациях компьютеров, рабочей нагрузке и среде. Если у нас есть тест узлов, мы можем позволить пользователям профилировать свои узлы и решать, какая конфигурация для них лучше всего. Тест может существовать как тест node e2e или в репозитории contrib.

Я надеюсь, что это дает немного больше информации о пределах.

Я нашел это лучший способ

kubectl get nodes -A
NAME            STATUS   ROLES                      AGE   VERSION
192.168.1.1   Ready    controlplane,etcd,worker   9d    v1.17.2
192.168.1.2   Ready    controlplane,etcd,worker   9d    v1.17.2

kubectl describe nodes 192.168.1.1 | grep -i pods

Capacity:
cpu:                16
ephemeral-storage:  55844040Ki
hugepages-2Mi:      0
memory:             98985412Ki
pods:               110
Allocatable:
cpu:                16
ephemeral-storage:  51465867179
hugepages-2Mi:      0
memory:             98883012Ki
pods:               110
  1. По умолчанию максимальное количество модулей kubelet на узел равно 110.
  2. Лучшая практика Kuberentes - 100 модулей на узел
  3. Openshift устанавливает значение по умолчанию 250 модулей на узел и протестировал 500 модулей на узел.
  4. EKS указал, что он ограничен количеством IP-адресов, которые может использовать модуль. У Azure CNI есть некоторые ограничения. Cidr модуля узла по умолчанию - / 24, что означает меньше 256.

См. Таблицу здесь https://www.stackrox.com/post/2020/02/eks-vs-gke-vs-aks/ и https://learnk8s.io/kubernetes-node-size#:~:text=Most%20managed%20Kubernetes%20services%20even,of%20the%20type%20of%20node.

введите описание изображения здесь

Большинство управляемых сервисов Kubernetes даже накладывают жесткие ограничения на количество подов на узел:

В Amazon Elastic Kubernetes Service (EKS) максимальное количество модулей на узел зависит от типа узла и составляет от 4 до 737. В Google Kubernetes Engine (GKE) ограничение составляет 100 модулей на узел, независимо от типа узла. . В службе Azure Kubernetes (AKS) ограничение по умолчанию составляет 30 модулей на узел, но его можно увеличить до 250.

Следующая команда вернет максимальное значение модулей для <node_name>:

kubectl describe <node_name> -ojsonpath='{.status.capacity.pods}{"\n"}'