Skip to content

Компоненты

ALT Orchestra и Kubernetes тесно интегрированы друг с другом.

Далее основное внимание уделяется компонентам, специфичным для ALT Orchestra.

КомпонентОписание
apidПри взаимодействии с ALT Orchestra вы напрямую работаете с gRPC API, предоставляемым компонентом apid. Он выступает шлюзом для взаимодействия со всеми компонентами системы и перенаправляет запросы в machined.
containerdСтандартная в отрасли среда выполнения контейнеров, ориентированная на простоту, надёжность и переносимость.
machinedЗамена традиционного процесса init в Linux, разработанная специально для запуска Kubernetes и не позволяющая запускать произвольные пользовательские сервисы.
kernelЯдро Linux, поставляемое с ALT Orchestra, настроено в соответствии с рекомендациями проекта Kernel Self Protection Project (KSPP).
trustdДля запуска и эксплуатации кластера Kubernetes требуется определённый уровень доверия между узлами. Основанный на концепции «корня доверия» (Root of Trust), trustd отвечает за установление доверия внутри системы.
udevdУправляет файлами устройств в /dev и обрабатывает действия в пользовательском пространстве при подключении и отключении устройств.

apid

При взаимодействии с ALT Orchestra вы напрямую обращаетесь к gRPC API, предоставляемому компонентом apid.

apid выступает шлюзом для взаимодействия между всеми компонентами системы. На узлах control plane он также обеспечивает маршрутизацию запросов к нужному узлу.

Рассмотрим несколько примеров, чтобы понять работу apid.

Когда пользователь взаимодействует с компонентами ALT Orchestra через talosctl, поведение apid определяется двумя параметрами:

  • -e или --endpoints — указывает узел ALT Orchestra (точнее, его apid), который будет обрабатывать соединение. Обычно это публично доступный сервер.
  • -n или --nodes — указывает узел(ы) ALT Orchestra, которые должны ответить на запрос.

Если параметр --nodes не указан, используется первый endpoint.

Примечание: обычно endpoint уже определён в файле конфигурации ALT Orchestra. При желании там же можно определить и nodes.

Например, если пользователь хочет получить информацию о памяти через API machined, он может выполнить:

console
$ talosctl -e cluster.altlinux.space memory
NODE                     TOTAL   USED   FREE   SHARED   BUFFERS   CACHE   AVAILABLE
cluster.altlinux.space   7938    1768   2390   145      53        3724    6571

В этом случае talosctl подключается к apid на узле cluster.altlinux.space, который затем перенаправляет запрос в API machined.

Если нужно получить информацию о памяти другого узла кластера:

bash
$ talosctl -e cluster.altlinux.space -n node02 memory
NODE    TOTAL   USED   FREE   SHARED   BUFFERS   CACHE   AVAILABLE
node02  7938    1768   2390   145      53        3724    6571

В этом случае apid на узле cluster.altlinux.space получает запрос и пересылает его экземпляру apid на узле node02, который уже обращается к локальному API machined.

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

bash
$ talosctl -e cluster.altlinux.space -n node01 -n node02 -n node03 memory
NODE     TOTAL    USED    FREE     SHARED   BUFFERS   CACHE   AVAILABLE
node01   7938     871     4071     137      49        2945    7042
node02   257844   14408   190796   18138    49        52589   227492
node03   257844   1830    255186   125      49        777     254556

В этом случае apid на cluster.altlinux.space пересылает запросы узлам node01, node02 и node03, а их локальные экземпляры apid обращаются к своим экземплярам machined.

containerd

containerd обеспечивает среду выполнения контейнеров для запуска рабочих нагрузок в ALT Orchestra и Kubernetes.

Сервисы ALT Orchestra размещаются в пространстве имён (namespace) system, тогда как сервисы Kubernetes работают в пространстве имён k8s.io.

machined

Одной из ключевых идей ALT Orchestra является минимализм.

В ALT Orchestra роль процесса init выполняет компонент machined.

Целью было создать специализированный init, выполняющий одну задачу — запуск Kubernetes. Поэтому machined является достаточно статичным компонентом и не позволяет запускать произвольные пользовательские сервисы.

Доступны только те сервисы, которые необходимы для работы Kubernetes и управления узлом:

  • containerd
  • etcd
  • kubelet
  • networkd
  • trustd
  • udevd

Процесс machined отвечает за:

  • применение конфигурации машины;
  • обработку API-запросов;
  • управление ресурсами;
  • управление контроллерами системы.

kernel

Ядро Linux, входящее в состав ALT Orchestra, настроено в соответствии с рекомендациями проекта Kernel Self Protection Project (KSPP).

Цель KSPP — повысить защищённость ядра Linux путём включения дополнительных механизмов безопасности и усиления существующих защит.

trustd

Безопасность является одним из главных приоритетов ALT Orchestra.

Для работы кластера Kubernetes требуется определённый уровень доверия между узлами. Например, при начальной настройке высокодоступного control plane необходимо безопасно распространять чувствительные данные инфраструктуры открытых ключей (PKI).

Для решения этой задачи был создан компонент trustd.

Основанный на концепции Root of Trust («корень доверия»), trustd представляет собой простой демон, отвечающий за установление доверительных отношений внутри системы.

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

В будущем функциональность trustd будет расширяться для поддержки новых возможностей ALT Orchestra.

udevd

udevd обрабатывает уведомления ядра о появлении и удалении устройств и создаёт необходимые записи и символьные ссылки в каталоге /dev.

Именно этот компонент обеспечивает корректное обнаружение дисков, сетевых интерфейсов и других аппаратных устройств операционной системой.

Опубликовано под лицензией GPL-3.0+. Содержание доступно по лицензии CC BY-SA 4.0, если не указано иное. Разработано участниками ALT Orchestra.