Состав дистрибутива#
Состав дистрибутива DropApp#
Главные образы контейнеров:
Kubeadm - инструмент для автоматизации установки и настройки компонентов DropApp (в том числе сервера API, Controller Manager и Kube DNS).
Kube-apiserver - клиентская часть панели управления DropApp. Основной реализацией API-сервера DropApp является kube-apiserver, который предназначен для горизонтального масштабирования, то есть развертывания на несколько экземпляров.
Kube-controller-manager - компонент системы (один из контроллеров), который выбирает, на каком узле должен запускаться какой pod, исходя из доступности ресурсов; kube-controller-manager — часть мастер-узла, запускающая основные контроллеры Kubernetes (Node Controller, Replication Controller, Endpoints Controller, Service Account & Token Controllers).
Kube-proxy - компонент DropApp, который обрабатывает трафик маршрутизации для служб в кластере. Существует две серверные части, доступные для балансировки нагрузки уровня 3/4 в вышестоящем потоке kube-proxy — iptables и IPVS.
Kube-scheduler - компонент DropApp, который отвечает за планирование pods по узлам в соответствии с заданными политиками.
Pause - контейнер каждого pod, существует в качестве шаблона или родительского контейнера, от которого новые контейнеры в pod наследуют namespaces. Контейнер pause запускается, затем переходит в «спящий режим». Это контейнер-шаблон, который резервирует namespaces, общий для всех контейнеров внутри pod.
Coredns - авторитетный DNS-сервер общего назначения, который может служить в качестве кластерных сетей, соответствующих спецификациям DNS.
CRI-O - реализация CRI DropApp (Container Runtime Interface), позволяющая использовать среды выполнения, совместимые с OCI (Open Container Initiative).
Etcd — распределенное хранилище данных. DropApp хранит в нем информацию о состоянии существующих кластеров. В небольших временных кластерах etcd можно запускать в единственном экземпляре и на одном узле с ведущими компонентами. В важных системах, требующих избыточности и высокой доступности, etcd следует создавать в виде кластера, состоящего из нескольких узлов.
Опциональные образы контейнеров (зависимости от главных образов контейнеров):
Kube-rbac-proxy - сервер-прокси, использующий RBAC для управления доступом к API-ресурсам, который работает как sidecar контейнер в pod, прослушивает запросы к API-серверу и добавляет в них заголовок Authorization, содержащий информацию об авторизации, обеспечивая безопасность кластера и доступ к ресурсам только для авторизованных пользователей и сервисных аккаунтов.
Cilium - сетевой плагин, который обеспечивает более безопасную и надежную коммуникацию между pods и сервисами в кластере. Он работает на уровне ядра операционной системы и использует технологии, такие как eBPF (extended Berkeley Packet Filter) для обеспечения безопасности и маршрутизации трафика. Cilium предоставляет функции интеграции с DropApp API и обнаружение и предотвращение сетевых атак, а также заменяет функциональность традиционных сетевых решений, таких как IPTables и IPVS. Cilium также упрощает микросервисную архитектуру, облегчая настройку и масштабирование сетей DropApp.
Hubble - инструмент визуализации, мониторинга и отладки сети. Он предоставляет детализацию обмена трафиком внутри кластера и может использоваться для отслеживания потоков трафика, обнаружения проблем с производительностью и выявления потенциальных уязвимостей в сетевой архитектуре. Использует Cilium для предоставления информации о сети, и предоставляет дополнительные средства визуализации и отладки, такие как граф связей между pods, информацию о потоках трафика и возможность проведения детального анализа сетевой активности.
Tetragon - компонент Cilium, который обеспечивает средства наблюдения за безопасностью на основе eBPF в режиме реального времени. Tetragon применяет политику, выполняет фильтрацию, блокировку и реагирование на события непосредственно в ядре вместо отправки событий агенту.
VictoriaMetrics - расширяемый временной ряд, хранилище данных и база данных метрик, специально разработанный для обработки данных, генерируемых приложениями и сервисами в DropApp. VictoriaMetrics интегрируется с инструментами мониторинга и агрегирует офлайн компрессии и хранение временных рядов. В DropApp VictoriaMetrics может быть установлен как отдельный компонент без управления оператором DropApp, или с помощью VictoriaMetrics-operator, который упрощает установку, масштабирование и обновление экземпляров VictoriaMetrics в кластере DropApp.
VictoriaMetrics-operator упрощает процесс управления VictoriaMetrics в DropApp и обеспечивает высокую доступность и производительность кластера хранилища временных рядов.
Node-exporter - инструмент, который собирает данные метрик о работе узла DropApp, такие как - процессор, память, диски и другие ресурсы узла, и экспортирует собранные данные в формате, который может быть использован для мониторинга и анализа этой информации.
Node-cert-exporter - инструмент для экспорта сертификатов узла в DropApp, используемых для обеспечения безопасности соединений между узлами кластера.
Metrics-server - API-сервер, который сохраняет и предоставляет данные метрик DropApp. Он используется для мониторинга ресурсов кластера, таких как CPU, память и ресурсы сети в режиме реального времени.
Kube-state-metrics - компонент мониторинга DropApp, который предоставляет метрики состояния кластера, такие как, количество pods, replicaSet, deployment и других ресурсов DropApp. Kube-state-metrics позволяет мониторить состояние кластера в реальном времени, отслеживая события и выявляя проблемы.
K8s-device-plugin - компонент DropApp, который позволяет управлять устройствами в кластере, такими как GPU, FPGAs и другие устройства. K8s-device-plugin автоматически обнаруживает и регистрирует устройства в кластере, делая их доступными для использования в pods приложений.
Metallb - контроллер балансировки нагрузки, который используется в DropApp-кластерах, для предоставления статических IP-адресов для сервисов DropApp. Metallb может заменить выделение IP-адресов из общего пула адресов, позволяя конечным пользователям использовать статические IP-адреса для своих сервисов.
Trident - инструмент для автоматического управления предоставлением хранилища данных на основе NetApp. Он обеспечивает доступ к хранилищу данных через REST-API, к которому можно подключиться через интерфейс командной строки.
Trident-operator - оператор DropApp, который используется для управления динамическим предоставлением и управления хранилищем данных. Оператор обеспечивает автоматическое создание и удаление хранилища данных в DropApp, управление и распределение данных между узлами кластера.
Trident-autosupport - инструмент для коррекции сбора метрик и автоматического управления предоставлением хранилища данных на основе NetApp. Он обеспечивает доступ к хранилищу данных через REST-API, к которому можно подключиться через интерфейс командной строки.
CSI (Container Storage Interface) - это стандарт для работы с хранилищами данных в DropApp. CSI добавляет возможность управления и настройки доступа к хранилищам данных в DropApp через плагины. Для работы с CSI к DropApp должны быть добавлены следующие компоненты:
Csi-provisioner - компонент управляет динамическим выделением томов CSI. Он обеспечивает создание, монтирование и удаление томов CSI по запросу. Компонент предоставляет API для создания, удаления и монтирования томов и запускается в DropApp в виде pod.
Csi-attacher - компонент управляет присоединением томов к pods. Он обеспечивает подключение томов к указанному pod. Компонент предоставляет API для присоединения томов и запускается в DropApp в виде pod.
Csi-resizer - компонент управляет изменением размеров томов. Он обеспечивает операцию изменения размеров томов CSI. Компонент предоставляет API для изменения размеров томов и запускается в DropApp в виде pod.
Csi-snapshotter - компонент управляет созданием и восстановлением снимков томов. Он обеспечивает создание и восстановление снимков томов CSI. Компонент предоставляет API для создания и восстановления снимков томов и запускается в DropApp в виде pod.
Csi-node-driver-registrar - компонент управляет регистрацией драйверов для устройств хранения данных на узлах DropApp. Он обеспечивает регистрацию драйвера на каждом узле, который будет использоваться для работы с хранилищами данных. Компонент предоставляет API для регистрации драйверов и запускается в DropApp в виде DaemonSet.
Примечание
Все приведенные компоненты csi-node-driver-registrar используются вместе для управления томами и хранилищами данных в DropApp с помощью CSI стандарта.
Volcano - инструмент, предназначенный для управления рабочей нагрузкой и планирования задач в кластере DropApp. Он обеспечивает дополнительные ресурсы для запуска и выполнения задач, управляет приоритетами и сроками выполнения задач, а также предоставляет расширенные возможности мониторинга и журналирования. volcano помогает DropApp эффективнее использовать ресурсы кластера, упрощает управление рабочей нагрузкой и ускоряет выполнение задач.
Ingress-nginx - часть DropApp, которая отвечает за управление сетевым трафиком в кластере. Ingress-nginx осуществляет доступ к сервисам и приложениям в кластере, используя правила маршрутизации с помощью HTTP, HTTPS, DNS и других протоколов. Контроллер Ingress-nginx позволяет управлять конфигурацией маршрутизации сетевых запросов, позволяя администраторам конфигурировать и настраивать сервисы и приложения более гибко и эффективно. Он также предоставляет механизмы прозрачного балансирования нагрузки и управления трафиком для повышения отказоустойчивости и эффективности работы приложений. Ingress-nginx обеспечивает безопасность и надежность сетевых взаимодействий в кластере, снижая нагрузку на инфраструктуру и повышая стабильность работы сервисов и приложений.
Kubelogin - инструмент, который позволяет взаимодействовать с кластером приложений с управлением DropApp в различных облачных окружениях или на локальной машине. Он обеспечивает безопасную и простую аутентификацию и авторизацию доступа пользователя к кластеру без необходимости использования прямых учетных данных в виде логина и пароля. Для этого kubelogin использует протоколы аутентификации OIDC (OpenID Connect) и OAuth для взаимодействия с провайдерами идентификации, такими как GitHub и другими. Kubelogin позволяет настроить автоматический доступ к кластеру без необходимости введения пароля при подключении.
Argo — это комплекс инструментов управления GitOps для DropApp.
Argo-cd - инструмент для непрерывной доставки приложений, который использует модель GitOps для управления настройками DropApp-кластера. Это означает, что репозиторий Git используется в качестве единственного истинного источника для системы управления доставкой приложений. Argo CD может автоматически обновлять приложения в DropApp-кластере при изменениях в репозитории Git.
Argo-workflows - контейнерно-нативный механизм рабочих процессов с открытым исходным кодом для оркестровки параллельных заданий на DropApp. Argo-workflows реализован как DropApp CRD (Custom Resource Definition).
Argo-rollouts - утилита расширения, которая обеспечивает функциональность управления различными типами событий в DropApp. Утилита может автоматически управлять внедрением обновлений приложений, переключением между версиями приложений и откатом к предыдущим версиям приложений в DropApp-кластере.
Argo-events - инструмент для обработки событий в DropApp. Он позволяет настроить механизмы подписки на различные типы событий в DropApp и принимать соответствующие меры в зависимости от полученного события. Argo-events может использовать другие инструменты для контроля запуска новых приложений, переключения между версиями приложений и обработки событий в DropApp-кластере.
Vector - средство для агрегации и сбора логов и метрик в реальном времени из различных источников в кластере. Это открытая платформа, которая собирает данные с контейнеров, приложений и систем в кластере с помощью специализированных агентов и отправляет их централизованно для дальнейшей обработки и анализа. Vector использует множество стандартных протоколов и форматов данных, такие как Syslog, Fluentd и Logstash, что позволяет ему извлекать логи и метрики из различных источников и пересылать их на центральный сервер для дальнейшей обработки и хранения. С помощью Vector можно наблюдать за состоянием системы и приложений в реальном времени, а также анализировать производительность и определять причины возникающих проблем. Vector обеспечивает масштабируемость и гибкость работы с большим объемом логов и метрик, что позволяет администраторам управлять их потоком и интегрировать их с другими системами мониторинга и аналитики. Vector является независимой от облачных провайдеров платформой, поэтому его можно использовать как для локального кластера.
Operator-sdk - инструмент, разработанный для создания приложений-операторов для DropApp. Он позволяет разработчикам операторов ускорить процесс разработки, упростить управление операторами и обеспечить совместимость с DropApp.
Cri-tools - набор инструментов, используется в DropApp для взаимодействия с контейнерным временем выполнения по стандарту Container Runtime Interface (CRI). Он содержит утилиты для запуска и остановки контейнеров, создания и удаления образов контейнеров, а также для получения информации о контейнерах и их статусе. CRI — это интерфейс, который описывает стандартную спецификацию для взаимодействия между DropApp и контейнерным временем выполнения. Это позволяет расширять возможности DropApp и использовать различное время выполнения контейнеров, доступное на рынке с различными функциями и возможностями.
Prometheus- это инструмент для мониторинга и оповещения систем. Prometheus собирает и хранит свои метрики в виде данных временных рядов, то есть информация о метриках хранится с меткой времени, на которой она была записана, наряду с необязательными парами ключ-значение, называемыми метками.
Prometheus-operator - обеспечивает встроенное развертывание и управление Prometheus и связанными с ним компонентами мониторинга. Это сделано для упрощения и автоматизации настройки стека мониторинга на основе Prometheus для кластеров DropApp.
Configmap-reload - инструмент для перезагрузки в случае обновления DropApp ConfigMaps или Secrets, смонтированных в pods. Он просматривает смонтированные каталоги томов и уведомляет целевой процесс об изменении ConfigMaps. Поддерживает отправку HTTP-запроса.
Cert-manager - менеджер сертификатов DropApp. Cert-manager добавляет сертификаты и эмитенты сертификатов в качестве типов ресурсов в кластеры DropApp и упрощает процесс получения, обновления и использования этих сертификатов.
Envoy proxy - это прокси уровня L7 и коммуникационная шина для сервис-ориентированных архитектур.
Curl - инструмент для осуществления HTTP-обмена из командной строки.
Gatekeeper - реализация Open Policy Agent (OPA) для DropApp, которая работает в качестве Webhook для валидации манифестов. Этот инструмент предназначен для аудита и автоматического применения к ресурсам DropApp политик безопасности, написанных на языке Rego.
Loginapp - веб приложение для конфигурации DropApp CLI с OIDIC.
OKD console - аналог инструмента администрирования kubectl в виде одностраничного веб-приложения.
Jaeger используется для мониторинга и устранения неполадок распределенных систем на основе микросервисов.
Grafana - инструмент для визуализации данных из различных источников. Используется для представления в графическом виде данных временных рядов и текстовых данных.
Redis — это база данных размещаемая в оперативной памяти, снабжена механизмами снимков и журналирования для обеспечения постоянного хранения (на дисках, твердотельных накопителях). Является хранилищем типа «ключ-значение», но поддерживает множество различных типов значений: строки, списки, наборы, отсортированные наборы, хеши, потоки, HyperLogLog, растровые изображения. Используется как для баз данных, так и для реализации кэшей, брокеров сообщений.