Kubernetes (K8s) — это платформа с открытым исходным кодом для автоматического развёртывания, масштабирования и управления контейнеризированными приложениями. Этот сервис значительно упрощает оркестрацию контейнеров Docker, расширяет их функционал, и помогает сделать всю инфраструктуру более стабильной и масштабируемой.
Недавно мы запустили новый сервис EdgeЦентр Cloud — Managed Kubernetes. Он позволит вам использовать K8s в нашем облаке и управлять контейнерами без лишних усилий.
В этом материале разбираемся, что такое Kubernetes, какую пользу он может принести вашему проекту, и рассказываем о возможностях нашего сервиса.
Контейнеризация — это способ изоляции приложений друг от друга.
Приложение вместе со всеми его зависимостями упаковывается в единый контейнер. Создаётся отдельная среда, которая потребляет строго отведённое ей количество ресурсов.
Это похоже на виртуальные машины в облаке. Но есть несколько существенных отличий.
Чем контейнеры отличаются от виртуальных машин:
Основные плюсы контейнеров:
У контейнеров масса плюсов. Но если их много, появляется проблема — ими достаточно сложно управлять.
Нужно создавать новые контейнеры и удалять ненужные, распределять ресурсы, переносить контейнеры на другие хосты, если ресурсов недостаточно или одна из машин дала сбой, мониторить состояние, обновлять и выполнять ещё множество других задач. Если делать всё это вручную, на это будут уходить все ресурсы команды.
Чтобы решить проблему и автоматизировать оркестрацию контейнеров, создали Kubernetes.
Kubernetes автоматизирует процесс управления контейнерами. С его помощью можно:
При этом Kubernetes реализует декларативный подход. Это значит, что вам не нужно давать системе конкретные команды. Надо только указать, к какому виду всё должно быть приведено. А Kubernetes сам выберет оптимальные способы достижения заданного состояния и через API приведёт инфраструктуру к нужному виду.
1. Автоматизация процессов. Мы уже сказали, что основная задача K8s — автоматизировать управление контейнерами. Сервис упрощает работу, а значит, снимает часть нагрузки с IT-команды.
2. Использование мультиоблака. Kubernetes даёт возможность легко переносить контейнеры с одного хоста на другой и даже использовать несколько облаков в одной инфраструктуре.
Вы можете эффективно распределять нагрузки в облаке, не будете привязаны к одному поставщику и тем самым повысите рентабельность инвестиций в IT.
3. Снижение расходов. K8s автоматически распределяет ресурсы вашей инфраструктуры и выделяет каждому контейнеру столько, сколько нужно. Это помогает избежать перерасхода вычислительных мощностей и лишних трат.
Кроме этого, раз Kubernetes снижает нагрузку на IT-команду, сотрудники вместо администрирования смогут сосредоточиться на более важных задачах и быстрее их решать. Вы упростите процессы тестирования, будете разрабатывать и выводить новые продукты на рынок быстрее и получать больше прибыли.
4. Мгновенное масштабирование. Kubernetes может сокращать или наращивать необходимые вам вычислительные мощности в автоматическом режиме.
5. Большая отказоустойчивость. Если какой-то контейнер дал сбой и перестал отвечать на запросы, K8s сможет быстро его перезапустить. Проверка состояния контейнеров и их перезапуск тоже проходит автоматически, так что команде не нужно тратить на это время.
6. Безболезненное канареечное тестирование. Часто перед выпуском какого-то обновления нужно сначала проверить его на клиентах. Для этого можно запустить обновлённый сервис в тестовом режиме и пустить на него небольшую часть трафика. И если всё работает нормально, постепенно перевести на него основной трафик.
Kubernetes позволяет сделать это очень легко. Вы можете создать копию контейнера, на котором запущено ваше приложение, запустить обновление на копии и постепенно переносить туда трафик с основного контейнера.
Если в процессе тестов обнаружится, что что-то пошло не так, не нужно будет ничего откатывать назад. Вы просто отключаете дублирующий контейнер и возвращаете весь трафик на основной.
7. Безопасное хранение данных. Kubernetes может хранить и управлять конфиденциальной информацией, такой как пароли, OAuth-токены и ключи SSH.
Вы можете развертывать и обновлять конфиденциальную информацию и конфигурацию приложения без изменений образов контейнеров и не раскрывая данные.
Чтобы понять, как всё устроено, давайте разберём основные понятия Kubernetes.
Под — основная единица K8s. Набор из 1 или нескольких контейнеров для совместного развёртывания и связанных с этими контейнерами дополнительных ресурсов.
Дополнительные ресурсы — это то, что помогает контейнерам работать правильно внутри системы. Это могут быть политики перезапуска, информация по выполнению контейнера (например, номера портов или версия контейнера), общее хранилище и другие подобные элементы.
Чаще всего под включает в себя один контейнер. Но их может быть и несколько. Объединять контейнеры в один под нужно, если они тесно связаны между собой: например, на них запущены микросервисы одного приложения, которые выполняют связанные задачи.
Узел (или нода) — виртуальная машина или физический сервер, на котором запускаются контейнеры.
Несколько узлов, связанных между собой, образуют кластер.
Пул — это группа узлов кластера с одинаковыми техническими характеристиками. Совокупность одинаковых машин, на которых работает ваша инфраструктура.
Kubernetes реализует концепцию Master-Slave.
Все узлы делятся на 2 типа:
Master-узел — это главный элемент, который управляет рабочими узлами.
Его основные задачи:
Master-узел можно сравнить с начальником, который отдаёт распоряжения подчинённым и следит за их работой.
А worker-узлы — это и есть подчинённые. На них размещаются и запускаются поды.
Ещё на рабочих узлах есть механизмы, которые проверяют состояние подов, распределяют траффик между ними и выполняют различные команды от master-узла.
Мы перечислили основные компоненты Kubernetes. Конечно, это далеко не всё. Но для общего понимания, как устроен K8s, этого будет достаточно.
Managed Kubernetes — это новый сервис EdgeЦентр Cloud, который позволит вам использовать K8s в инфраструктуре нашего облака и упростит работу с кластерами.
Сервис даёт возможность создавать кластеры, управлять узлами через единую панель EdgeЦентр и автоматизировать процессы ещё больше.
Вы получаете все возможности Kubernetes, гибкую инфраструктуру. А рутинные задачи по развёртыванию кластеров и управлению master-узлами мы берём на себя.
Особенности сервиса:
Кластер пока можно развернуть в пределах 1 дата-центра, но в будущем мы добавим возможность подключать узлы из разных ЦОДов.
В Managed Kubernetes есть возможность автомасштабирования — система будет автоматически увеличивать и уменьшать количество узлов в пуле. Если ресурсов недостаточно, сервис добавит дополнительные виртуальные машины. А если какие-то узлы не будут использоваться дольше 20 минут, они будут удалены.
Вы можете сами настроить минимальное и максимальное количество узлов в пуле. А при желании автомасштабирование можно отключить.
Также мы поддерживаем автолечение — система постоянно мониторит состояние узлов, и, если обнаруживает нерабочий, инициирует его замену. Эта функция позволит увеличить отказоустойчивость вашей инфраструктуры. Но при желании её тоже можно отключить.
Управление сервисом возможно через панель или API. Вы можете:
Если вы уже подключены к EdgeЦентр Cloud, Managed Kubernetes уже доступен в вашей панели управления. Ничего дополнительно подключать не нужно.
Пока сервис находится в режиме бета-тестирования. Поэтому он бесплатный.
В панели управления облаком зайдите в раздел Kubernetes и нажмите «Создать кластер».
Выберите регион, где будет расположен дата-центр, на ресурсах которого будет развёрнут кластер.
Создайте пулы внутри кластера.
Введите имя пула (может быть любым) и укажите стартовое количество узлов. Столько узлов будет запущено внутри этого пула после запуска кластера.
Далее укажите минимальное и максимальное количество узлов. Это нужно для правильной настройки автомасштабирования. Система не опустит количество нод ниже минимального и не увеличит больше максимального.
Если вы не хотите использовать автомасштабирование, просто укажите одинаковое максимальное и минимальное количество узлов. И это значение должно совпадать со стартовым количеством узлов в пуле.
Далее выбираем тип виртуальных машин, которые будут запущены в пуле. Так как пул — это группа узлов с одинаковыми техническими характеристиками, то и тип виртуальной машины мы можем выбрать только один.
Вы можете выбрать любой из 5 типов виртуальных машин:
Далее выбираем размер и тип диска для хранения данных пула.
В качестве типа диска можно выбрать 4 варианта. Они отличаются видом накопителя (SSD или HDD), допустимым количеством IOPS и максимальной пропускной способностью.
Как только вы зададите все перечисленные настройки, пул будет создан.
Вы можете создать столько пулов, сколько вам нужно. Чтобы добавить ещё один пул в кластер, просто нажмите на «Добавить пул» и задайте все настройки, как мы описали выше.
Дальше вы можете включить или выключить автолечение.
После этого включите узлы кластера в приватную сеть и подсеть. Сеть можно выбрать из уже имеющихся или создать новую, нажав на «Добавить сеть».
Дальше вам нужно добавить SSH-ключ для подключения к узлам кластера. Вы можете выбрать один из ключей, который уже добавлен к вашему аккаунту, или создать новый.
В завершении вам нужно будет указать имя кластера (может быть любым).
И перепроверить все настройки кластера в правой части экрана.
Нажимаем «Создать кластер». И всё готово! Кластер будет запущен через несколько минут.
Итак, мы создали кластер. Теперь он отображается в разделе Kubernetes в панели управления.
В него можно внести изменения. Для этого кликните на название.
Вы попадёте в раздел с информацией о кластере, где будет указано его состояние, статус, количество пулов и узлов. На вкладке «Пулы» отображается список всех пулов с основной информацией. Любой из них вы можете отредактировать:
Вы также можете добавить ещё один пул в кластер. На вкладке «Пулы» в конце списка будет кнопка «Добавить пул». Нажмите на неё. Новый пул создаётся точно так же, как и при создании кластера.
Вы можете самостоятельно проверять, какая нагрузка идёт на каждый узел.
Для этого на вкладке «Пулы» выберите нужный и кликните на стрелочку напротив него. Развернётся список узлов. Кликните на нужный.
Перейдите на вкладку «Мониторинг».
Вы увидите графики и 2 кнопки над ними. Левая настраивает, за какой период отображать данные, а правая — как часто информация будет обновляться на вашем экране.
Статистика отображается по 10 метрикам.
Пример одного из таких графиков:
Подробнее о работе с Managed Kubernetes читайте в нашей базе знаний, в разделе Kubernetes.
Мы совершенствуем наши облачные сервисы, чтобы наши клиенты могли развивать свой бизнес ещё быстрее и дешевле. Удобное и технологичное облако позволит решать ваш бизнес-задачи без лишних затрат и усилий.