Рубрика:
Администрирование /
Облачные технологии
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
СЕРГЕЙ ЯРЕМЧУК, автор более 1000 статей и шести книг. С «СА» с первого номера. Интересы: сетевые технологии, защита информации, свободные ОС, yaremchuk@samag.ru
Знакомимся с Kubernetes
Управление большим количеством контейнеров на нескольких серверах штатными инструментами Docker – не очень простая задача. Google предлагает эффективное решение
Современные приложения достаточно сложны в разработке и поддержке, версии языка, фреймворки и сам код постоянно обновляются. Постоянно появляются новые технологии изапросы пользователей. Именно поэтому высок интерес к микросервисам (см. статью А. Календарева в этом номере). Docker дает прекрасную возможность быстро развернуть приложение буквально в любом месте, что на продакшен-сервере, что на ноутбуке разработчика. Единственный минус – управлять, разворачивать, масштабировать, отслеживать состояние и обновлять контейнеры штатными инструментами уже не так просто. Неудивительно, что появились специальные инструменты, решающие эту проблему.
Управление контейнерами
Практически одновременно несколько компаний предложило решения, схожие по задаче, но отличающиеся реализацией. В первую очередь это Docker Swarm [1], который позволяет создать кластер, объединять Docker-контейнеры и запускать их одной командой. В сочетании с Docker Compose это очень удобный инструмент для планирования контейнеров. Оночень прост в развертывании. Для управления используется REST API-интерфейс, совместимый с Docker API. Все инструменты, совместимые с API Docker, – Dokku, DockerUI,Krane, Flynn и многие другие – могут работать с кластером Docker Swarm, как с обычным хостом. В 1.12 в штатном Docker появился режим swarm mode, позволяющий вудобной форме разворачивать кластер, запускать приложение, менять количество реплик, балансировать нагрузку, обновлять контейнеры без остановки, откат обновлений и многое другое.
Nomad [2] представляет собой несколько более глобальное решение для управления кластером машин и запуском приложений на них, которое может быть использовано длябольшого круга задач. Поддерживает несколько ЦОД и мультирегиональные конфигурации. По утверждению разработчиков он тестировался на кластерах до 5000 узлов, разворачивая до 3500 контейнеров в секунду, но работает и на гораздо более крупных кластерах. Сочетает менеджер ресурсов и планировщик собственной разработки, определяющий, на каком узле развернуть по указанным ресурсам. Для Docker-контейнеров можно задавать ограничения, указывать регион, количество реплик. Серверная иклиентская части реализованы в одном бинарнике, для координации или хранения не требуется других внешних служб.
Разработанная в Twitter платформа Marathon [3] – также несколько более глобальное решение. Представляет собой надстройку над менеджером кластера Apache Mesos, расширяя еговозможности по управлению приложениями и контейнерами в нескольких ЦОД. Реализованы функции масштабирования, восстановления работоспособности, балансировки, установки ограничений. Поддерживается формат контейнера Docker и свой Mesos, плюс приложения JBoss, Jetty, Sinatra, Rails и т.д. В работе использует другие решения Apache Software Foundation для организации обнаружения приложений, планирования и т.д.: ZooKeeper, Chronos, Kafka, Hadoop и т.д. Самостоятельная установка Marathon – не самое простое дело.
Проект Kubernetes
Разработки Kubernetes [4] (сокращенно K8S) официально стартовали в Google в 2014 году, а первая публичная версия 0.1 появилась через год – в июле 2015-го. Хотя разработка неначиналась совсем с нуля. В основе K8S лежит Borg, проект управления кластерами в Google, переориентированный теперь на управление Docker-контейнерами. Многие проблемы, с которыми разработчики столкнулись при создании Borg, были уже опробованы и решены, поэтому проект так быстро стартовал. Чуть позже совместно с Linux Foundation длявыработки единого стандарта и взаимодействия была сформирована Cloud Computing Native Foundation (CNCF), в которую вошли сама Google, Cisco, IBM, Docker и VMware.
Забегая наперед, отмечу две вещи. И хотя текущей стабильной версией является уже 1.5.1, многое еще в API не реализовано и находится в официальном бета- и даже альфа-статусе. Даже мастер установки кластера честно предупреждает: «WARNING: kubeadm is in alpha, please do not use it for production clusters». Но тем не менее решение работает стабильно, есть уже много субпроектов, дополняющих K8S, и легко можно найти сообщения об успешном использовании в продакшен, так как в нем реализованы все функции, необходимые для запуска приложений на основе Docker в конфигурации с высокой доступностью, – деплой, обнаружение сервисов, планирование, мониторинг и многое другое. Для реализации всего этого могут использоваться сторонние услуги и аддоны [5], которые, взаимодействуя с API более высокого уровня, обеспечивают требуемую функциональность.
Статью целиком читайте в журнале «Системный администратор», №1-2 за 2017 г. на страницах 41-45.
PDF-версию данного номера можно приобрести в нашем магазине.
- Проект Docker Swarm – http://docker.com/products/docker-swarm.
- Проект Nomad – http://nomadproject.io.
- Проект Marathon – http://mesosphere.github.io/marathon.
- Проект Kubernetes – https://kubernetes.io.
- Дополнения Kubernetes – https://kubernetes.io/docs/admin/addons.
- Страница Minikube – https://kubernetes.io/docs/getting-started-guides/minikube.
- Исходные тексты Kubernetes – https://github.com/kubernetes/kubernetes.
- bash-скрипт для установки Kubernetes – http://get.K8S.io.
- Параметры kubectl – https://kubernetes.io/docs/user-guide/kubectl-overview.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|