
Исполнительная точка зрения — «Что?»
Kubernetes (K8s) стал естественным выбором приложений для работы в облаке, даже если приложение само является Kubernetes.
Gardener — это управляемая Kubernetes как услуга с открытым исходным кодом, которая предлагает гомогенные кластеры K8s потенциально в любом облаке с возможностью настройки и масштабирования.
Gardener использовал возможность самостоятельного хостинга Kubernetes для размещения K8 в K8, чтобы предлагать K8 как услугу в масштабе. Под «масштабом» понимается не только количество узлов в кластере, но и количество кластеров в целом.
Перспектива продукта — «Почему?»
Ниже приведены НЕСКОЛЬКО ключевых особенностей Gardener как «продукта», который предлагает полностью управляемые K8 как услугу помимо стандартных функций K8, которые он наследует:
- Эффективные операции второго дня
Это включает в себя обновления, исправления, усиление безопасности и другое обслуживание. Кроме того, Kubernetes обеспечивает гибкость настройки политик и процедур для удовлетворения постоянно меняющихся требований организаций (и клиентов). - Демократизация мультиоблачных сред и переносимость
Организация может принять решение о переносе своих приложений из частного облака в общедоступное или наоборот, либо контейнерные приложения могут быть распределены по мультиоблачным средам. В этом случае разработчики могут сосредоточиться на разработке, а не на базовой инфраструктуре. - Снижение общей стоимости владения
Управление кластером Kubernetes в масштабе будет сложной задачей как с точки зрения ресурсов центра обработки данных, так и с точки зрения человеческих ресурсов в виде администраторов и инженеров K8s. Gardener в значительной степени уменьшит это бремя своих клиентов, выполняя большую часть тяжелой работы самостоятельно. - Единая панель управления
Несмотря на то, что существует довольно много инструментов с открытым исходным кодом для создания и развертывания кластеров K8s, когда их число растет и когда кластеры распределяются между разными облачными провайдерами, становится трудно управлять экосистемой. С Gardener управление кластерами K8s в разных облаках осуществляется из единой панели управления, поддерживаемой элегантной панелью управления Gardener.

Инженерная перспектива — «Как?»
Как упоминалось ранее в этом блоге, Gardener вдохновлен Kubernetes и его возможностями самостоятельного размещения. Итак, дизайн Gardener можно лучше понять, если есть четкое представление о Kubernetes. Вот кратко о компонентах родного K8s.
Kubernetes имеет
- Плоскость управления, которая управляет кластером Kubernetes в целом, на котором размещается основной компонент — сервер API.
- Кластер K8s состоит из нескольких узлов K8s (это могут быть виртуальные машины или физические серверы), на которых фактически размещаются контейнерные приложения.
- Эти контейнерные приложения внутри них работают как Pods, основные или атомарные вычислительные единицы, которые K8 может создавать и управлять ими.
Аналогично этому, Гарднер
- Стрелять, аналогично Pods. Игровая площадка, состоящая только из узлов K8s для потребления клиентом.
- Seed, аналогично K8s Node. Он содержит плоскость управления Shoot в пространстве имен Shoot вместе с пользовательскими контроллерами для пользовательских ресурсов, специфичных для Gardener.
- Сад, аналог K8s Control Plane. Он управляет всей этой Экосистемой Садовника.
Архитектура Садовника выглядит примерно так, как показано ниже —

Все эти кластеры Shoot, Seed и Garden обязательно являются кластерами Kubernetes.
Приведенная выше схема архитектуры может немного напугать любого, кто плохо знаком с Kubernetes как таковым. На приведенной ниже диаграмме делается попытка чрезмерно абстрагировать концепцию, чтобы дать поверхностное представление о Гарденере.

Компоненты садовника
Gardener поставляется с набором специальных компонентов Gardener, дизайн которых снова вдохновлен компонентами K8s. Тем не менее, они служат более важной цели, предлагая бесперебойную работу, предоставляя K8s как услугу.
Компоненты садового кластера
- Сервер Gardener API
Сервер Gardener API — это собственное расширение Kubernetes, основанное на уровне агрегации. Он регистрируется через объектAPIServiceи предназначен для работы внутри кластера Kubernetes, чей API он хочет расширить. Благодаря этому Kubernetes узнает о создании пользовательских объектов ресурсов (таких какCloudProfile,Project,Seed,Shootи т. д.). - Диспетчер контроллера садовника
Диспетчер контроллера садовника (GCM) запускает несколько циклов управления, которые помогают согласовыватьProjectресурсы и выполнять необходимые действия с устаревшими проектами. - Gardener Scheduler
ПодобноKube-Scheduler, который назначаетNodesнаPods, Gardener Scheduler назначаетSeedsнаShoots. Стратегия планирования упоминается в записи намерения Shoot. Он может быть основан на стратегии того же региона или стратегии минимального расстояния. - Панель инструментов садовника
Панель управления садовника — это графический веб-интерфейс для садовника.
Компоненты исходного кластера
Узлы K8s кластера семян размещают плоскость управления Shoot вместе с некоторыми специфическими компонентами Gardener, а именно:
- Gardenlet
Аналогично K8s, где у каждого узла есть основной агент с именемkubelet, который управляет жизненным циклом модулей. В Gardener есть Gardenlet per Seed, который управляет жизненным циклом тех побегов, чьи плоскости управления он содержит. - etcd
Gardener использует компонент etcd-backup-restore для регулярного резервного копирования etcd, поддерживающего кластер Shoot, и восстановления в случае аварии. Развёртывается как sidecar через etcd-druid. - Диспетчер контроллеров компьютеров
В каждом пространстве имен Shoot в Seed запускается диспетчер контроллеров компьютеров (MCM), который управляет узлами/машинами кластера Shoot. Machine-controller-manager создаст, загрузит, обновит, масштабирует и удалит узлы кластера Shoot и лежащие в его основе виртуальные машины.
Типичный поток
Типичный процесс предложения кластера Kubernetes для потребления будет состоять из следующих шагов:
- Создайте
namespaceвSeedдляShootдля плоскости управленияShoot - Сгенерируйте
secretsдля рабочих узлов, чтобы общаться с плоскостью управления - Создайте инфраструктуру, которая в основном состоит из настройки сети
- Разверните плоскость управления
shootв пространстве имен shoot в кластереseedс помощью MCM. - Создайте машину
CRDsв кластереSeed - Подождите, пока сервер API кластера
Shootне ответит. - Наконец, разверните
kube-systemдемонов, таких какkube-proxyи далееadd-ons
и вы можете идти.
Еще несколько ключевых моментов о Gardener
- Несмотря на то, что на основе K8s, Gardener может управлять базовой инфраструктурой с помощью Machine Controller Manager.
- Gardener также поддерживает резервное копирование и восстановление etcd с поддержкой полных моментальных снимков и дельта-снимков по сравнению с полными снимками.
- Поддержка пользовательской операционной системы с учетом тесной связи между приложением и операционной системой.
- Непрерывная оценка производительности и оповещения с интеграцией таких инструментов, как Grafana и Prometheus.
Вывод
В заключение, Gardener — это полностью управляемая Kubernetes как услуга, сделанная правильно. Благодаря усилиям сообщества открытого исходного кода он становится еще лучше, решая настоящие проблемы предприятий.
Gardener — это то, что создано для Cloud Native и предоставляется как услуга!
С уважением и благодарностью,
Самарт Деягонд
Эта статья представляет собой обзор Gardener. Для более глубокого понимания см. Ниже ссылки-