Что такое оркестрация контейнеров

Что такое оркестрация контейнеров

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

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

Существуют различные платформы для оркестрации контейнеров. Они позволяют реализовать удобные и эффективные средства развертывания контейнерных систем, построения единой централизованной консоли для применения политик управления. Наиболее известны следующие системы: Kubernetes, Docker Swarm и Apache Mesos. Это не единственные системы — есть еще Nomad, Fleet, Aurora, Amazon EC2 Container Service, Microsoft Azure Container Service, однако они менее популярны.

Kubernetes — универсальный солдат

Kubernetes — для управления контейнерными кластерами. Появилась в результате наработок Google при использовании механизма для изоляции процессов в виртуальной среде (Borg). В 2014 г. Google открыла код Kubernetes и стала распространять систему под лицензией Apache 2.0.

Благодаря тому, что Google открыла код и сделала свою систему оркестрации открытой, она стала самой популярной. Сегодня многие рассматривают ее как лучшее и универсальное решение для работы с приложениями в облачной среде. Платформу оркестрации поддерживают такие именитые вендоры как Red Hat, IBM, CoreOS и др.

Источник

ИТ База знаний

Полезно

— Онлайн генератор устойчивых паролей

— Онлайн калькулятор подсетей

— Руководство администратора FreePBX на русском языке

— Руководство администратора Cisco UCM/CME на русском языке

— Руководство администратора по Linux/Unix

Навигация

Серверные решения

Телефония

FreePBX и Asterisk

Настройка программных телефонов

Корпоративные сети

Протоколы и стандарты

14 инструментов оркестрации контейнеров для DevOps

Отличная возможность побыть в роли дирижера

Что такое оркестрация контейнеров?

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

Онлайн курс по Linux

Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps

Управление жизненным циклом контейнера и управление самим контейнером становится чрезвычайно трудным, когда число постоянно увеличивается по мере увеличения спроса.

Это процесс управления и организации архитектуры нескольких контейнеров и микросервисов в масштабе.

К счастью, на рынке имеется много инструментов для оркестрации контейнеров. Давайте рассмотрим их!

1. Kubernetes

API Kubernetes помогает установить связь между пользователями, компонентами кластера и внешними компонентами сторонних производителей. Уровень управления Kubernetes и сами узлы выполняются на группе узлов, которые вместе образуют кластер. Рабочая нагрузка приложения состоит из одного или нескольких модулей, которые выполняются на узле (узлах) Worker. Уровень управления контролирует группы контейнеров (Pod-ы) и рабочие узлы.

Такие компании, как Babylon, Booking.com, AppDirect широко используют Kubernetes.

Особенности

2. OpenShift

Redhat предлагает OpenShift Container Platform как сервис (PaaS). Он помогает автоматизировать приложения на безопасных и масштабируемых ресурсах в гибридных облачных средах. Он предоставляет платформы корпоративного уровня для создания, развертывания и управления контейнерными приложениями.

Сервис построен на движке Redhat Enterprise Linux и Kubernetes. Openshift имеет различные функциональные возможности для управления кластерами через интерфейс пользователя и интерфейс командной строки. Redhat предоставляет Openshift еще в двух вариантах,

3. Nomad

Разработчики используют декларативную инфраструктуру как код (IaC) для развертывания своих приложений и определяют способ развертывания приложения. Nomad автоматически восстанавливает приложения после сбоев.

Nomad подходит для оркестрации любого типа приложений (не только контейнеры). Она обеспечивает первоклассную поддержку Docker, Windows, Java, виртуальных машин и многого другого.

Особенности

4. Docker Swarm

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

Для взаимодействия с кластером используются команды Docker. Машины, которые присоединяются к кластеру, называются узлами, а управление действиями кластера осуществляет менеджер Swarm.

Особенности

5. Docker Compose

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

Для настройки служб приложения можно использовать файл YAML (dockerfile). Затем с помощью команды docker-compose up можно создать и запустить все службы из конфигурации.

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

Docker Engine может быть автономным экземпляром, подготовленным с помощью Docker Machine, или целым кластером Docker Swarm.

Особенности

6. MiniKube

Minikube позволяет пользователям запускать Kubernetes локально. С помощью Minikube можно локально тестировать приложения внутри одноузлового кластера Kubernetes на персональном компьютере. В Minikube интегрирована поддержка Kubernetes Dashboard.

Minikube работает под управлением последнего стабильного выпуска Kubernetes и поддерживает следующие функции:

7. Marathon

Marathon предназначен для Apache Mesos, который может организовывать как приложения, так и фреймворки.

Планировщик Marathon использует ZooKeeper для поиска текущего хозяина для отправки заданий. Планировщик Marathon и мастер имеют второго мастера, чтобы обеспечить высокую доступность. Клиенты взаимодействуют с Marathon с помощью REST API.

Особенности

8. Cloudify

Его можно легко интегрировать с менеджерами контейнеров на базе Docker и самим Docker, включая следующие:

Cloudify помогает создавать, восстанавливать, масштабировать и удалять кластеры контейнеров. Оркестровка контейнеров является ключевым фактором в обеспечении масштабируемой и высокодоступной инфраструктуры, на которой могут работать менеджеры контейнеров. Cloudify обеспечивает возможность управления разнородными службами между платформами. Приложения можно развернуть с помощью CLI и Cloudify Manager.

9. Rancher

Rancher 2.x позволяет управлять кластерами Kubernetes, работающими на указанных клиентом поставщиках.

Подготовка хоста Linux

Подготовьте узел Linux с 64-разрядным Ubuntu 16.04 или 18.04 (или другим поддерживаемым дистрибутивом Linux, и не менее 4GB памяти. Установите поддерживаемую версию Docker на узел.

Запуск сервера

Чтобы установить и запустить Rancher, выполните следующую команду Docker на хосте:

Пользовательский интерфейс Rancher позволяет управлять тысячами кластеров и узлов Kubernetes.

10. Containership

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

Читайте также:  Что такое вощеная бумага чем можно заменить для компрессов

Containership построена с использованием облачных инструментов, таких как Terraform для выделения ресурсов, Prometheus для мониторинга и Calico для управления сетями и политиками. Он построен на чистом Kubernetes. Платформа Containership предлагает интуитивно понятную панель управления, а также мощный REST API для коплексной автоматизации.

Особенности

11. AZK

AZK использует контейнеры вместо виртуальных машин. Контейнеры подобны виртуальным машинам с более высокой производительностью и более низким потреблением физических ресурсов.

Файлы Azkfile.js можно повторно использовать для добавления новых компонентов или создания новых с нуля. Он может использоваться совместно, что обеспечивает полный паритет между средами разработки на разных машинах программистов и снижает вероятность ошибок во время развертывания.

12. GKE

GKE предоставляет полностью управляемое решение для оркестровки контейнерных приложений на Google Cloud Platform. Кластеры GKE созданы на основе Kubernetes. Вы можете взаимодействовать с кластерами с помощью Kubernetes CLI. Команды Kubernetes можно использовать для развертывания приложений и управления ими, выполнения задач администрирования, установки политик и мониторинга работоспособности развернутых рабочих нагрузок.

Расширенные функции управления Google Cloud также доступны с кластерами GKE, такими как балансировка нагрузки Google Cloud, пулы узлов, автоматическое масштабирование узлов, автоматическое обновление, автоматическое восстановление узлов, ведение журнала и мониторинг с помощью операционного пакета Google Cloud.

13. AKS

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

AKS бесплатен; вы платите только за узлы агентов в кластере, а не за мастер узеал. Кластер AKS можно создать на портале Azure или программно. Azure также поддерживает дополнительные функции, такие как расширенные сетевые возможности, интеграция Azure с Active Directory и мониторинг с помощью Azure Monitor.

AKS также поддерживает контейнеры Windows Server. Производительность кластера и развернутых приложений можно контролировать с помощью Azure Monitor. Журналы хранятся в рабочей области Azure Log Analytics.

AKS сертифицирован как как совместимый с Kubernetes.

14. AWS EKS

AWS позволяет использовать дополнительные функции EKS, такие как Amazon CloudWatch, Amazon Virtual Private Cloud (VPC), AWS Identity, группы автоматического масштабирования и управление доступом (IAM), приложения мониторинга, масштабирования и балансировки нагрузки. EKS интегрируется с сеткой AWS App и предлагает собственный опыт Kubernetes. EKS работает под управлением последнего Kubernetes и сертифицирован как совместимый с Kubernetes

Заключение

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

Онлайн курс по Linux

Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps

Источник

Что такое системы оркестрации контейнеров

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

Например, чтобы быстрее и дешевле релизить приложения и выкатывать обновления к ним, среди прочего применяют DevOps-подход, микросервисы, контейнеризацию. И системы, чтобы всем этим дирижировать, — о них и расскажем.

Системы оркестрации контейнеров: что это и кому подходит

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

То есть программы-оркестраторы управляют жизненными циклами контейнеров микросервисных приложений. Но не только. Так как в разработке приложений все взаимосвязано, то системы оркестрации помогают еще автоматизировать различные производственные процессы, поэтому команды DevOps интегрируют их в CI/CD. Посмотрим, какие задачи берут на себя оркестраторы.

Задачи оркестраторов контейнеров

Это установка приложения и его зависимостей на сервер, включая подготовку этого сервера — установку библиотек, служб и так далее.

Это часть подготовки сервера, а именно его настройка с помощью специальных программ-планировщиков. Их применяют не только для микросервисных приложений, но и для монолитных. Инструменты управления конфигурацией обычно используют «факты», чтобы убедиться в достоверности данных о сервере: например, «убедитесь, что /etc/my.cnf содержит то-то…» или «NGinX должен работать со следующими файлами конфигурации». Оркестраторы содержат в себе такие планировщики, их не надо ставить отдельно.

Для развертывания приложения в продакшен-кластере требуется выделить вычислительные ресурсы сервера для различных процессов: это объемы памяти (RAM) и центрального процессора (CPU). Устанавливаются запрашиваемые и предельные параметры, правила при достижении контейнерами ресурсных лимитов, различные ограничения. Это важно для поддержания приложения в рабочем состоянии и сведения затрат к минимуму.

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

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

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

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

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

Несколько примеров систем оркестрации контейнеров

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

Kubernetes

Эта портативная платформа с открытым исходным кодом считается отраслевым стандартом. Поддерживает и декларативную конфигурацию объектов, и автоматизацию. Можно автоматизировать масштабирование, развертывание с помощью шаблонов и управление рабочей нагрузкой и сервисами контейнеров. Поддерживает ОС: Windows, macOS, Linux.

OpenShift Container Platform

Платформа корпоративного уровня в формате PaaS для разработки, развертывания и управления не только контейнерными, но и классическими приложениями и их компонентами в режиме самообслуживания. Позволяет автоматизировать их в физических, виртуальных и общедоступных, частных и гибридных облачных средах. Поддержка ОС: Linux.

Docker Swarm

Это «родная», базовая система кластеризации и оркестровки контейнеров Docker. Использует декларативную модель. Взаимодействие с кластером происходит через команды Docker, а управление действиями — через менеджер Swarm. Поддержка ОС: Windows, macOS, Linux.

Nomad

Легкий в поддержке, гибкий, расширяемый оркестратор для развертывания и управления контейнерными и классическими приложениями в физической или облачной среде. Поддерживает ОС: Linux, Windows, macOS, а также Docker, Java, виртуальные машины. В основном Nomad управляет деплоями и перезапускает контейнеры при обнаружении ошибок. Этого часто оказывается достаточно для небольших независимых проектов.

Читайте также:  Что такое расчет в экономике

Rancher

Платформа для управления контейнерами в облачной или физической производственной среде с открытым исходным кодом. Включает в себя использование всех популярных на сегодняшний день фреймворков оркестровки и планирования контейнеров, в том числе Swarm, Kubernetes, Mesos. Помимо них поддерживает и собственную платформу оркестровки и планирования контейнеров — Cattle. Поддерживает ОС: Linux.

Кому пригодятся оркестраторы, а кому нет

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

Источник

Использование контейнеров и оркестраторов

Контейнеры и оркестрации предназначены для решения проблем, характерных для монолитных подходов к развертыванию.

Проблемы с монолитными развертываниями

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

Рис. 3-1. Монолитная архитектура.

Хотя они имеют преимущество простоты, монолитные архитектуры сталкиваются с множеством проблем:

Развертывание

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

Масштабирование

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

Среда

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

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

Блокировка платформы — в

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

Каковы преимущества контейнеров и оркестрации?

Мы предоставили контейнеры в главе 1. Мы выделили, каким образом облачная инфраструктура машинного кода (КНКФ) ранжирует схему в качестве первого шага в собственных облачных руководствах по основам для предприятий, которые начинают свое облако в собственном облаке. В этом разделе обсуждаются преимущества контейнеров.

DOCKER — это самая популярная платформа управления контейнерами. Он работает с контейнерами как в Linux, так и в Windows. Контейнеры предоставляют отдельные, но воспроизводимые среды приложений, которые выполняются одинаково в любой системе. Этот аспект делает их идеальными для разработки и размещения облачных служб. Контейнеры изолированы друг от друга. Два контейнера на одном и том же оборудовании узла могут иметь разные версии программного обеспечения, не вызывая конфликтов.

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

Контейнеры являются неизменяемыми. После определения контейнера его можно повторно создать и запустить точно таким же образом. Эта неизменность предоставляет модель, основанную на компонентах. Если некоторые части приложения развиваются иначе, чем другие, то зачем развертывать все приложение, когда можно просто развернуть наиболее часто меняющиеся части? Различные функции и проблемы с перекрестной обрезкой приложения можно разбить на отдельные единицы. На рис. 3-2 показано, как монолитное приложение может использовать преимущества контейнеров и микрослужб, делегируя определенные функции или функциональные возможности. Остальные функции в самом приложении также были контейнерными.

Рис. 3-2. Разложение монолитного приложения для использования микрослужб.

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

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

Оркестрации контейнеров позволяют решать и автоматизировать эти и другие задачи.

В облачной системе экономичной системы Kubernetes стал де-факто контейнером Orchestrator. Это платформа с открытым кодом, управляемая облачной средой Cloud Foundation (КНКФ). Kubernetes автоматизирует развертывание, масштабирование и эксплуатационные проблемы в контейнерных рабочих нагрузках в кластере компьютеров. Однако установка Kubernetes и управление ими являются сложными.

Гораздо лучшим подходом является использование Kubernetes в качестве управляемой службы от поставщика облачных служб. В облаке Azure реализована полностью управляемая платформа Kubernetes с пакетом Azure Kubernetes Service (AKS). AKS абстрагирует сложность и эксплуатационные издержки на управление Kubernetes. Использование Kubernetes в качестве облачной службы; Корпорация Майкрософт несет ответственность за управление и поддержку. AKS также тесно интегрируется с другими службами Azure и средствами разработки.

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

Читайте также:  Что такое сородичи 5 класс история

Каковы преимущества масштабирования?

Службы, созданные на основе контейнеров, могут использовать преимущества масштабирования, предоставляемые средствами оркестрации, такими как Kubernetes. По проектам контейнеры хорошо осведомлены о себе. После создания нескольких контейнеров, которые должны работать вместе, следует упорядочить их на более высоком уровне. Организация большого количества контейнеров и их общих зависимостей, таких как конфигурация сети, заключается в том, где средства оркестрации могут сэкономить день! Kubernetes создает слой абстракции для групп контейнеров и организует их в модули Pod. Модули Pod выполняются на рабочих компьютерах, которые называются узлами. Эта организованная структура называется кластером. На рис. 3-3 показаны различные компоненты кластера Kubernetes.

Рис. 3-3. Компоненты кластера Kubernetes.

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

Императивный и декларативный подходы

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

Императивные команды прекрасно подходят для обучения и интерактивного эксперимента. Однако необходимо декларативно создать файлы манифеста Kubernetes, чтобы использовать инфраструктуру в качестве подхода к коду, обеспечивая надежность и повторяемые развертывания. Файл манифеста становится артефактом проекта и используется в конвейере CI/CD для автоматизации развертываний Kubernetes.

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

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

Какие сценарии идеально подходят для контейнеров и оркестрации?

Следующие сценарии идеально подходят для использования контейнеров и оркестрации.

Приложения, которым требуются высокая отказоустойчивость и масштабируемость

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

Большое число приложений

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

Когда следует избегать использования контейнеров и оркестрации?

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

Ресурсы по разработке

Локальная разработка Kubernetes

Развертывания Kubernetes обеспечивают отличное значение в рабочих средах, но также могут выполняться локально на компьютере разработки. Хотя вы можете работать с отдельными микрослужбами независимо, иногда приходится запускать всю систему локально — так же, как она будет выполняться при развертывании в рабочей среде. Существует несколько средств, которые могут помочь: Minikube и DOCKER Desktop. Visual Studio также предоставляет средства для разработки docker.

Minikube

Что такое Minikube? Проект Minikube говорит «Minikube реализует локальный кластер Kubernetes на macOS, Linux и Windows». Ее основными целями являются «лучший инструмент для разработки локальных Kubernetes приложений и поддержка всех функций Kubernetes». Установка Minikube отделена от DOCKER, но Minikube поддерживает различные низкоуровневые оболочки, чем поддерживает DOCKER Desktop. В настоящее время Minikube поддерживает следующие функции Kubernetes:

Docker Desktop

Вы также можете работать с Kubernetes непосредственно из DOCKER Desktop на Windows. это единственный вариант, если вы используете Windows контейнеры и отлично подходит для контейнеров, отличных от Windows. На рис. 3-4 показано, как включить поддержку локальных Kubernetes при работе с DOCKER Desktop.

Рис. 3-4. Настройка Kubernetes в DOCKER Desktop.

DOCKER Desktop — это наиболее популярное средство для локальной настройки и запуска контейнерных приложений. При работе с DOCKER Desktop можно разрабатывать локально на основе того же набора образов контейнеров DOCKER, который будет развернут в рабочей среде. Приложение DOCKER Desktop предназначено для локального создания, тестирования и поставки контейнерных приложений. он поддерживает контейнеры Linux и Windows. После отправки образов в реестр образов, например реестр контейнеров Azure или DOCKER Hub, AKS может извлечь и развернуть их в рабочей среде.

Visual Studio средства docker

Visual Studio поддерживает разработку с помощью docker для веб-приложений. при создании нового ASP.NET Core приложения вы можете настроить его с помощью поддержки docker, как показано на рис. 3-5.

Рис. 3-5. Visual Studio включить поддержку docker

Если выбран этот параметр, проект создается с помощью Dockerfile в корневом каталоге, который можно использовать для сборки и размещения приложения в контейнере DOCKER. Пример Dockerfile показан на рисунке 3-6.

Рис. 3-6. Visual Studio созданный Dockerfile

После добавления поддержки можно запустить приложение в контейнере DOCKER в Visual Studio. на рис. 3-7 показаны различные параметры запуска, доступные в новом проекте ASP.NET Core, созданном с помощью добавленной поддержки docker.

Рис. 3-7. параметры выполнения Visual Studio docker

кроме того, в любое время можно добавить поддержку docker в существующее приложение ASP.NET Core. в обозреватель решений Visual Studio щелкните правой кнопкой мыши проект и выберите пункт добавить > поддержку docker, как показано на рис. 3-8.

Рис. 3-8. Добавление поддержки DOCKER в Visual Studio

Visual Studio Code средства docker

для Visual Studio Code, поддерживающих разработку docker, доступно множество расширений.

Microsoft предоставляет docker для расширения Visual Studio Code. Это расширение упрощает процесс добавления поддержки контейнеров в приложения. Он формирует шаблоны для необходимых файлов, создает образы DOCKER и позволяет выполнять отладку приложения в контейнере. Расширение включает в себя визуальный обозреватель, который упрощает выполнение действий с контейнерами и изображениями, такими как запуск, завершение, проверка, удаление и многое другое. Расширение также поддерживает Docker Compose, что позволяет управлять несколькими работающими контейнерами как одним блоком.

Источник

Информационный сайт