Внимание
У Вас отключена поддержка Cookie в браузере. Возможно некорректное отображение сайта!

Managed Kubernetes: новый сервис облака

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

Недавно мы запустили новый сервис G‑Core Labs CloudManaged Kubernetes. Он позволит вам использовать K8s в нашем облаке и управлять контейнерами без лишних усилий.

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

Что такое контейнеры и зачем ими управлять

Контейнеризация — это способ изоляции приложений друг от друга.

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

Это похоже на виртуальные машины в облаке. Но есть несколько существенных отличий.

Чем контейнеры отличаются от виртуальных машин:

  • Виртуальная машина выступает как аналог полноценного сервера со своими аппаратными ресурсами, виртуальным процессором и другими компонентами. А контейнер всего лишь изолирует приложение и всё, что с ним связано.
  • У виртуальной машины собственная ОС. А контейнер использует операционную систему и общее ядро хоста.
  • Контейнеры легче. На одном и том же сервере их можно запустить в несколько раз больше, чем ВМ. Плюс сами контейнеры могут быть развёрнуты в облаке, на виртуальных машинах.

 

Managed Kubernetes: новый сервис облака

 

Основные плюсы контейнеров:

  • Идеально подходят для микросервисной архитектуры. Это подход, когда приложение разбивается на несколько относительно независимых компонентов — микросервисов. Это позволяет ускорить разработку и повысить отказоустойчивость сервиса в целом. Чтобы внести изменение в один из компонентов, не нужно останавливать всё приложение целиком.
  • Упрощают перенос приложения на другой сервер. Вы сможете развернуть уже созданный контейнер на любой машине, где установлен Docker, буквально за пару кликов. А всю инфраструктуру ваших сервисов можно развернуть на нескольких хостах.
  • Безопасны для основной операционной системы. Так как приложение в контейнере изолировано, его баги и сбои никак не отразятся на других программах или работе сервера в целом.

У контейнеров масса плюсов. Но если их много, появляется проблема — ими достаточно сложно управлять.

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

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

Что такое Kubernetes

Managed Kubernetes: новый сервис облака

Kubernetes автоматизирует процесс управления контейнерами. С его помощью можно:

  • легко масштабировать инфраструктуру, создавать новые контейнеры и удалять ненужные ресурсы;
  • перезапускать и обновлять контейнеры;
  • следить за их состоянием;
  • распределять ресурсы между контейнерами и балансировать трафик, etc.

При этом Kubernetes реализует декларативный подход. Это значит, что вам не нужно давать системе конкретные команды. Надо только указать, к какому виду всё должно быть приведено. А Kubernetes сам выберет оптимальные способы достижения заданного состояния и через API приведёт инфраструктуру к нужному виду.

Основные преимущества Kubernetes

Managed Kubernetes: новый сервис облака

1. Автоматизация процессов. Мы уже сказали, что основная задача K8s — автоматизировать управление контейнерами. Сервис упрощает работу, а значит, снимает часть нагрузки с IT-команды.

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

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

3. Снижение расходов. K8s автоматически распределяет ресурсы вашей инфраструктуры и выделяет каждому контейнеру столько, сколько нужно. Это помогает избежать перерасхода вычислительных мощностей и лишних трат.

Кроме этого, раз Kubernetes снижает нагрузку на IT-команду, сотрудники вместо администрирования смогут сосредоточиться на более важных задачах и быстрее их решать. Вы упростите процессы тестирования, будете разрабатывать и выводить новые продукты на рынок быстрее и получать больше прибыли.

4. Мгновенное масштабирование. Kubernetes может сокращать или наращивать необходимые вам вычислительные мощности в автоматическом режиме.

5. Большая отказоустойчивость. Если какой-то контейнер дал сбой и перестал отвечать на запросы, K8s сможет быстро его перезапустить. Проверка состояния контейнеров и их перезапуск тоже проходит автоматически, так что команде не нужно тратить на это время.

6. Безболезненное канареечное тестирование. Часто перед выпуском какого-то обновления нужно сначала проверить его на клиентах. Для этого можно запустить обновлённый сервис в тестовом режиме и пустить на него небольшую часть трафика. И если всё работает нормально, постепенно перевести на него основной трафик.

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

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

7. Безопасное хранение данных. Kubernetes может хранить и управлять конфиденциальной информацией, такой как пароли, OAuth-токены и ключи SSH.

Вы можете развертывать и обновлять конфиденциальную информацию и конфигурацию приложения без изменений образов контейнеров и не раскрывая данные.

Как устроен Kubernetes

Чтобы понять, как всё устроено, давайте разберём основные понятия Kubernetes.

Под — основная единица K8s. Набор из 1 или нескольких контейнеров для совместного развёртывания и связанных с этими контейнерами дополнительных ресурсов.

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

Managed Kubernetes: новый сервис облака

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

Узел (или нода) — виртуальная машина или физический сервер, на котором запускаются контейнеры.

Несколько узлов, связанных между собой, образуют кластер.  

Managed Kubernetes: новый сервис облака

Пул — это группа узлов кластера с одинаковыми техническими характеристиками. Совокупность одинаковых машин, на которых работает ваша инфраструктура.

Kubernetes реализует концепцию Master-Slave.

Все узлы делятся на 2 типа:

  • master-узел;
  • worker-узел (рабочий узел).

Master-узел — это главный элемент, который управляет рабочими узлами.

Его основные задачи:

  • Распределять поды по узлам, чтобы всем хватило ресурсов.
  • Контролировать состояние кластера в целом.
  • Обеспечивать взаимодействие с кластером, отдавать команды разным его элементам.

Master-узел можно сравнить с начальником, который отдаёт распоряжения подчинённым и следит за их работой.

А worker-узлы — это и есть подчинённые. На них размещаются и запускаются поды.

Ещё на рабочих узлах есть механизмы, которые проверяют состояние подов, распределяют траффик между ними и выполняют различные команды от master-узла. 

Managed Kubernetes: новый сервис облака

Мы перечислили основные компоненты Kubernetes. Конечно, это далеко не всё. Но для общего понимания, как устроен K8s, этого будет достаточно.

Что такое Managed Kubernetes

Managed Kubernetes — это новый сервис G‑Core Labs Cloud, который позволит вам использовать K8s в инфраструктуре нашего облака и упростит работу с кластерами.

Сервис даёт возможность создавать кластеры, управлять узлами через единую панель G‑Core Labs и автоматизировать процессы ещё больше.

Вы получаете все возможности Kubernetes, гибкую инфраструктуру. А рутинные задачи по развёртыванию кластеров и управлению master-узлами мы берём на себя.

Особенности сервиса:

  • У вас есть доступ только к рабочим узлам. А master-узел контролируют наши администраторы. Вы не тратите время на рутину и можете сосредоточиться на разработке.
  • Создать и настроить кластер под ваши задачи вы можете в панели управления. Вы сами определяете количество рабочих узлов, настраиваете автомасштабирование и автолечение.
  • В качестве рабочих узлов сейчас используются наши виртуальные машины. Но в будущем мы планируем внедрить возможность добавлять в кластеры и Bare Metal серверы.
  • Мы используем версию Kubernetes 1.20.6. Если выйдет новая версия, вы сможете обновиться до неё без потери данных всего за пару кликов в панели управления.
  • Архитектура Managed Kubernetes в G‑Core Labs Cloud
    Архитектура Managed Kubernetes в G‑Core Labs Cloud

    Кластер пока можно развернуть в пределах 1 дата-центра, но в будущем мы добавим возможность подключать узлы из разных ЦОДов.

    В Managed Kubernetes есть возможность автомасштабирования — система будет автоматически увеличивать и уменьшать количество узлов в пуле. Если ресурсов недостаточно, сервис добавит дополнительные виртуальные машины. А если какие-то узлы не будут использоваться дольше 20 минут, они будут удалены.

    Вы можете сами настроить минимальное и максимальное количество узлов в пуле. А при желании автомасштабирование можно отключить.

    Также мы поддерживаем автолечение — система постоянно мониторит состояние узлов, и, если обнаруживает нерабочий, инициирует его замену. Эта функция позволит увеличить отказоустойчивость вашей инфраструктуры. Но при желании её тоже можно отключить.

    Управление сервисом возможно через панель или API. Вы можете:

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

    Как подключить новый сервис

    Если вы уже подключены к G‑Core Labs Cloud, Managed Kubernetes уже доступен в вашей панели управления. Ничего дополнительно подключать не нужно.

    Пока сервис находится в режиме бета-тестирования. Поэтому он бесплатный.

    Как пользоваться Managed Kubernetes

    1. Создаём кластер

    В панели управления облаком зайдите в раздел Kubernetes и нажмите «Создать кластер». 

    Как создать кластер с помощью Managed Kubernetes
    Как создать кластер с помощью Managed Kubernetes

    Выберите регион, где будет расположен дата-центр, на ресурсах которого будет развёрнут кластер. 

    Выбор региона при создании кластера с помощью Managed Kubernetes
    Выбор региона при создании кластера с помощью Managed Kubernetes

    Создайте пулы внутри кластера. 

    Добавление пула при создании кластера с помощью Managed Kubernetes в G‑Core Labs Cloud
    Добавление пула при создании кластера с помощью Managed Kubernetes в G‑Core Labs Cloud

    Введите имя пула (может быть любым) и укажите стартовое количество узлов. Столько узлов будет запущено внутри этого пула после запуска кластера.

    Далее укажите минимальное и максимальное количество узлов. Это нужно для правильной настройки автомасштабирования. Система не опустит количество нод ниже минимального и не увеличит больше максимального. 

    Настройка стартового количества узлов и автомасштабирования при создании кластера с помощью Managed Kubernetes
    Настройка стартового количества узлов и автомасштабирования при создании кластера с помощью Managed Kubernetes

    Если вы не хотите использовать автомасштабирование, просто укажите одинаковое максимальное и минимальное количество узлов. И это значение должно совпадать со стартовым количеством узлов в пуле.

    Далее выбираем тип виртуальных машин, которые будут запущены в пуле. Так как пул — это группа узлов с одинаковыми техническими характеристиками, то и тип виртуальной машины мы можем выбрать только один. 

    Выбор типа виртуальных машин в пуле при создании кластера с помощью Managed Kubernetes
    Выбор типа виртуальных машин в пуле при создании кластера с помощью Managed Kubernetes

    Вы можете выбрать любой из 5 типов виртуальных машин:

    • Стандартные — гигабайт памяти в них в 2–4 раза больше, чем vCPU.
    • CPU — в этих машинах количество vCPU и количество гигабайт памяти одинаковое.
    • Память — машины с большим объёмом памяти, в 8 раз больше, чем vCPU.
    • Высокочастотные — с тактовой частотой процессора 3,37 ГГц в базовой конфигурации.
    • SGX — с поддержкой технологии Intel SGX.

    Далее выбираем размер и тип диска для хранения данных пула. 

    Настройка диска в пуле при создании кластера с помощью Managed Kubernetes
    Настройка диска в пуле при создании кластера с помощью Managed Kubernetes

    В качестве типа диска можно выбрать 4 варианта. Они отличаются видом накопителя (SSD или HDD), допустимым количеством IOPS и максимальной пропускной способностью.

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

    Вы можете создать столько пулов, сколько вам нужно. Чтобы добавить ещё один пул в кластер, просто нажмите на «Добавить пул» и задайте все настройки, как мы описали выше. 

    Добавление пула при создании кластера с помощью Managed Kubernetes
    Добавление пула при создании кластера с помощью Managed Kubernetes

    Дальше вы можете включить или выключить автолечение.

    Добавление пула при создании кластера с помощью Managed Kubernetes
    Настройка автолечения при создании кластера с помощью Managed Kubernetes

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

    Настройка сети при создании кластера с помощью Managed Kubernetes
    Настройка сети при создании кластера с помощью Managed Kubernetes

    Дальше вам нужно добавить SSH-ключ для подключения к узлам кластера. Вы можете выбрать один из ключей, который уже добавлен к вашему аккаунту, или создать новый. 

    Добавление SSH-ключа при создании кластера с помощью Managed Kubernetes
    Добавление SSH-ключа при создании кластера с помощью Managed Kubernetes

    В завершении вам нужно будет указать имя кластера (может быть любым). 

    Как указать имя кластера в Managed Kubernetes
    Как указать имя кластера в Managed Kubernetes

    И перепроверить все настройки кластера в правой части экрана. 

    Настройки кластера в Managed Kubernetes
    Настройки кластера в Managed Kubernetes

    Нажимаем «Создать кластер». И всё готово! Кластер будет запущен через несколько минут.

    2. Редактируем пулы

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

    Запущенные кластеры в Managed Kubernetes облака G‑Core Labs
    Запущенные кластеры в Managed Kubernetes облака G‑Core Labs

    В него можно внести изменения. Для этого кликните на название.

    Вы попадёте в раздел с информацией о кластере, где будет указано его состояние, статус, количество пулов и узлов. На вкладке «Пулы» отображается список всех пулов с основной информацией. Любой из них вы можете отредактировать:

    • Переименовать.
    • Изменить текущее количество узлов (в пределах автомасштабирования).
    • Редактировать пределы автомасштабирования.
    • Удалить пул. 

    Редактирование пулов в Managed Kubernetes
    Редактирование пулов в Managed Kubernetes

    Вы также можете добавить ещё один пул в кластер. На вкладке «Пулы» в конце списка будет кнопка «Добавить пул». Нажмите на неё. Новый пул создаётся точно так же, как и при создании кластера. 

    Добавление пулов в Managed Kubernetes
    Добавление пулов в Managed Kubernetes

    3. Проверяем нагрузку на узлы

    Вы можете самостоятельно проверять, какая нагрузка идёт на каждый узел.

    Для этого на вкладке «Пулы» выберите нужный и кликните на стрелочку напротив него. Развернётся список узлов. Кликните на нужный. 

    Как проверить нагрузку на узлы в кластере с помощью Managed Kubernetes облака G‑Core Labs — шаг 1
    Как проверить нагрузку на узлы в кластере с помощью Managed Kubernetes облака G‑Core Labs — шаг 1

    Перейдите на вкладку «Мониторинг». 

    Как проверить нагрузку на узлы в кластере с помощью Managed Kubernetes — шаг 2
    Как проверить нагрузку на узлы в кластере с помощью Managed Kubernetes — шаг 2

    Вы увидите графики и 2 кнопки над ними. Левая настраивает, за какой период отображать данные, а правая — как часто информация будет обновляться на вашем экране. 

    Настройка отображения данных о нагрузке на узел в Managed Kubernetes облака G‑Core Labs
    Настройка отображения данных о нагрузке на узел в Managed Kubernetes облака G‑Core Labs

    Статистика отображается по 10 метрикам.

    • CPU Utilization — нагрузка на процессор в процентах.
    • RAM Utilization — сколько процентов оперативной памяти использует узел.
    • Network BPS ingress — скорость приёма входящего трафика в байтах в секунду.
    • Network BPS egress — скорость передачи исходящего трафика в байтах в секунду.
    • Network PPS ingress — скорость приёма входящего трафика в пакетах в секунду.
    • Network PPS egress — скорость передачи исходящего трафика в пакетах в секунду.
    • sda/Disk IOPS read — скорость чтения информации с диска в количестве операций в секунду.
    • sda/Disk IOPS write — скорость записи данных на диск в количестве операций в секунду.
    • sda/Disk BPS read и sda/Disk BPS write — то же самое, что и 2 предыдущие метрики, только в количестве переданных байт в секунду.

    Пример одного из таких графиков: 

    Пример графика данных нагрузки на узлы в Managed Kubernetes
    Пример графика данных нагрузки на узлы в Managed Kubernetes

    Подробнее о работе с Managed Kubernetes читайте в нашей базе знаний, в разделе Kubernetes.

    Подведём итоги

    1. Контейнеризация приложений приносит много плюсов и идеально подходит для микросервисной архитектуры. Но когда в вашей инфраструктуре много контейнеров, ими сложно управлять вручную.
    2. Чтобы автоматизировать процессы управления контейнерами, создали Kubernetes.
    3. K8s снижает нагрузку на IT-команду, упрощает развёртывание инфраструктуры в мультиоблаке, помогает снижать расходы, упрощает масштабирование и тестирование приложений.
    4. Основная единица Kubernetes — под (группа из 1 или нескольких контейнеров). Поды размещаются на узлах — виртуальных или физических машинах. А связанные между собой узлы образуют кластер. В кластере есть master-узел, который управляет worker-узлами.
    5. Managed Kubernetes — это новый сервер G‑Core Labs Cloud, который позволяет использовать Kubernetes в инфраструктуре нашего облака и ещё больше упрощает работу с ним.
    6. Наш новый сервис позволяет вам сосредоточиться на разработке. А все рутинные операции, связанные с master-узлами и развёртыванием кластеров мы берём на себя.
    7. Создать кластер, настроить его под свои задач и управлять им вы можете через простую и удобную панель.
    8. Пока сервис находится в режиме бета-тестирования, поэтому пользоваться им можно бесплатно.

    Мы совершенствуем наши облачные сервисы, чтобы наши клиенты могли развивать свой бизнес ещё быстрее и дешевле. Удобное и технологичное облако позволит решать ваш бизнес-задачи без лишних затрат и усилий.

Подпишитесь на полезную рассылку

Выгодные предложения и важные новости раз в месяц. Без спама