Продолжаем разбирать объявления, зарплаты и какие навыки нужны для разных работ. Вот что мы уже успели посмотреть:
Сегодня смотрим одну из типичных вакансий для девопсов: зарплата 350 000, но нужно знать Kubernetes. Рассказываем, что это такое, как работает и зачем нужно.
Немного про контейнеры
Перед тем как начать, вспомним, что такое контейнеры на примере Докера:
- Раньше приложения и сервисы запускали прямо на серверах — виртуальных или реальных.
- Часто бывало так, что работа одних программ на сервере влияла на работу других. Всё ломалось.
- Чтобы никто друг на друга не влиял, стали использовать виртуальные машины — это такие загончики для программ. В каждом загончике своя операционная система и софт.
- На сервере запускалось много таких машин, никто никому не мешал, но это съедало много ресурсов. А ещё всем этим было сложно управлять, потому что каждая виртуальная машина автономная, каждый раз нужно было запускать отдельный Linux.
- Постепенно вместо виртуальных машин начали использовать контейнеры — в них уже содержится всё нужное виртуальное окружение для запуска программ, а ресурсов нужно гораздо меньше.
- Контейнеры выросли из встроенных возможностей Linux: там всегда была возможность изолированно запустить несколько программ, каждую в своём окружении. Вот это допилили и получили контейнеры.
- Можно сказать, что контейнер — это небольшая виртуальная машина, в которой работает одна или несколько программ.
- Современные сервисы состоят одновременно из десятков и сотен контейнеров, которые работают одновременно.
Докер — это система контейнеризации: он позволяет упаковать нужное приложение в контейнер, который потом можно запустить в любом месте и почти на любой операционной системе.
Что такое Kubernetes
Kubernetes — это система управления контейнеризированными приложениями: теми, которые работают в контейнере. Её придумали в компании «Гугл» сначала для себя, а в 2014 году открыли исходный код для всех.
Сейчас на контейнерах работает половина сервисов в интернете. Kubernetes как раз нужен для того, чтобы внутри одного проекта контейнеры умели работать друг с другом и решать свои задачи.
Представим ситуацию: мы сделали сервис и хотим, чтобы им пользовалось как можно больше людей. Мы запускаем сервер, поднимаем там Докер и разворачиваем контейнеры с нашей программой:
Через неделю про нас рассказали по телевизору, про сервис узнало много людей, и все они пришли попробовать его в деле. Сервер не выдержал такой нагрузки и упал:
Чтобы такого не случалось, грамотный девопс арендует заранее ещё несколько серверов, подключает их к Kubernetes и прописывает нужные настройки. После этого события с наплывом посетителей развивались бы так:
- Kubernetes следит за нагрузкой на сервере — хватает ли ресурсов и всё ли в порядке.
- Про нас рассказали по телевизору, все пошли на наш сервис, нагрузка резко выросла.
- Kubernetes автоматически разворачивает пару новых контейнеров на новых серверах и подключает их к общей системе.
- Все посетители автоматически распределяются между тремя серверами, нагрузка на каждый в пределах нормы.
- Все пользуются нашим сервисом.
- Когда ажиотаж спал, Kubernetes свернул один контейнер, чтобы третий сервер не работал зря и не тратил деньги.
По-умному то, что делает Kubernetes, называется оркестрацией — он, как дирижёр, управляет «оркестром» из контейнеров и следит за тем, чтобы каждый делал то, что от него требуется в данный момент.
Что ещё умеет Kubernetes
Кроме автоматического разворачивания и запуска контейнеров, Kubernetes может делать много полезных в IT-хозяйстве вещей.
Вести логи как внутри контейнеров, так и по всей системе. С ними можно посмотреть, что происходит в конкретных приложениях или как они работают друг с другом.
Обрабатывать статусы: например, сервис закончил бэкап данных и контейнер бэкапа установил статус «готово». В этом случае Kubernetes может запустить другой процесс, свернуть контейнер или сделать что угодно ещё.
Балансировать нагрузку, распределяя её между разными серверами и контейнерами.
Следить за работой контейнеров и перезапускать их, если вдруг они почему-то перестали работать. Или не перезапускать, а вместо этого сообщать администратору о поломке и запускать что-то другое.
Следить за ресурсами: если система приблизится к опасному состоянию, когда все серверы и процессы заняты.
Почему Kubernetes так популярен в ИТ
Потому что Kubernetes и его технологии поддерживают большинство облачных сервисов и серверов. Гораздо проще работать с тем, о чём все знают, чем заниматься своим решением общей проблемы.
А ещё у Kubernetes много документации, большая поддержка комьюнити и много готовых алгоритмов, конфигов и рецептов на все случаи жизни. Это значит, что почти для любой задачи можно найти уже готовое решение и сразу применить его в проекте.
Кроме Kubernetes, есть ещё Docker Swarm — это родной инструмент Докера, который делает то же самое, но немного по-своему. Но стандартом в индустрии считается именно Kubernetes, и все серьёзные высоконагруженные проекты делают чаще всего именно на нём.
Почему столько платят
Работа с Kubernetes делится на две части: техническую и архитектурную.
С технической всё относительно просто: есть контейнеры, есть серверы, точки запуска и прочие штуки, которые надо настроить. Берёшь готовый алгоритм или файл с конфигурацией, правишь под себя — и готово. Но это в простых проектах, а в сложных всё упирается в архитектуру.
Архитектурная сложность Kubernetes в том, что разработчик должен заранее продумать всю логику и схему работы всех контейнеров, сервисов, модулей, баз данных, внешних API и сервисов и систем, которые будут работать как единое целое. Например, это может выглядеть так:
Или так:
Вот за умение понимать и строить такие схемы компании и готовы платить большие деньги. Дело в том, что от того, какое решение примет разработчик, будет зависеть работа всего сервиса или целой компании.
А иногда у компании просто много контейнеров, связанных друг с другом, и их нужно поддерживать в рабочем состоянии.
Что дальше
В недалёком будущем, когда освоимся с большинством серверных вопросов, мы запустим свой кластер на Kubernetes и посмотрим, как он работает и насколько это сложно. Если не хотите ждать — приходите на курс Практикума «DevOps для эксплуатации и разработки» и делайте всё гораздо круче и быстрее нас. А потом приходите на работу с высокой зарплатой и кайфуйте.