Конфигурация узлов кластера управления

На странице Конфигурация узлов кластера отображается перечень объектов Node Config Item (NCI) кластера управления. По умолчанию отображается Init-NCI, т.е. конфигурация, с которой был развернут кластер.

Создание NCI

Задайте название и приоритет NCI. Приоритет возрастает с увеличением числового значения.

Для применения NCI для всех Master-узлов в селекторе узлов добавьте лейбл с ключом node-role.kubernetes.io/control-plane. Поле “Значение” оставьте незаполненным.

Node Config Item (NCI) включает один или несколько элементов конфигурации. Визуально элементы представлены в виде настраиваемых блоков. Доступны следующие блоки:

  • NTP;
  • Container Runtime;
  • Параметры sysctl;
  • Репозитории пакетов;
  • Пакеты для установки;
  • Файлы и директории;
  • Cертификаты (В интерфейсе содержит данные о доверенных сертификатах Certificates и настройки периода ротации системных сертификатов Kubecerts);
  • Параметры ядра (В интерфейсе содержит данные kernel arguments и kernel modules);
  • Systemd-юниты;
  • Kubelet;
  • Пользователи.

Часть из этих элементов могут быть только в одном экземпляре (например, NTP), а часть – во множественном (например, директории или файлы).

После создания вы сможете отредактировать созданный NCI, добавить или удалить элементы конфигурации, а также изменить значения лейблов и приоритета.

Добавление NCI

Выполните следующие действия:

  1. На вкладке Узлы кластера нажмите кнопку Добавить NCI. Откроется форма настройки конфигурации.
  2. Введите название.
  3. Укажите список лейблов узлов, к которым будет применена конфигурация.

Для узлов ControlPlane пропишите в ключ node-role.kubernetes.io/control-plane. Если необходимо создать NCI для Worker-узлов, назначьте нужным Worker-узлам лейбл, затем добавьте этот лейбл в виде ключа в селекторе узлов конфигурации узлов (NCI). Это можно сделать из кластера управления на страницах worker-узлов в разделе Управление узлами или с помощью командного интерфейса.

Команда для установки лейбла: kubectl label node node-role.kubernetes.io/worker=""

Команда для просмотра лейблов узлов: kubectl get nodes --show-labels

  1. Введите приоритет конфигурации NCI. Значение по умолчанию – 100. Приоритет необходим для разрешения конфликта значений элементов разных NCI.
  2. Выберите те разделы, которые хотите конфигурировать из перечня.
  3. Нажмите Продолжить для перехода к заполнению данных каждого из выбранных разделов.

Если вы закончили изменение данных на странице конфигурируемого раздела, нажмите Продолжить. Это действие предварительно сохранит внесенные вами изменения. Для сохранения всего объекта нажмите Завершить. Эта кнопка будет доступна на шаге последнего раздела среди выбранных для изменения.

Для изменения перечня изменяемых объектов перейдите на шаг “Основные данные” и выделите дополнительные разделы/снимите выделение нажатием кнопки мыши на соответствующие названия разделов.

Конфигурация разделов NCI

NTP

В блоке NTP в поле “Список серверов NTP” необходимо добавить адреса корпоративных серверов: не менее одного сервера NTP. Для этого введите в поле IP-адрес или FDQN сервера. При необходимости измените значение по умолчанию для часового пояса.

Задайте имя сервиса NTP.

Для настройки NTP на узлах кластера при инсталляции (stc) можно указать параметры –timezone и –ntp-servers

Пример:

--timezone=Europe/Moscow --ntp-servers=10.255.245.2,10.255.245.3

Кроме NTP также может быть использован chrony. Тогда в конфигурации вместо ntp.conf используется chrony.conf, при этом формат файла остаётся таким же.

Для продолжения заполнения разделов нажмите “Продолжить”. Если вы закончили заполнение разделов, нажмите “Завершить”.

Container Runtime

Container Runtime должен быть установлен на каждом узле кластера для обеспечения возможности kubelet запускать поды и контейнеры в них. Выполните следующие действия:

  1. Раскройте блок Container Runtime.
  2. Для взаимодействия с контрольными группами kubelet и container runtime включите драйвер cgroup – нажмите кнопку Да. Существует два драйвера cgroup:
  • cgroupfs – если используются драйверы cgroupfs, kubelet и container runtime, которые напрямую взаимодействуют с файловой системой cgroup для настройки cgroups;
  • systemd – если используется драйвер systemd, в котором процесс инициализации создает и использует корневую контрольную группу (cgroup) и действует как менеджер cgroup.
  1. Введите адрес и версию образа контейнера Pause.
  2. Настройте конфигурацию реестров контейнеров:
  • Раскройте блок Конфигурация реестров контейнеров. Реестр контейнеров позволяет хранить образы и управлять ими:
  • добавлять новые (push);
  • извлекать (pull);
  • преобразовывать имя образа в репозитории в его цифровое (digest) представление (resolve).
  • В качестве адреса локального репозитория введите FQDN репозитория, используемого в качестве зеркала для внешнего репозитория.
  • Введите ключ авторизации в локальном репозитории.
  • Введите адрес внешнего репозитория.
  • Нажмите кнопку Добавить.

Для продолжения заполнения разделов нажмите “Продолжить”. Если вы закончили заполнение разделов, нажмите “Завершить”.

Параметры sysctl

Выполните следующие действия:

  1. Раскройте блок Параметры sysctl.
  2. Укажите список значений sysctl в формате ключ-значение.

Для продолжения заполнения разделов нажмите “Продолжить”. Если вы закончили заполнение разделов, нажмите “Завершить”.

Репозитории пакетов

Выполните следующие действия:

  1. Раскройте блок Репозитории пакетов. В этом разделе настраивается подключение сетевых репозиториев, которые работают по протоколам HTTP, HTTPS, FTP.
  2. Выберите целевое состояние репозитория: Present или Absent.
  3. Введите URL-адрес репозитория.
  4. Введите значение публичного ключа репозитория.
  5. Введите URL-адрес ключа репозитория пакетов для получения публичного ключа.
  6. Включите проверку публичного ключа репозитория и использование SSL соединения для подключения к репозиторию – нажмите кнопку Да.
  7. Введите описание репозитория.
  8. Укажите файл, в котором был найден репозиторий.

Для продолжения заполнения разделов нажмите “Продолжить”. Если вы закончили заполнение разделов, нажмите “Завершить”.

Пакеты для установки

Для добавления пакетов для установки выполните следующие действия:

  1. Раскройте блок Пакеты для установки.
  2. Введите название пакета.
  3. Выберите целевое состояние пакета: Present или Absent.
  4. Введите необходимую версию пакета.
  5. Включите запрет обновления пакета или снятие запрета обновления перед установкой.
  6. Введите команды, которые должны будут быть запущены после установки пакета. При нажатии на + появится строка для ввода команды.
  7. Определите, есть ли обязательное условие, что команды, запущенные после установки пакета, должны выполниться успешно.
  8. Введите команды, которые должны будут быть запущены перед установкой пакета. При нажатии на + появится строка для ввода команды.
  9. Определите, есть ли обязательное условие, что команды, запущенные после перед установкой пакета, должны выполниться успешно.

Для продолжения заполнения разделов нажмите “Продолжить”. Если вы закончили заполнение разделов, нажмите “Завершить”.

Файлы и директории

Для добавления файла или директории выполните следующие действия:

  1. Раскройте блок Файлы и директории.
  2. Введите путь к файлу или директории.
  3. Выберите тип: Файл и Директория.
  4. Введите значения прав доступа.
  5. Укажите владельца и группу.
  6. Введите содержимое файла, если выбран тип “Файл”.
  7. Введите необходимую версию пакета.

Для заполнения других разделов нажмите “Продолжить”. Если вы закончили заполнение разделов, нажмите “Завершить”.

Сертификаты

Определите период ротации системных сертификатов Kubernetes. Это должно быть целочисленное значение в пределах от 7 до 365.

Доверенные сертификаты

Для добавления доверенного сертификата выполните следующие действия:

  1. Раскройте блок Доверенные сертификаты.
  2. Введите данные сертификата или укажите URL-адрес для загрузки сертификата. Вы можете указать URL с указанием протокола (доступен https) или без прямого указания протокола. Если протокол не указан, укажите порт. Если протокол и порт не указаны, будет автоматически добавлен порт 443.
  3. Выберите статус сертификата: Подтвержден или Не подтвержден.
  4. Введите имя сертификата.

Для продолжения заполнения разделов нажмите “Продолжить”. Если вы закончили заполнение разделов, нажмите “Завершить”.

Параметры ядра

Аргументы

Для добавления загрузочных параметров ядра выполните следующие действия:

  1. Раскройте блок Аргументы
  2. Выберите наличие или отсутствие параметров ядра в загрузчике.
  3. Введите название и значение параметра ядра.

Модули

  1. Раскройте блок Модули
  2. Задайте имя модуля ядра. Это обязательное поле.
  3. Задайте имя файла с опциями.
  4. Определите, заблокирован ли модуль ядра.
  5. Определите, включена ли автозагрузка модуля ядра.

Пример параметра ядра в загрузчике GRUB_DISABLE_RECOVERY

Для продолжения заполнения разделов нажмите “Продолжить”. Если вы закончили заполнение разделов, нажмите “Завершить”.

Systemd-юниты

Для добавления настройки systemd-юнитов выполните следующие действия:

  1. Раскройте блок Systemd-юниты.
  2. Включите запуск сервиса, в том числе при запуске ОС.
  3. Введите название systemd unit.
  4. Нажмите кнопку Добавить

Для продолжения заполнения разделов нажмите “Продолжить”. Если вы закончили заполнение разделов, нажмите “Завершить”.

Kubelet

В релизе 2.7.0 исключен из интерфейса. Рекомендуется управление с помощью правки манифеста. В интерфейсе будет доступен с релиза 2.7.1 и выше.

В разделе Kubelet доступны следующие поля для заполнения:

  1. Политика управления CPU. Это поле представляет стратегию, применяемую kubelet для управления распределением ресурсов процессора для запущенных на узле контейнеров.

Например:

  • none - должен распределять CPU по принципу совместного использования, CPU может быть использован подами в соответствии с их ограничениями, без каких-либо гарантий привязки CPU.
  • static - предоставлять уникальные CPU-ядра для подов.
  1. Политика управления RAM. Это поле представляет стратегию, применяемую kubelet для управления распределением ресурсов памяти для запущенных на узле контейнеров.

Например:

  • none - общий способ управления памятью.
  • static - гарантирует строгое соответствие адресного пространства памяти.
  1. Параметры управления CPU. Это поле позволяет установить дополнительные параметры для управления процессором, например, использование определенных ядер.

Например:

  • “cpu_hard_limit” : “2” - устанавливает жесткое ограничение на использование CPU в 2.
  • “cpu_soft_limit” : “1” - устанавливает мягкое ограничение на использование CPU в 1. Здесь левая часть вводится в виде ключа, правая в виде значения. Использование кавычек не требуется.
  1. HairpinMode. Это поле определяет, как Kubelet настроит контейнерный мост для обработки hairpin-пакетов, которые идут между двумя подами на одном и том же узле.

Доступные значения:

  • HairpinVeth - hairpin мод канала включается;
  • HairpinNone - hairpin мод канала выключен;
  • PromiscuousBridge - все внутренние трафик устройства помещается в promiscuous mode (Включено по умолчанию).
  1. MaxPods. Это поле задает максимальное количество подов, которые могут быть запущены с этой настройкой Kubelet.

Например:

  • 150 - Максимальное количество подов - 150.
  • 200 - Максимальное количество подов - 200.
  1. nodeStatusUpdateFrequency. Это поле определяет частоту, с которой kubelet вычисляет и обновляет состояние узла.

Например:

  • 10 s - обновление статуса узла каждые 10 секунд;
  • 1 m - обновление статуса узла каждую минуту;
  1. HTTPCheckFrequency. Это поле определяет период между проверками http для получения новых данных.

Например:

  • 30 s - Период между проверками http для получения новых данных - 30 секунд.
  • 1 m - Период между проверками http для получения новых данных - 1 минута.
  1. StaticPodURL. URL для доступа к настройкам статических подов. Например: http://example.com/static_pods.

  2. ProtectKernelDefaults. Если этот параметр включен, Kubelet выдаст ошибку, если флаги ядра не соответствуют ожиданиям.

Доступные значения:

  • да - ошибка Kubelet, если флаги ядра не соответствуют ожиданиям;
  • нет - нет проверки флагов ядра.
  1. ServerTLSBootstrap. При включении этого параметра kubelet будет автоматически запускать серверные сертификаты. Включение этого параметра приведет к включению параметра RotateCertificates.

Доступные значения:

  • да - включает автозапуск сертификата сервера.
  • нет - отключает автозапуск сертификата сервера.
  1. Способ управления. Это поле определяет стратегию, которую Kubelet должен применять при принятии решений о привязке ресурсов.

Доступные значения:

  • restricted: Нестандартные поды будут отклонены, которые не могут удовлетворить правильное выполнения карты вычислений топологии, если таковой имеется.
  • best-effort: Нестандартные поды будут запущены в режиме best-effort. Они будут ограничены в ресурсах, если их не хватит для удовлетворения распределения по узлам kubelet.
  • none: Топология ресурсов не будет учитываться при запуске подов.
  • single-numa-node: Поды будут размещены так, чтобы их ресурсы были распределены внутри одного NUMA узла.
  1. Стратегия обнаружения изменения ресурсов. Это поле определяет стратегию для отслеживания изменений в ConfigMaps и Secrets.

Доступные значения:

  • Get: настройка считывает ресурсы при каждом событии обновления.
  • Cache: Ресурсы кэшируются при обновлении ресурса для дальнейшего использования.
  • Watch: Сервер APIServer Kubernetes шлет уведомления о доступных обновлениях.
  1. EnableServer. При включении этого параметра Kubelet будет работать в безопасном режиме сервера.

Доступные значения:

  • Да: Включает защищенный сервер Kubelet.
  • Нет: Отключает защищенный сервер Kubelet.
  1. StaticPodPath. Это поле задает путь к статическому поду или репозиторию со статическим подом.

Например:

  • /мой/путь/к/static/pod: определяет путь к каталогу, где располагаются манифесты статических подов.
  • /home/user/my_static_pods: указывает каталог, в котором хранятся манифесты статических подов.
  1. SyncFrequency. Это поле определяет максимальное время между синхронизацией контейнеров и конфигураций.

Например:

  • 30 s: Время между синхронизаций контейнеров и конфигураций составляет 30 секунд.
  • 2 m: Время между синхронизаций контейнеров и конфигураций составляет 2 минуты.
  1. FileCheckFrequency. Это поле задает время между проверками файлов конфигурации на наличие изменений.

Например:

  • 10 s: Время между проверками файлов конфигураций на наличие изменений составляет 10 секунд.
  • 1 m: Время между проверками файлов конфигураций на наличие изменений составляет 1 минуту.
  1. StaticPodURLHeader. Это поле позволяет настроить заголовки HTTP, используемые для доступа к URL статического пода.

Например:

  • {“X-Api-Key”: “123xyz” }: заголовки HTTP для доступа к URL статического пода содержат ключ API.
  • {“Authorization”: “Basic QWxhZGRpbjpPcGVuU2VzYW1l”}: заголовки HTTP для доступа к URL статического пода содержат базовую авторизацию.
  1. Address. Это поле определяет IP-адрес, на котором должен работать Kubelet.

Например:

  • 192.168.1.1: Kubelet будет работать на IP-адресе 192.168.1.1.
  • 10.0.0.1: Kubelet будет работать на IP-адресе 10.0.0.1.
  1. CgroupDriver. Это поле определяет, какой драйвер CGroups должен использовать Kubelet.
  • systemd: Kubelet использует систему systemd для управления группами.

  • cgroupfs: Kubelet использует файловую систему cgroupfs для управления группами.

  • RotateCertificates. Включение этого параметра активирует автоматическую ротацию сертификатов для Kubelet.

Доступные значения:

  • Да: Включает ротацию сертификатов для Kubelet.
  • Нет: Отключает ротацию сертификатов для Kubelet.
  1. EnableProfilingHandler. При включении этого параметра, профилирование через хост host:port/debug/pprof/ становится доступным.

Доступные значения:

  • Да: Включает профилирование через хост host:port/debug/pprof/
  • Нет: Отключает профилирование.
  1. TLSMinVersion. Это поле определяет минимальную поддерживаемую версию протокола TLS.

Для продолжения заполнения разделов нажмите “Продолжить”. Если вы закончили заполнение разделов, нажмите “Завершить”.

Пользователи

В этом разделе можно создать одного или нескольких пользователей. Нажмите + для добавления нового пользователя.

Доступны поля для заполнения:

  • Введите имя пользователя. Это обязательное поле. Здесь запрашивается имя пользователя для подключения к узлу по SSH.
  • Путь до домашней директории пользователя
  • Shell. Определите путь до командной оболочки. Например, /bin/bash.
  • Группа. Введите название локальной группы в Linux.
  • Добавить публичный SSH ключ пользователя. Поле появляется при нажатии на +. Можно добавить несколько ключей.

Просмотр и изменение конфигурации узлов (NCI)

Созданные NCI отображаются в виде списка на странице Конфигурация узлов в разделе Кластер/Администрирование.

Для просмотра нажмите на название NCI в списке.

Разделы, в которых есть пользовательские настройки, отображаются доступными для управления/просмотра. Незаполненные разделы отображаются отключенными. При необходимости изменения данных раздела нажмите Управлять в блоке с названием раздела. Вы попадете на страницу, содержащую сведения о разделе.

По завершении редактирования данных раздела нажмите Продолжить, произойдет возврат в основное меню с предварительным сохранением изменений. Если изменений не требуются, нажмите Назад.

Для сохранения изменений в NCI необходимо на странице NCI нажать кнопку “Сохранить”. Обратите внимание, название NCI неизменяемое.