Skip to Content
РуководстваNanoclОбзор

Обзор Nanocl

Nanocl — переносимая платформа с открытым исходным кодом для контейнеров и виртуальных машин на собственной инфраструктуре. Декларативный Statefile описывает Cargo, VM, задания, секреты и ресурсы контроллеров; демон Nanocl согласует эти объекты с локальной средой выполнения.

Название сокращает nano cloud: проект предоставляет полезные облачные примитивы нагрузок без большой плоскости управления.

Возможности Nanocl

  • Именованные реплицируемые приложения в Cargo с упорядоченными init-контейнерами и Docker-совместимой конфигурацией.
  • Готовность с учётом здоровья, перезапуски, история и контролируемые обновления.
  • Управление жизненным циклом контейнеров и VM через HTTP API и CLI nanocl.
  • Динамические правила HTTP, потоков и DNS через ncproxy и ncdns.
  • Секреты, задания, метрики, шаблоны Statefile и резервное копирование состояния.

Nanocl 0.18 прежде всего предназначен для одного узла. В нём нет автоматического планирования на нескольких узлах, автомасштабирования, высокой доступности всего кластера или service mesh. Именованные сети Docker локальны для узла и не принадлежат пространствам имён Nanocl.

Архитектура Nanocl

Клиент nanocl отправляет запросы API в nanocld. Демон хранит желаемое и наблюдаемое состояние в nstore, управляет процессами Docker и публикует события для контроллеров прокси и DNS.

Стандартная установка содержит:

  • nanocld / ndaemon — API и контроллер нагрузок.
  • nstore — постоянное хранилище состояния управления на CockroachDB.
  • nmetrics — сервис метрик хоста metrsd.
  • ncproxy — контроллер прокси со встроенным Nginx в том же контейнере. Отдельный сервис nproxy больше не требуется.
  • ncdns — контроллер DNS со встроенным dnsmasq в том же контейнере. Отдельный сервис ndns больше не требуется.
  • ncvpnkit — сетевой контроллер Docker Desktop, устанавливаемый только для этой среды.

Упрощённая архитектура одного узла:

Архитектура Nanocl на одном узле

На схеме каждый Cargo обозначен группой процессов. В 0.18 реплика Cargo может содержать несколько именованных контейнеров приложения и, при необходимости, одну внутреннюю сетевую песочницу.

Основные объекты

Cargo

Cargo — сохраняемая контейнерная нагрузка с одним или несколькими именованными приложениями, необязательными init-контейнерами и числом реплик. См. Cargo с несколькими контейнерами.

Виртуальная машина

Виртуальная машина запускает QEMU в управляемом контейнере и использует полный локальный путь образа диска. Необязательный init-контейнер может подготовить образ перед запуском.

Задание

Job — конечная контейнерная задача. В отличие от приложений Cargo, она должна завершиться после выполнения работы.

Ресурс

Ресурсы расширяют Nanocl через контроллеры. Стандартные контроллеры ncproxy и ncdns используют ресурсы правил прокси и DNS.

Секрет

Секреты содержат данные окружения, реестра или TLS. Секрет Cargo наследуется всеми его контейнерами; секрет контейнера действует только для соответствующего именованного контейнера.

Последнее обновление