- PVSM.RU - https://www.pvsm.ru -

Истории успеха Kubernetes в production. Часть 9: ЦЕРН и 210 кластеров K8s

Истории успеха Kubernetes в production. Часть 9: ЦЕРН и 210 кластеров K8s - 1

На сегодняшний день ЦЕРН является одним из крупнейших пользователей Kubernetes в мире. Согласно недавней статистике, в этой европейской организации, стоящей за Большим адронным коллайдером (БАК) и рядом других известных научно-исследовательских проектов, запущено 210 кластеров K8s, обслуживающих одновременное выполнение сотен тысяч задач. Эта история успеха — о них.

Контейнеры в ЦЕРН: начало

Для тех, кто хотя бы поверхностно знаком с деятельностью ЦЕРН, не секрет, что в этой организации немало внимания уделяется актуальным информационным технологиям: достаточно вспомнить, что это место рождения World Wide Web, а среди более свежих заслуг можно вспомнить грид-системы (включая LHC Computing Grid [1]), специализированную интегральную схему [2], дистрибутив Scientific Linux [3] и даже свою лицензию [4] на open hardware. Как правило, эти проекты, будь они программными или аппаратными, связаны с главным детищем ЦЕРНа — БАК. Это касается и ИТ-инфраструктуры ЦЕРН, во многом обслуживающей его же потребности.

Истории успеха Kubernetes в production. Часть 9: ЦЕРН и 210 кластеров K8s - 2
В дата-центре ЦЕРНа в Женеве

Самые ранние публично доступные сведения о практическом применении контейнеров в инфраструктуре организации, что удалось найти, датируются апрелем 2016 года. В рамках «внутреннего» доклада «Containers and Orchestration in the CERN Cloud [5]» сотрудники ЦЕРНа рассказывали, как они используют OpenStack Magnum (компонент OpenStack для работы с движками оркестровки контейнеров) для обеспечения поддержки контейнеров в своейм облаке (CERN Cloud) и их оркестровки. Уже тогда упоминая Kubernetes, инженеры преследовали цель быть независимыми от выбранного инструмента оркестровки, поддерживая и другие опции: Docker Swarm и Mesos.

Примечание: Само облако с OpenStack было введено в production-инфраструктуру ЦЕРН за несколько лет до этого, в 2013 году. По состоянию [6] на февраль 2017 года, в этом облаке было доступно 188 тысяч ядер, 440 Тб RAM, создано 4 миллиона виртуальных машин (из них — 22 тысячи были активны).

Истории успеха Kubernetes в production. Часть 9: ЦЕРН и 210 кластеров K8s - 3

На тот момент времени поддержка контейнеров в формате Containers-as-a-Service позиционировалась как пилотный сервис и использовалась в десяти ИТ-проектах организации. Среди сценариев применения называлась непрерывная интеграция с GitLab CI для сборки и выката приложений в Docker-контейнерах.

Истории успеха Kubernetes в production. Часть 9: ЦЕРН и 210 кластеров K8s - 4
Из презентации [7] к докладу в ЦЕРН от 8 апреля 2016 г.

Запуск этого сервиса в production ожидался к третьему кварталу 2016 г.

Примечание: Стоит отдельно отметить, что сотрудники ЦЕРНа неизменно помещают свои наработки в upstream используемых Open Source-проектов, в т.ч. и многочисленных компонентов OpenStack, какими в данном случае являлись Magnum, puppet-magnum, Rally и т.п.

Миллионы запросов в секунду с Kubernetes

По состоянию на июнь того же (2016) года сервис в ЦЕРНе всё ещё имел [8] статус pre-production:

«Мы постепенно движемся к полноценному режиму production, чтобы включить Containers-as-a-Service в стандартный набор ИТ-услуг, доступных в ЦЕРНе».

И тогда, вдохновившись публикацией [9] в блоге Kubernetes об обслуживании 1 миллиона HTTP-запросов в секунду без простоя во время обновления сервиса в K8s, инженеры научной организации решили повторить этот успех в своём кластере на OpenStack Magnum, Kubernetes 1.2 и аппаратной базе из 800 ядер CPU.

Причём простым повторением эксперимента они решили не ограничиваться и с успехом довели количество запросов до 2 миллионов в секунду, попутно подготовив несколько патчей для всё того же OpenStack Magnum и проделав тесты с разным количеством узлов в кластере (300, 500 и 1000).

Истории успеха Kubernetes в production. Часть 9: ЦЕРН и 210 кластеров K8s - 5

Подводя итоги этого тестирования, инженеры вновь отмечали, что «есть ещё Swarm и Mesos, и мы планируем в скором времени провести тесты и на них». Дошло ли дело до этих тестов, интернет-пространству неизвестно, зато к концу того же года эксперимент с Kubernetes получил продолжение [10] — уже с 10 миллионами запросов в секунду. Результат оказался достаточно положительным, но был ограничен успешной отметкой в чуть более 7 миллионов — из-за сетевой проблемы, не имеющей отношения к OpenStack.

Инженеры, специализирующиеся на OpenStack Heat и Magnum, заодно измерили, что масштабирование кластера с 1 до 1000 узлов занимало 23 минуты, оценив это как хороший результат (см. также выступление «Toward 10,000 Containers on OpenStack [11]» на OpenStack Summit Barcelona 2016).

Контейнеры в ЦЕРН: переход в production

В феврале следующего (2017) года, контейнеры в ЦЕРНе уже достаточно широко применялись для решения задач из разных областей: пакетной обработки данных, машинного обучения, управления инфраструктурой, непрерывного деплоя… Об этом стало известно из доклада «OpenStack Magnum at CERN. Scaling container clusters to thousands of nodes [12]» (видео [13]) на FOSDEM 2017:

Истории успеха Kubernetes в production. Часть 9: ЦЕРН и 210 кластеров K8s - 6

В нём же сообщалось, что использование Magnum в ЦЕРНе перешло в стадию production в октябре 2016 года, а также снова подчёркивалась поддержка трёх инструментов для оркестровки: Kubernetes, Docker Swarm и Mesos. Почему это было так важно, пояснил [14] на одном из своих выступлений (OpenStack Summit в Бостоне, май 2017 г.) Ricardo Rocha из ИТ-подразделения ЦЕРНа:

«Magnum также позволяет выбирать движок для контейнеров, что было очень ценным для нас. В организации работали группы людей, которые ратовали за Kubernetes, но были и те, кто уже использовал Mesos, а некоторые и вовсе работали с обычным Docker, желая и дальше полагаться на Docker API, и здесь большой потенциал у Swarm. Мы хотели добиться простоты использования, не требовать от людей понимания сложных шаблонов для настройки своих кластеров».

На тот момент в ЦЕРНе использовали около 40 кластеров с Kubernetes, 20 — с Docker Swarm и 5 — с Mesosphere DC/OS.

Уже через год, к маю 2018 года, ситуация в значительной мере изменилась. Из выступления «CERN Experiences with Multi-Cloud Federated Kubernetes [15]» (видео [16]) того же Ricardo и его коллеги (Clenimar Filemon) на KubeCon Europe 2018 стали известны новые подробности об использовании Kubernetes. Теперь это не просто один из инструментов оркестровки контейнеров, доступных пользователям научной организации, но и важная для всей инфраструктуры технология, позволяющая — благодаря федерации — значительно расширить вычислительное облако, добавив сторонние ресурсы (GKE, AKS, Amazon, Oracle…) к собственным мощностям.

Примечание: Федерация [17] в Kubernetes — специальный механизм, упрощающий управление множеством кластеров за счёт синхронизации находящихся в них ресурсов и автоматического обнаружения сервисов во всех кластерах. Актуальный случай её применения — работа со множеством Kubernetes-кластеров, распределённых по разным провайдерам (свои дата-центры, сторонние облачные сервисы).

Как видно из этого слайда, демонстрирующего некоторые количественные характеристики дата-центра ЦЕРН в Женеве…

Истории успеха Kubernetes в production. Часть 9: ЦЕРН и 210 кластеров K8s - 7

… внутренняя инфраструктура организации сильно выросла. Например, количество доступных ядер за год выросло почти в два раза — уже до 320 тысяч. Инженеры пошли дальше и объединили несколько своих дата-центров, добившись доступности 700 тысяч ядер в облаке ЦЕРН, которые заняты параллельным выполнением 400 тысяч задач (по реконструкции событий, калибровке детекторов, симуляции, анализу данных и т.п.)…

Но в контексте этой статьи больший интерес представляет тот факт, что в ЦЕРНе функционировали уже 210 кластеров Kubernetes, размеры которых сильно варьировались (от 10 до 1000 узлов).

Федерация с Kubernetes

Однако внутренних мощностей ЦЕРНа не всегда хватало — например, на периоды резких всплесков нагрузки: перед большими международными конференциями по физике и в случае крупных кампаний по реконструкции проводимых экспериментов. Заметным use case, требующим больших ресурсов, стала система пакетной обработки ЦЕРН (CERN Batch Service), на которую приходится около 80 % от всей нагрузки на вычислительные ресурсы организации.

В основе этой системы — фреймворк с открытым кодом HTCondor [18], предназначенный для решения задач категории HTC (high-throughput computing). За вычисления в нём отвечает демон StartD, который стартует на каждом узле и отвечает за запуск рабочей нагрузки на нём. Именно он и был контейнеризирован в ЦЕРНе с целью запуска на Kubernetes и дальнейшей федерации.

Истории успеха Kubernetes в production. Часть 9: ЦЕРН и 210 кластеров K8s - 8
Устройство HTCondor из презентации ЦЕРНа [19] на KubeCon Europe 2018

Пойдя этим путём, инженеры ЦЕРНа смогли описывать единственный ресурс (DaemonSet с контейнером, где запускается StartD из HTCondor) и деплоить его на узлах всех кластеров Kubernetes, объединённых федерацией: сначала в рамках своего дата-центра, а затем — подключая внешних провайдеров (публичное облако от T-Systems и других компаний):

Истории успеха Kubernetes в production. Часть 9: ЦЕРН и 210 кластеров K8s - 9

Другой пример применения — аналитическая платформа на базе REANA [20], RECAST [21] и Yadage [22]. В отличие от CERN Batch Service, являющейся «устоявшимся» программным обеспечением в организации, это новая разработка, в которой сразу учитывалась специфика применения вместе с Kubernetes. Рабочие процессы в этой системе реализованы таким образом, что каждый этап преобразуется в Job для Kubernetes.

Если изначально все эти задачи запускались на единственном кластере, то со временем запросы росли и «на сегодняшний день это наш лучший use case федерации в Kubernetes». Небольшое видео с его демонстрацией смотрите в этом фрагменте [23] выступления Ricardo Rocha.

P.S.

Дополнительные сведения об актуальных масштабах применения ИТ в ЦЕРНе можно получить на сайте организации [24].

Другие статьи из цикла

Автор: Дмитрий Шурупов

Источник [33]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/sistemnoe-administrirovanie/285772

Ссылки в тексте:

[1] LHC Computing Grid: https://en.wikipedia.org/wiki/Worldwide_LHC_Computing_Grid

[2] интегральную схему: https://en.wikipedia.org/wiki/Beetle_(ASIC)

[3] Scientific Linux: https://en.wikipedia.org/wiki/Scientific_Linux

[4] свою лицензию: https://en.wikipedia.org/wiki/CERN_Open_Hardware_Licence

[5] Containers and Orchestration in the CERN Cloud: https://indico.cern.ch/event/506245/

[6] состоянию: https://openlab-archive-phases-iv-v.web.cern.ch/publications/presentations/openstack-magnum-cern-scaling-container-clusters-thousand-nodes

[7] презентации: https://indico.cern.ch/event/506245/contributions/2017787/attachments/1254786/1851861/Containers_and_Orchestration_in_the_CERN_Cloud.pdf

[8] имел: http://openstack-in-production.blogspot.com/2016/06/scaling-magnum-and-kubernetes-2-million.html

[9] публикацией: http://blog.kubernetes.io/2015/11/one-million-requests-per-second-dependable-and-dynamic-distributed-systems-at-scale.html

[10] получил продолжение: http://openstack-in-production.blogspot.com/2017/01/containers-on-cern-cloud.html

[11] Toward 10,000 Containers on OpenStack: https://www.openstack.org/videos/video/toward-10000-containers-on-openstack

[12] OpenStack Magnum at CERN. Scaling container clusters to thousands of nodes: https://archive.fosdem.org/2017/schedule/event/magnumcern/

[13] видео: https://www.youtube.com/watch?v=YQFfwY2vSkQ

[14] пояснил: https://thenewstack.io/discovering-higgs-boson-cern-integrates-openstack-kubernetes/

[15] CERN Experiences with Multi-Cloud Federated Kubernetes: https://kccnceu18.sched.com/event/Duoa/keynote-cern-experiences-with-multi-cloud-federated-kubernetes-ricardo-rocha-staff-member-cern-clenimar-filemon-software-engineer-federal-university-of-campina-grande-slides-attached

[16] видео: https://www.youtube.com/watch?v=2PRGUOxL36M

[17] Федерация: https://kubernetes.io/docs/concepts/cluster-administration/federation/

[18] HTCondor: https://research.cs.wisc.edu/htcondor/

[19] презентации ЦЕРНа: https://schd.ws/hosted_files/kccnceu18/d0/CERN.pdf

[20] REANA: https://github.com/reanahub

[21] RECAST: https://github.com/recast-hep

[22] Yadage: https://github.com/yadage/yadage

[23] этом фрагменте: https://www.youtube.com/watch?v=2PRGUOxL36M&t=17m22s

[24] сайте организации: https://home.cern/about/computing

[25] Истории успеха Kubernetes в production. Часть 1: 4200 подов и TessMaster у eBay: https://habr.com/company/flant/blog/334140/

[26] Истории успеха Kubernetes в production. Часть 2: Concur и SAP: https://habr.com/company/flant/blog/334770/

[27] Истории успеха Kubernetes в production. Часть 3: GitHub: https://habr.com/company/flant/blog/335814/

[28] Истории успеха Kubernetes в production. Часть 4: SoundCloud (авторы Prometheus): https://habr.com/company/flant/blog/339724/

[29] Истории успеха Kubernetes в production. Часть 5: цифровой банк Monzo: https://habr.com/company/flant/blog/342412/

[30] Истории успеха Kubernetes в production. Часть 6: BlaBlaCar: https://habr.com/company/flant/blog/345780/

[31] Истории успеха Kubernetes в production. Часть 7: BlackRock: https://habr.com/company/flant/blog/347098/

[32] Истории успеха Kubernetes в production. Часть 8: Huawei: https://habr.com/company/flant/blog/349940/

[33] Источник: https://habr.com/post/412571/?utm_source=habrahabr&utm_medium=rss&utm_campaign=412571