Kubernetes: что нужно знать, чтобы получать 350 000 в месяц
medium

Kubernetes: что нужно знать, чтобы получать 350 000 в месяц

Рассказываем про популярную технологию в ИТ

Продолжаем разбирать объявления, зарплаты и какие навыки нужны для разных работ. Вот что мы уже успели посмотреть:

Сегодня смотрим одну из типичных вакансий для девопсов: зарплата 350 000, но нужно знать Kubernetes. Рассказываем, что это такое, как работает и зачем нужно.

Kubernetes: что нужно знать, чтобы получать 350 000 в месяц

Немного про контейнеры

Перед тем как начать, вспомним, что такое контейнеры на примере Докера:

  • Раньше приложения и сервисы запускали прямо на серверах — виртуальных или реальных.
  • Часто бывало так, что работа одних программ на сервере влияла на работу других. Всё ломалось.
  • Чтобы никто друг на друга не влиял, стали использовать виртуальные машины — это такие загончики для программ. В каждом загончике своя операционная система и софт.
  • На сервере запускалось много таких машин, никто никому не мешал, но это съедало много ресурсов. А ещё всем этим было сложно управлять, потому что каждая виртуальная машина автономная, каждый раз нужно было запускать отдельный Linux.
  • Постепенно вместо виртуальных машин начали использовать контейнеры — в них уже содержится всё нужное виртуальное окружение для запуска программ, а ресурсов нужно гораздо меньше.
  • Контейнеры выросли из встроенных возможностей Linux: там всегда была возможность изолированно запустить несколько программ, каждую в своём окружении. Вот это допилили и получили контейнеры.
  • Можно сказать, что контейнер — это небольшая виртуальная машина, в которой работает одна или несколько программ.
  • Современные сервисы состоят одновременно из десятков и сотен контейнеров, которые работают одновременно.

Докер — это система контейнеризации: он позволяет упаковать нужное приложение в контейнер, который потом можно запустить в любом месте и почти на любой операционной системе. 

Что такое Kubernetes

Kubernetes — это система управления контейнеризированными приложениями: теми, которые работают в контейнере. Её придумали в компании «Гугл» сначала для себя, а в 2014 году открыли исходный код для всех.

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

Представим ситуацию: мы сделали сервис и хотим, чтобы им пользовалось как можно больше людей. Мы запускаем сервер, поднимаем там Докер и разворачиваем контейнеры с нашей программой:

Kubernetes: что нужно знать, чтобы получать 350 000 в месяц

Через неделю про нас рассказали по телевизору, про сервис узнало много людей, и все они пришли попробовать его в деле. Сервер не выдержал такой нагрузки и упал:

Kubernetes: что нужно знать, чтобы получать 350 000 в месяц

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

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

Kubernetes: что нужно знать, чтобы получать 350 000 в месяц

По-умному то, что делает Kubernetes, называется оркестрацией — он, как дирижёр, управляет «оркестром» из контейнеров и следит за тем, чтобы каждый делал то, что от него требуется в данный момент.

Что ещё умеет Kubernetes

Кроме автоматического разворачивания и запуска контейнеров, Kubernetes может делать много полезных в IT-хозяйстве вещей.

Вести логи как внутри контейнеров, так и по всей системе. С ними можно посмотреть, что происходит в конкретных приложениях или как они работают друг с другом.

Обрабатывать статусы: например, сервис закончил бэкап данных и контейнер бэкапа установил статус «готово». В этом случае Kubernetes может запустить другой процесс, свернуть контейнер или сделать что угодно ещё.

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

Следить за работой контейнеров и перезапускать их, если вдруг они почему-то перестали работать. Или не перезапускать, а вместо этого сообщать администратору о поломке и запускать что-то другое.

Следить за ресурсами: если система приблизится к опасному состоянию, когда все серверы и процессы заняты.

Почему Kubernetes так популярен в ИТ

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

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

Кроме Kubernetes, есть ещё Docker Swarm — это родной инструмент Докера, который делает то же самое, но немного по-своему. Но стандартом в индустрии считается именно Kubernetes, и все серьёзные высоконагруженные проекты делают чаще всего именно на нём.

Почему столько платят

Работа с Kubernetes делится на две части: техническую и архитектурную. 

С технической всё относительно просто: есть контейнеры, есть серверы, точки запуска и прочие штуки, которые надо настроить. Берёшь готовый алгоритм или файл с конфигурацией, правишь под себя — и готово. Но это в простых проектах, а в сложных всё упирается в архитектуру.

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

Kubernetes: что нужно знать, чтобы получать 350 000 в месяц

Или так:

Kubernetes: что нужно знать, чтобы получать 350 000 в месяц

Вот за умение понимать и строить такие схемы компании и готовы платить большие деньги. Дело в том, что от того, какое решение примет разработчик, будет зависеть работа всего сервиса или целой компании.

А иногда у компании просто много контейнеров, связанных друг с другом, и их нужно поддерживать в рабочем состоянии. 

Что дальше

В недалёком будущем, когда освоимся с большинством серверных вопросов, мы запустим свой кластер на Kubernetes и посмотрим, как он работает и насколько это сложно. Если не хотите ждать — приходите на курс Практикума «DevOps для эксплуатации и разработки» и делайте всё гораздо круче и быстрее нас. А потом приходите на работу с высокой зарплатой и кайфуйте.

Обложка:

Алексей Сухов

Корректор:

Ирина Михеева

Вёрстка:

Кирилл Климентьев

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Вам может быть интересно
medium