Около года мы писали об интересном онлайн-сервисе для самообразования в мире контейнеров — Play with Docker. Его авторы, поддерживаемые компанией Docker Inc, не стояли на месте и последовали за трендами, что мы наблюдаем не только в «узком кругу» Docker, но и в индустрии в целом: они запустили новый аналогичный сервис, посвящённый уже Kubernetes. Итак, встречайте Play with Kubernetes (PWK)!
Игровая площадка PWK
PWK полностью повторяет идею (и даже интерфейс) своего «прародителя» Play with Docker: его основной сайт — это так называемая «игровая площадка» (playground), предоставляющая в веб-браузере доступ к виртуальной Linux-машине для возможности проведения экспериментов с кластерами Kubernetes. По сути это доступный бесплатно SaaS-аналог Minikube со своими удобствами (работа прямо в браузере) и ограничениями (см. ниже).
Технически для этого используются возможности технологии Docker-in-Docker (DIND), позволяющей запускать контейнеры Docker внутри других контейнеров Docker. (Такой подход к работе с Docker не является рекомендуемым в общем случае, однако имеет право на жизнь в особых применениях, таких как разработка самого Docker и связанных технологий.) Используемые версии программного обеспечения в сервисе:
- «хостовая» операционная система (на узле) — CoreOS 7.4.1708,
- сервер Kubernetes — 1.8.11,
- клиент Kubernetes — 1.8.14,
- Docker — 18.03.1-ce.
Для эмуляции терминала в веб-браузере по-прежнему предлагается JavaScript-реализация xterm.js, для которой доступно небольшое количество настроек (выбор размера шрифта, возможность использования клавиатурных сочетаний из macOS). На площадке действуют прежние, т.е. знакомые по Play with Docker, ограничения: не более 4 часов беспрерывной работы в рамках одной сессии и не более 5 узлов кластера (по 4 Гб RAM у каждого).
Если вход в площадку Play with Docker на сегодняшний день доступен только по Docker ID, то в случае Kubernetes есть и вторая опция — через аккаунт на GitHub.
Фактический запуск основного сайта Play with Kubernetes — игровой площадки — прошёл «тихо и незаметно» ещё прошлым летом, однако сама по себе она не так интересна, как лабораторные работы. И вот лишь месяц назад состоялся публичный анонс первой такой работы, доступной на ресурсе Play with Kubernetes Classroom.
Лабораторная работа с Kubernetes
В её основу легли труды Jérôme Petazzoni, посвятившего 7 лет своей жизни компании Docker Inc, где он прошёл путь от SRE-инженера до евангелиста и провёл множество семинаров по работе с контейнерами и Kubernetes.
К 2016 году к этим регулярным выступлениям добавились семинары по оркестровке контейнеров… и в это же время Jérôme осознал, что исчерпал свои ресурсы. В октябре его ощущения подтвердились получением диагноза «депрессия». Последовали антидепрессанты и терапия, что привело к видимому улучшению состояния. Однако летом 2017 года Jérôme, принимая участие в исследовании о психическом здоровье, прошёл тест Maslach Burnout Inventory на выгорание и обнаружил, что находится в «красной зоне». Пообщавшись со сведущими в этом вопросе людьми, он пришёл к решению взять перерыв в 2018 году, а перед этим приложил максимум своих усилий к реализации стратегии Docker, направленной на поддержку Kubernetes.
«В 2018 году я собираюсь посвятить время себе. Я изучаю Rust. Я пишу небольшой клон [музыкального инструмента] Ableton для подключения grid-контроллера (вроде Monome или LaunchPad) к Raspberry Pi для воспроизведения живой музыки. Собираюсь пройти ретрит по медитации випассана. Надеюсь быть наставником для тех, кто не получил такое счастье и привилегии, как я сам, и стать лучшим союзником для них. Уход из Docker — первый шаг и самый сложный, но предстоящий путь выглядит замечательно».
Но вернёмся к собственно Play with Kubernetes…
Предлагаемая в онлайн-сервисе лабораторная работа ориентирована на начинающих и посвящена основным концепциям и возможностям Kubernetes:
- что вообще позволяет делать эта система: запуск контейнеров, балансировка нагрузки, выкатывание новых версий образов, автомасштабирование…;
- архитектура Kubernetes;
- ресурсы Kubernetes: узлы, поды, сервисы, пространства имён, секреты;
- декларативный подход;
- сетевая модель Kubernetes;
- и т.п.
Главное же в том, что эта теория подкрепляется практикой, ради чего всё и затевалось. В рамках практической части предлагается запустить свои первые контейнеры и научиться пробрасывать порты для них, создать deployment и масштабировать его, поработать с ресурсами в YAML, познакомиться с лейблами и селекторами… не буду подробно перечислять все этапы — лучше увидеть (и попробовать) их самостоятельно на странице Kubernetes Hands-on Workshop.
Выглядит же прохождение лабораторной работы аналогично тому, как всё было в Play with Docker: слева у вас есть документ-инструкция (в том числе и команды для ввода), а справа — терминал (точнее, их два — для двух узлов Kubernetes), позволяющий «поиграть» в администратора K8s-кластера и видеть, что и как происходит на самом деле. Последнему, безусловно, способствует возможность выполнять произвольные уточняющие команды на любых этапах выполнения работы.
Вместо заключения
Сейчас в Play with Kubernetes доступна лишь одна вводная лабораторная работа, но авторы обещают создавать и новые. Их развитие в Play with Docker позволяет надеяться, что это действительно случится. Желающие же поделиться своим опытом могут это сделать в специальном репозитории проекта.
P.S.
Читайте также в нашем блоге:
- «Play with Docker — онлайн-сервис для практического знакомства с Docker»;
- «Наш опыт с Kubernetes в небольших проектах» (видео доклада, включающего в себя знакомство с техническим устройством Kubernetes);
- «Начало работы в Kubernetes с помощью Minikube»;
- «Что происходит в Kubernetes при запуске kubectl run?»: часть 1 и часть 2;
- «Как на самом деле работает планировщик Kubernetes?»;
- «Иллюстрированное руководство по устройству сети в Kubernetes»;
- «Зачем нужен Kubernetes и почему он больше, чем PaaS?».
Автор: shurup