Spec-Zone.ru › MariaDB

Обзор Kubernetes для пользователей MariaDB

Kubernetes, или K8s, — это программное обеспечение для оркестрации контейнеров. Оно распространяется на условиях открытой лицензии Apache License 2.0.

Kubernetes был первоначально разработан компанией Google. В настоящее время он поддерживается Фондом вычислений с использованием облачных технологий (CNCF) со статусом «Проекта с продвинутым уровнем поддержки».

Для получения информации о том, как настроить учебную или производственную среду, см. раздел Начало работы в документации Kubernetes.

Архитектура

Kubernetes работает в кластере. Кластер выполняет рабочую нагрузку: набор серверов, которые должны работать вместе (веб-серверы, серверы базы данных и т. д.).

Кластер Kubernetes состоит из следующих компонентов:

  • Узлы выполняют контейнеры с серверами, необходимыми нашим приложениям.
  • Контроллеры постоянно проверяют текущее состояние узлов кластера и сравнивают его с желаемым состоянием.
  • Управляющая плоскость — набор различных компонентов, которые хранят желаемое состояние кластера и принимают решения об узлах. Управляющая плоскость предоставляет API, используемый контроллерами.

Для получения дополнительной информации об архитектуре Kubernetes см. разделы Концепции и Компоненты Kubernetes в документации Kubernetes.

Узлы

Узел — это система, ответственная за выполнение одного или нескольких под. Под — это набор контейнеров, выполняющих рабочую нагрузку Kubernetes или её часть. Все контейнеры, выполняемые в одном под, также расположены на одном узле. Обычно идентичные под выполняются на разных узлах для повышения отказоустойчивости.

Для получения более подробной информации см. Узлы в документации Kubernetes.

Каждый узел обязательно должен иметь следующие компоненты:

  • kubelet
  • kube-proxy
  • Выполняющая среда контейнеров

kubelet

kubelet имеет набор PodSpecs, которые описывают желаемое состояние под. Он проверяет, соответствует ли текущее состояние под желаемому состоянию. Он особенно следит за тем, чтобы контейнеры не аварийно завершались.

kube-proxy

В типичном кластере Kubernetes нескольким контейнерам, расположенным в разных под, необходимо подключиться к другим контейнерам, расположенным в тех же под (по причинам производительности и отказоустойчивости). Поэтому, при разработке и развертывании приложения мы не можем заранее знать IP-адреса контейнеров, к которым оно должно подключиться. Например, сервер приложения может потребоваться подключиться к MariaDB, но IP-адрес MariaDB будет разным для каждого под.

Основная цель kube-proxy — реализовать концепцию Kubernetes сервисов. Когда приложению требуется подключиться к MariaDB, оно подключится к сервису MariaDB. kube-proxy получит запрос и перенаправит его на работающий контейнер MariaDB в том же под.

Выполняющая среда контейнеров

Kubernetes управляет контейнерами в под через выполняющую среду контейнеров, или менеджер контейнеров, который поддерживает интерфейс Kubernetes для среды выполнения контейнеров (CRI). Среды выполнения контейнеров, соответствующие этому требованию, перечислены на странице Среды выполнения контейнеров в документации Kubernetes. Дополнительную информацию об интерфейсе выполнения контейнеров можно найти на GitHub.

Изначально Kubernetes использовал Docker в качестве среды выполнения контейнеров. Позже это было устаревшим, но изображения Docker по-прежнему можно использовать с любой средой выполнения контейнеров.

Контроллеры

Контроллеры постоянно проверяют, есть ли различия между текущим состоянием под и их желаемым состоянием. При обнаружении различий контроллеры пытаются их исправить. Каждый тип узла управляет одним или несколькими типами ресурсов. Для запуска кластера необходимо несколько типов контроллеров.

Большинство действий, выполняемых контроллерами, используют API-сервер в управляющей плоскости. Однако это не обязательно верно для пользовательских контроллеров. Также некоторые действия нельзя выполнить через управляющую плоскость. Например, если некоторые узлы вышли из строя, добавление новых узлов предполагает выполнение действий за пределами кластера Kubernetes, и контроллеры должны сделать это сами.

Можно написать пользовательские контроллеры для выполнения проверок, требующих знаний о конкретной технологии. Например, пользовательский контроллер MariaDB может захотеть проверить, работает ли репликация, выполняя команды SHOW REPLICA STATUS. Эта логика специфична для работы MariaDB и может быть реализована только в пользовательском контроллере. Пользовательские контроллеры обычно являются частью операторов.

Для получения дополнительной информации см. Контроллеры в документации Kubernetes.

Управляющая плоскость

Управляющая плоскость состоит из следующих компонентов.

Дополнительную информацию об управляющей плоскости см. в Компоненты управляющей плоскости в документации Kubernetes.

API-сервер

API-сервер предоставляет API-функции как внутри, так и снаружи. Он необходим для координации компонентов Kubernetes, чтобы они реагировали на изменения состояния узлов, и позволяет пользователю отправлять команды.

Стандартная реализация API-сервера — kube-apiserver. Он способен к горизонтальному масштабированию и балансировке нагрузки между своими экземплярами.

kube-controller-manager

Большинство контроллеров работают в этом компоненте.

etcd

etcd содержит все данные, используемые кластером Kubernetes. Рекомендуется регулярно делать резервные копии данных etcd.

kube-scheduler

При создании нового под kube-scheduler определяет, на каком узле он должен разместиться. Решение принимается на основе нескольких критериев, например, потребностей под в ресурсах.

cloud-controller-manager

cloud-controller-manager реализует логику и API облачного провайдера. Он получает запросы от API-сервера и выполняет определенные действия, такие как создание экземпляра в AWS. Он также выполняет контроллеры, специфичные для поставщика облачных услуг.

Клиенты и инструменты

Kubernetes поставляется с набором инструментов, которые позволяют нам взаимодействовать с API-сервером и тестировать кластер.

kubectl

kubectl позволяет взаимодействовать с API-сервером и выполнять команды в кластере Kubernetes.

kubeadm

kubeadm позволяет создать кластер Kubernetes, готовый к получению команд от kubectl.

kind и minikube

Эти инструменты предназначены для создания и управления тестовыми кластерами на личной машине. Они работают на Linux, MacOS и Windows. kind создаёт кластер, состоящий из контейнеров Docker, поэтому для его работы требуется Docker. minikube запускает одноузловой кластер на локальной машине.

Ресурсы и ссылки Kubernetes

  • Веб-сайт Kubernetes.
  • Kubernetes в Википедии.
  • Организация Kubernetes на GitHub.
  • OperatorHub.io
  • Форумы сообщества Kubernetes.
  • (видео) Кластеры баз данных MariaDB на Kubernetes, автор Pengfei Ma, на MariaDB Server Fest 2020.
  • Серия статей Anel Husakovic на блоге MariaDB Foundation:
    • Запуск MariaDB в K8s
    • MariaDB и K8s: Взаимодействие между контейнерами/развертываниями
    • MariaDB и K8s: Создание секрета и его использование в развертывании MariaDB
    • MariaDB и K8s: Развертывание MariaDB и WordPress с использованием постоянных томов
    • Создание statefulset приложения MariaDB в K8s
    • Репликация MariaDB с использованием контейнеров
    • MariaDB и K8s: Как реплицировать MariaDB в K8s

Контент первоначально предоставлен компанией Vettabase Ltd.

Содержимое, воспроизведенное на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проходит предварительной проверки MariaDB. Мнения, информация и мнения, выраженные в этом содержании, не обязательно отражают точку зрения MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/kubernetes-overview-for-mariadb-users/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API