Запуск баз данных производственного уровня на Kubernetes: Проблемы и решения

Автор: Тамал Саха, основатель и генеральный директор AppsCode Inc (золотой спонсор KCD Chennai 2022)

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

Однако управление государственными рабочими нагрузками в контейнерной среде всегда было непростой задачей. Однако по мере развития Kubernetes все сообщество упорно трудилось над тем, чтобы привести государственные рабочие нагрузки в соответствие с потребностями корпоративных пользователей. В результате Kubernetes представил StatefulSets, который поддерживает государственные рабочие нагрузки, начиная с версии Kubernetes 1.9. Теперь пользователи Kubernetes могут использовать stateful приложения, такие как базы данных, рабочие нагрузки искусственного интеллекта и большие данные. Поддержка Kubernetes для stateful workloads представлена в виде StatefulSets.

Несмотря на все это, уровень данных по-прежнему требователен, поскольку для запуска приложений данных или stateful-приложений на Kubernetes необходимы обширные знания. И на сегодняшний день, если вы хотите запустить свои stateful-приложения на Kubernetes и вам нужна база данных, у вас есть три решения или варианта ее реализации: один из них — воспользоваться управляемой службой баз данных облачного провайдера, например AWS, Azure, GCP. Или вы можете воспользоваться услугой размещенной базы данных, которую обычно предоставляют сами поставщики баз данных, например Elastic Cloud, MongoDB Atlas и т.д. И третий вариант — вы запускаете кластер Kubernetes и запускаете свои базы данных внутри Kubernetes.

Если вы переходите на решение с использованием облачных провайдеров, то основной недостаток заключается в том, что облачные провайдеры на самом деле не являются вашими DBA. Если у вас медленный запрос, они не скажут вам, как это исправить, и вам придется разбираться в этом самостоятельно. И ваши операционные процедуры будут заблокированы поставщиком. Возможности настройки ограничены. Вы не можете просто использовать то расширение базы данных, которое вам нужно. Если у вас есть требования к суверенитету данных или воздушному хранению, вам не повезло. Модель ценообразования облачных услуг, основанная на использовании, может быть очень дорогой в масштабе. Та же проблема касается и решений поставщиков баз данных. Здесь вы столкнетесь с дополнительной проблемой — выбором более чем одного движка базы данных. Поставщики баз данных предлагают только одну базу данных, над которой они работают.

Таким образом, у вас остается возможность запускать базы данных внутри Kubernetes. Kubernetes сегодня гораздо более стабилен и развит, чем в 2014 году, когда он только зарождался. Но использование баз данных в Kubernetes «родным» способом требует определенной подготовки. Вы должны хорошо знать Kubernetes, Helm Chart, YAML, какой-либо движок базы данных, а затем настроить все это в соответствии с вашими потребностями. Даже после первоначальной инициализации вы столкнетесь с трудностями при выполнении рутинных задач, связанных с базами данных, таких как мониторинг, обновление, исправление, масштабирование, расширение тома, резервное копирование и восстановление, обнаружение сбоев и безопасность. Чтобы поддерживать базу данных для производственных рабочих нагрузок в Kubernetes, вам придется многое делать вручную.

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

В отличие от человеческих DBA, вы можете переложить управление базами данных на разработчиков приложений. Разработчики могут внедрять «облачные» практики DevOps единообразно на любом количестве кластеров Kubernetes с помощью GitOps. Вы больше не ограничены облаком. Вы можете перенести эти же практики в локальные системы, где сегодня выполняется большинство рабочих нагрузок. Вам не нужно беспокоиться обо всех знаниях концепции Kubernetes, Helm и конфигурации базы данных. Оператор Kubernetes упростит для вас весь процесс с помощью Custom Resources. Вам просто нужно использовать стандартный Kubernetes CLI и API для инициализации баз данных. Вы можете обновить свою базу данных до любого крупного или мелкого обновления версии базы данных. Вы можете использовать метрики Prometheus для вертикального и горизонтального масштабирования базы данных вместе с остальными частями приложения. Вы можете расширить емкость хранения базы данных в Kubernetes. Оператор Kubernetes может защитить вашу базу данных с помощью TLS и автоматизировать ротацию сертификатов. Операторы Kubernetes также могут защитить вашу базу данных от катастроф, периодически создавая резервные копии в объектных хранилищах, таких как S3 и т.д. Короче говоря, хорошо реализованное решение для управления базами данных на основе оператора Kubernetes может предложить вам лучшее из двух миров — вы получите преимущества решения, управляемого облачным провайдером, без каких-либо ограничений.

KubeDB от AppsCode — это облачное нативное решение для управления базами данных Kubernetes с открытым ядром производственного класса. KubeDB упрощает и автоматизирует рутинные задачи управления базами данных, такие как инициализация, исправление, резервное копирование, восстановление, масштабирование и управление tls для различных популярных баз данных в частных и публичных облаках. Это освобождает вас, чтобы сосредоточиться на ваших приложениях и обеспечить им необходимую производительность, высокую доступность, безопасность и совместимость. KubeDB предлагает на выбор множество привычных движков баз данных, включая PostgreSQL, MySQL, MongoDB, Elasticsearch, Redis и Memcached. И этот список постоянно растет. Встроенная интеграция KubeDB с Kubernetes делает ее уникальным решением по сравнению с конкурирующими решениями от облачных провайдеров и поставщиков баз данных. KubeDB разрабатывается с 2017 года и обеспечивает работу критически важной инфраструктуры для многих предприятий в сфере телекоммуникаций, здравоохранения, игорного бизнеса, EPR и финансовой индустрии.

Важные ссылки:

Веб-сайт KubeDB — https://kubedb.com/
Сайт Stash (для резервного копирования БД) — https://stash.run/
Сайт компании — https://appscode.com/contact/

Оцените статью
Procodings.ru
Добавить комментарий