Что представляет собой Служба Azure Kubernetes?
Начнем с нескольких определений и краткого тура по Служба Azure Kubernetes (AKS). В этом обзоре содержатся сведения, которые помогут вам решить, является ли AKS хорошей платформой для стратегии управления контейнерами.
Что такое контейнер?
Контейнер — это неделимая единица программного обеспечения, в которой упаковывается код, зависимости и конфигурация определенного приложения. Контейнеры позволяют делить монолитные приложения на отдельные службы, составляющие решение. Это переключение приложения позволяет развертывать эти отдельные службы через контейнеры.
Причины использования контейнеров
Предположим, что решение для отслеживания активов включало три основных приложения:
Веб-сайт отслеживания, содержащий карты и сведения о отслеживаемых ресурсах
Служба обработки данных, которая собирает и обрабатывает информацию, отправляемую из отслеживаемых ресурсов
База данных MSSQL для хранения сведений о клиентах, полученных с веб-сайта
Вы понимаете, что для удовлетворения потребностей клиентов необходимо масштабировать решение.
Виртуальные машины (ВМ)
Одним из вариантов является развертывание новой виртуальной машины для каждого приложения, размещенного в нескольких регионах. Затем скопируйте приложения на новые виртуальные машины. Однако это делает вас ответственным за управление каждой используемой виртуальной машиной.
Затраты на обслуживание увеличиваются по мере масштабирования. Необходимо подготовить и настроить версии и зависимости операционной системы виртуальной машины для соответствия каждому приложению. При применении обновлений для приложений, влияющих на ОС и основные изменения, существуют меры предосторожности. Если во время обновления возникают какие-либо ошибки, необходимо выполнить откат установки, что приводит к перебоям, таким как простой или задержки.
Развертывание на предыдущей схеме является громоздким, иногда подверженным ошибкам, и не легко масштабировать отдельные службы. Например, невозможно легко масштабировать только службу кэширования, используемую в веб-приложении. Контейнеры позволяют решить такие проблемы.
Концепция контейнера дает нам четыре основных преимущества:
неизменяемость: неизменяемая природа контейнера позволяет ему разворачиваться и выполняться надежно с одинаковым поведением в различных вычислительных средах. Образ контейнера, протестированный в среде контроля качества, ничем не отличается от образа, развертываемого в рабочей среде.
меньшего размера: контейнер похож на виртуальную машину, но без ядра для каждого компьютера. Вместо этого они совместно используют ядро узла. Виртуальные машины используют большой файл образа для хранения ОС и приложения, которое вы хотите запустить. В контейнер же включать ОС не требуется. Он должен содержать только приложение.
легкий: контейнер всегда зависит от установленной на хосте ОС для сервисов, зависящих от ядра. Упрощенное свойство делает контейнеры менее ресурсоемкими, поэтому установка нескольких контейнеров возможна в одной вычислительной среде.
запуск выполняется быстро: контейнеры запускаются в течение нескольких секунд, в отличие от виртуальных машин, запуск которых может занять несколько минут.
Эти преимущества делают контейнеры популярным выбором для разработчиков и ИТ-операций, и почему многие из них переключаются с виртуальных машин.
Что такое управление контейнерами?
Несмотря на то, что контейнеры функционально похожи на виртуальные машины, их цели различаются. Контейнер имеет отдельный жизненный цикл, который существует как временный компьютер. Его состояние проходит через этапы ожидания, выполнения и завершения. Этот жизненный цикл делает контейнеры более заменяемыми и оказывает влияние на то, как разработчики и ИТ-специалисты подходят к управлению крупными взаимосвязанными приложениями. Управление контейнерами включает развертывание, обновление, мониторинг и удаление контейнеров.
Например, предположим, что в полудне есть больше трафика сайта, поэтому для управления производительностью требуется больше экземпляров службы кэширования сайта. Вы планируете решить эту проблему, добавив дополнительные контейнеры службы кэширования.
Теперь пришло время развернуть новую версию службы кэширования. Как обновить все контейнеры? Как удалить все старые версии?
Эти типы вопросов балансировки нагрузки требуют системы для управления развертыванием контейнера.
Что такое Kubernetes?
Kubernetes — это переносимая, расширяемая платформа с открытым кодом, которая автоматизирует развертывание, масштабирование и управление контейнерными рабочими нагрузками. Kubernetes абстрагирует комплексное управление контейнерами и предоставляет декларативную конфигурацию для оркестрации контейнеров в разных вычислительных средах. Эта платформа оркестрации настолько же проста и гибка в использовании, как и предложения "платформа как услуга" (PaaS) и "инфраструктура как услуга" (IaaS).
Kubernetes позволяет представить центр обработки данных как один компьютер. Вам не нужно беспокоиться о том, как и где развертываются контейнеры. Ваша задача заключается лишь в развертывании и масштабировании приложений по мере необходимости.
Ниже приведены некоторые дополнительные аспекты, которые следует учитывать в Kubernetes:
Платформа Kubernetes не является полноценным предложением PaaS. Она работает на уровне контейнеров и обеспечивает только основные возможности PaaS.
Платформа Kubernetes не является монолитной. Это не одно установленное приложение. Компоненты, отвечающие за такие аспекты, как развертывание, масштабирование, балансировка нагрузки, ведение журналов и мониторинг, добавляются по мере необходимости.
Kubernetes не ограничивает типы приложений, которые можно запустить. Если приложение может работать в контейнере, оно выполняется в Kubernetes.
Разработчики должны понимать такие понятия, как архитектура микрослужб, чтобы обеспечить оптимальное использование решений контейнеров.
Kubernetes не предоставляет промежуточное программное обеспечение, платформы обработки данных, базы данных, кэши или кластерные системы хранения. Все эти компоненты добавляются как контейнеры или в составе другого предложения.
Развертывание Kubernetes настраивается как кластер. Кластер состоит по крайней мере из одного первичного компьютера или плоскости управления и одного или нескольких рабочих компьютеров. Для рабочих развертываний предпочтительная конфигурация — это развертывание с высоким уровнем доступности с тремя до пяти реплицированных компьютеров уровня управления, которые называются узлами или узлами агента.
Со всеми преимуществами, которые вы получаете с Kubernetes, вы несете ответственность за поиск оптимального решения, которое соответствует вашим потребностям в решении этих аспектов. Помните, что вы несете ответственность за обслуживание кластера Kubernetes. Например, вам необходимо управлять обновлением ОС, а также установкой и обновлением самой платформы Kubernetes. Кроме того, вы управляете конфигурацией оборудования узлов, в том числе сетевого оборудования, памяти и хранилища.
Примечание.
Kubernetes иногда сокращенно обозначается K8s. Цифра 8 обозначает 8 символов между буквами "K" и "s" в слове K[ubernete]s.
Что такое Служба Azure Kubernetes (AKS)?
AKS управляет размещенной средой Kubernetes и упрощает развертывание контейнерных приложений и управление ими в Azure. Среда AKS обладает такими возможностями, как автоматическое обновление, самовосстановление и легкое масштабирование. Azure управляет плоскостью управления кластера Kubernetes бесплатно. Вы управляете узлами агентов в кластере и платите только за те виртуальные машины, в которых выполняются эти узлы.
Вы можете создать кластер и управлять ими в портал Azure или с помощью Azure CLI. При создании кластера существуют шаблоны Resource Manager для автоматизации создания кластера. С помощью этих шаблонов у вас есть доступ к таким функциям, как расширенные параметры сети, удостоверение Microsoft Entra и мониторинг ресурсов. Затем можно настроить триггеры и события для автоматизации развертывания кластера для нескольких сценариев.
С помощью AKS вы получаете преимущества Kubernetes с открытым исходным кодом без дополнительной сложности или эксплуатационных накладных расходов, которые могут влечь за собой только Kubernetes.