Рейтинг:1

Установка лимитов ресурсов на kube-apiserver

флаг vn
rvs

Управление ресурсами для модулей и контейнеров описывает, как устанавливать запросы ресурсов и ограничения для «обычных» модулей в Kubernetes. Есть ли поддерживаемый/рекомендуемый способ установить эти ограничения для компонентов уровня управления, таких как kube-apiserver?

Вещи, которые я рассмотрел:

  • Изменение статических манифестов, например. в /etc/kubernetes/manifests/kube-apiserver.yaml. Это может сработать, но оно будет перезаписано кубадм во время следующего обновления.
  • Параметр куб-зарезервировано или же зарезервировано системой флаги. Однако это тоже может работать - они определены только в одном ConfigMap (например, кубелет-config-1.21) и будет перезаписан кубадм во время обновления узла. Те же ограничения будут применяться к узлам плоскости управления и рабочим узлам, а я этого не хочу.

Я могу решить эту проблему с помощью чего-то вроде ansible, но тогда ansible будет «заморачиваться» с kubeadm, и я бы хотел этого избежать.

Какую проблему я пытаюсь решить?

У меня есть небольшая домашняя установка kubernetes. Я хотел бы разрешить запуск обычных модулей на узлах плоскости управления, но я хотел бы иметь возможность резервировать некоторые ресурсы (в основном память) для компонентов плоскости управления. т.е. Я хотел бы иметь возможность установить Запросы на таких вещах, как kube-apiserver, чтобы планировщик знал, что нельзя ставить какие-либо другие модули (они также будут иметь соответствующие Запросы) на свое место.

Mikołaj Głodziak avatar
флаг id
Как именно вы настроили свой кластер? Что означает «У меня есть небольшая установка kubernetes для домашней лаборатории»? Вы использовали Minikube?
rvs avatar
флаг vn
rvs
@MikoÅajGÅodziak нет, «обычный» кластер из 3 узлов, созданный kubeadm.
Рейтинг:1
флаг id

Есть ли поддерживаемый/рекомендуемый способ установить эти ограничения для компонентов уровня управления, таких как kube-apiserver?

Да, вы можете использовать инициализация кубеадм с патчи флаг командной строки. смотреть на эта страница на гитхабе. документация эта вещь может быть также заинтересована. См. также официальную документацию: Настройка плоскости управления с помощью патчей:

Kubeadm позволяет передать каталог с файлами патчей в Инитконфигуратион и ПрисоединитьсяКонфигурация на отдельных узлах. Эти исправления можно использовать в качестве последнего шага настройки перед записью манифестов компонентов плоскости управления на диск.

Вы можете передать этот файл инициализация кубеадм с --config <ВАША КОНФИГУРАЦИЯ YAML>:

Версия API: kubeadm.k8s.io/v1beta3
вид: инитконфигуратион
патчи:
  каталог: /home/user/somedir

Вот пример того, как установить ресурсы на kube-apiserver:

Создавать куб-apiserver.yaml файл в каком-либо каталоге (например, /дом/пользователь/патчи) со следующим содержанием:

спецификация:
  контейнеры:
    - имя: kube-apiserver
      Ресурсы:
        Запросы:
          память: 512Ми
        пределы:
          память: 1024Ми

Затем используйте флаг --patches каждый раз во время обновления узла: используйте узел обновления kubeadm --patches /home/user/patches/ или же применить обновление kubeadm v1.22.4 --patches /home/user/patches/


Другим вариантом будет предоставление дополнительных флагов компонентам уровня управления. Для этого проверьте это руководство: Настройка плоскости управления с помощью флагов в ClusterConfiguration:

Кубадм Конфигурация кластера Объект предоставляет пользователям способ переопределить флаги по умолчанию, переданные компонентам плоскости управления, таким как APIServer, ControllerManager, Scheduler и т. д. Компоненты определяются с использованием следующих структур:

  • API-сервер
  • контроллерменеджер
  • планировщик
  • и т. д.
rvs avatar
флаг vn
rvs
Спасибо, маршрут патчей работает. Я обновил ваш ответ более конкретным примером того, как я это сделал. Теперь я могу использовать ansible для поддержки различных файлов в каталоге patches (при необходимости) и не забывать использовать флаг --patches при выполнении инициализации или обновлений.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.