Мороженое с Kubernetes, или контейнерные решения для начинающих

    Вообще-то, Kubernetes и контейнеры вошли в обиход совсем недавно, поэтому не будет удивительным, если вы пока еще мало о них знаете или не очень активно используете. В этом посте мы расскажем о Kubernetes тем, кто хочет присоединиться к авангарду ИТ-технологий – разработчикам, которые еще не перешли на контейнеры, и даже не техническим людям, которые сегодня тоже не могут обойтись без ИТ (привет, цифровизация бизнеса!).



    Раскрыть горячую тему нам поможет пример с мороженым.

    Случай с мороженым


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

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

    Для разработки и обновления сайта мы наняли несколько дополнительных разработчиков. Чтобы наш бизнес мог расти и дальше, разработчики занялись созданием новых приложений. В частности, они сказали, что нам нужна система выставления счетов, система мониторинга температуры в морозильных камерах, а также алгоритмы для оптимизации бизнес-процессов, наподобие логистики по принципу «точно в срок». В общем, куча всего. А теперь они заявили, что помимо всего прочего нам еще нужен какой-то Kubernetes.

    Мы погуглили Kubernetes и нашли кучу страниц про историю Linux, какие-то LXC-контейнеры, cgroups и прочий технический жаргон. Понятнее не стало. Тогда мы попросили разработчиков объяснить, зачем нам, простым мороженщикам, нужен весь этот тюнинг, когда нам и так есть чем заняться помимо Kubernetes. Ну и потом, для инвестиций нужна более веская причина, чем просто желание разработчиков поиграться с чем-то новым.

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

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

    «Что ж, отлично, – говорим мы. – Давайте паковать наш софт в контейнеры». Разработчики отвечают, что они уже начали, поскольку для этого нужно было всего лишь перейти на systemd или другую систему инициализации. «Систему инициализации?» – переспрашиваем мы. Разработчики говорят, что это не важно, и эта система просто нужна для управления контейнерами. Тогда мы интересуемся, когда уже мы дойдем до продажи мороженого.



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

    Что такое Kubernetes?


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

    Kubernetes – это оркестрация контейнеров. Иначе говоря, правильный способ работать с контейнерами, когда их много.

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

    Затем наш разговор слегка смещается в область магии. На сайте Kubernetes упоминается технология самовосстановления. Еще пишут, что он настолько умен, что может автоматически выполнять поочередные обновления (rollout) и откаты. Мы зачитываем это вслух и спрашиваем об этом разработчиков. Они отвечают, и в их словах слышится одобрение: мы наконец-то стали задавать правильные вопросы. «Если действительно хотите узнать, как работает машина, надо взглянуть на детали».

    Итак, Kubernetes умный, автоматизированный и с ним легко взаимодействовать. Значит, сплошные молочные реки и никаких подводных камней? А вот тут, отвечают разработчики, начинается самое интересное. Kubernetes – это проект с открытым исходным кодом. Начал его Google, заложив в основу свой многолетний опыт работы с контейнерами. Но теперь этот проект перешел под крыло независимой организации Cloud Native Computing Foundation и поддерживается силами большого сообщества, в котором активное участие принимает и Red Hat – второй по активности участник сообщества. Кроме того, это один из самых быстро растущих проектов в истории отрасли.

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

    Технологический процесс


    Несмотря на стремительное распространение в корпоративном секторе, Kubernetes зачастую оказывается крепким орешком для новичков. Все дело в большом количестве концепций, которые нужно усвоить для работы с этой платформой.
    Как разобраться с pod, сервисом и панелью управления? Как сделать сервис общедоступным?

    Как обновляются запущенные pod’ы? Для ответа на большинство вопросов у нас есть специальное руководство по Kubernetes, в котором подробно рассматриваются основы этой платформы.

    А еще, те, кто пропустил вебинар Red Hat по Kubernetes, все еще могут увидеть его запись на нашей странице: вебинар «Управление контейнерами в распределенной среде».

    Остались вопросы? Постараемся ответить на них в комментариях.

    По материалам coreos.com и Red Hat.
    • –2
    • 2,3k
    • 1
    Red Hat
    76,00
    Программные решения с открытым исходным кодом
    Поделиться публикацией

    Комментарии 1

      +1
      Разработчики говорят, что это не важно, и эта система просто нужна для управления контейнерами. Тогда мы интересуемся, когда уже мы дойдем до продажи мороженого.

      При таком подходе — никогда.

      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

      Самое читаемое