Начало работы с Kubernetes для вашего SaaS

1659733219 nachalo raboty s kubernetes dlya vashego saas

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

Если вы не разрабатывали программу с учетом контейнеров с самого начала, перенос вашей программы на Kubernetes требует больших усилий. Цель этой статьи – помочь вам на пути к контейнеризации ваших программ с учетом интеграции Kubernetes.

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

Шаг 1 – Контейнеруйте свою программу?

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

OnPF9sW3GZAZqG0BxOcBdRlVYyQHLUT9jjR1
Контейнерные программы могут работать предсказуемо на всех машинах, а не только на вашей.

Контейнеризация является достаточно простым процессом – используя Docker, просто определите Dockerfile, содержащий шаги, необходимые для установки вашей программы в ОС (загрузка пакетов, установка зависимостей и т.п.).

Затем создайте образ, который могут использовать разработчики. Дополнительные сведения о процессе контейнеризации можно найти на веб-сайте Docker.

Шаг 2 — Принять многоэкземплярную архитектуру?

Xmd3dBrgwkSRtjoOgvq-1uy-qn6duclrLyyx
Решение выбрать архитектуру с несколькими клиентами или с несколькими экземплярами приведет вас разными путями

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

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

Ниже приведены некоторые основные преимущества использования многоэкземплярной архитектуры.

  • Стабильность— Вместо единой точки отказа (единственного экземпляра программы), каждый клиент может существовать в своем собственном экземпляре. Если один экземпляр выходит из строя, другие останутся неизменными.
  • Масштабируемость С многоэкземплярной архитектурой масштабирования это простое добавление дополнительных ресурсов. Однако с архитектурой с несколькими клиентами вы можете добиться момента, когда вам понадобится создать кластерную архитектуру приложений, развертывание которой обычно далеко не тривиально.
  • Безопасность — При использовании одной базы данных все ваши данные живут вместе. Это становится серьезной проблемой в случае нарушения безопасности, поскольку все данные клиентов могут стать уязвимыми, когда сломана одна учетная запись. С многоэкземплярной архитектурой под угрозой могут оказаться только данные одного клиента.

Шаг 3. Определите потребление ресурсов программы ⛽

Чтобы иметь наиболее экономически эффективную инфраструктуру, вам нужно точно определить, сколько ЦБ, памяти и памяти потребуется для запуска одного экземпляра программы.

Таким образом, вы можете установить ограничения, чтобы получить точные данные о том, сколько места нужно вашим узлам Kubernetes, а также убедиться, что ваши узлы не будут перегружены и ненадежны.

Обычно это процесс проб и ошибок, но вы можете воспользоваться решением для мониторинга, таким как Heapster, чтобы предоставить четкую разбивку ресурсов, потребляющих ваши модули. Это позволит оценить, сколько выделить.

3SWNHqbaF-aFU8eHKYfW6YZwegsKrnKQR2UG
Heapster предоставляет визуализацию использования ресурсов вашей рабочей нагрузки

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

Вы берете память или ЦП, необходимые для функционирования каждого экземпляра, и умножаете их на 100 (максимальное количество модулей, которые могут содержать узел). Это даст вам базовую оценку того, сколько памяти/ЦП должны иметь ваши узлы.

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

Шаг 4 — Интеграция с Kubernetes ⚙️

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

Автоматическое масштабирование узлов Kubernetes

Когда ваши узлы заполняются, обычно вы хотите создать больше узлов, чтобы все могло продолжать плавно работать. Один из способов сделать это с помощью такого инструмента, как kops.

Автоматическое масштабирование приложений

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

kubectl autoscale deployment myapp --cpu-percent=50 --min=1 --max=10

установить myapp развертывание для масштабирования до 10 модулей, когда процент ЦБ превышает 50.

Автоматическое предоставление экземпляров после действия пользователя

Для многоэкземплярной архитектуры конечные пользователи в конце концов потребуют развертывания программ в Kubernetes. Чтобы обеспечить это, вам следует объединить свое приложение с Kubernetes API или воспользоваться сторонним решением, таким как ServiceBot, чтобы создать портал для запроса экземпляров.

Специальное определение имени хоста по действиям пользователя

В последнее время растет тенденция к тому, что конечные пользователи подключают свой домен к приложениям. В Kubernetes есть инструменты, облегчающие этот процесс и даже переходящие в режим самообслуживания (пользователи нажимают кнопку, чтобы их домен направлялся на модуль). Для этого можно использовать такую ​​систему как Nginx Ingress.

Вывод

Kubernetes – отличный способ управлять облачной инфраструктурой. Если у вас возникли проблемы с масштабированием программы, подумайте о переходе на архитектуру на основе Kubernetes. Вы увидите значительное повышение производительности DevOps, когда речь идет о развертывании, кластеризации и общей стабильности.

ServiceBot это платформа, которая помогает вам управлять своим SaaS путем автоматизации выставления счетов, развертывания и канала продаж.

Хотите расширить свой SaaS? Давай поговорим.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *