Занимаюсь настройкой нового кластера 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
См. Таблицу здесь 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"}'