Что точно нужно знать из теории, чтобы успешно перейти к практике
Понимать, как работать с Linux. Знать хотя бы базу, уметь его настраивать и работать в нем, разбираться в Linux essential. Со знакомством может помочь книга Э. Немет «Unix и Linux: руководство системного администратора. 5-е издание».
Уметь работать с Docker. Понимать, как работает технология контейнеризации, уметь запускать контейнеры в Docker. Желательно иметь минимальную практику, например, потыкать что-то в Minicube на личном компьютере.
Иметь общие знания о веб-серверах. Понимать, как работает nginx, как его поднять. Знать, как работают сети. Модель OSI, протоколы TCP/IP. Это важно, потому что связь между микросервисами строится на сетевом взаимодействии.
Знать основные абстракции. Деплоймет, репликасет, под. Как они работают и как взаимосвязаны. Как работает service, ingress. Понимать, для чего и как, что куда указывается.
Понимать работу системы в целом. Не углубляться в один компонент или инструмент, а знать, как работают все компоненты, как они связаны, как реагируют друг на друга.
Уметь запустить оркестратор. Поднять несколько серверов, посмотреть на их взаимодействие и скорость работы.
Чтобы подготовиться к работе в боевых условиях, полезно будет самому поставить себе задачу и попробовать ее решить. Например, поднять маленький сайт, «сломать» один сервер и посмотреть, что произойдет и как вы эту проблему сможете решить.
С какими неожиданностями вы наверняка столкнетесь и к чему стоит подготовиться
- Ресурсы могут вести себя не так, как вы привыкли в обучении. К ним нужно быть очень внимательными, иначе производительность приложений сильно деградирует.
- На курсах Слёрма по k8s не очень много рассказывают об Istio и Service Mesh, а в работе это может пригодиться. Стоит это изучить.
- Лучше заранее локально отрепетировать рискованные операции, типа обновления кластера. Чтобы понять, не допускаете ли вы каких-то ошибок и сможете ли быстро отреагировать, если что-то пойдет не так.
- Приготовьтесь, что вы можете столкнуться со специфическими настройками приложений и сервисов. Важно понимать, где эти настройки находятся, как их искать, как они влияют на работу.
- На проде всегда в работе много систем, сертификатов, TLS и т.п. Нужно примерно знать, как все это работает и взаимодействует между собой, чтобы замечать и исправлять ошибки.
- Лучшее, что можно сделать — внимательно изучать документацию. Там часто есть ответы на все вопросы, в том числе на большинство ошибок, которые возникают у новичков.
Почему бояться перехода на реальные задачи не стоит
Главное, что стоит понимать — неопытному инженеру Kubernetes никогда не дадут сложные и серьезные задачи. На старте вы наверняка даже не будете работать на проде, так что цена вашей ошибки невысока.
В сфере ИТ все понимают, что учеба ≠ реальному опыту, какой бы ориентированной на практику она не была. И нанимая новичка всегда готовы, что он будет тупить, тормозить и ошибаться. От вас не будут ждать ничего сверхъестественного, и вы спокойно сможете учиться дальше и набивать шишки.
Кроме того помните, что в небольшой компании базовых знаний вам точно хватит — там не понадобится тонкая настройка Kubernetes, не будет огромных нагрузок, не придется сталкиваться с чем-то, не описанным в документации.
В крупной компании это все есть, но там обязательно работает большой штат инженеров. И они вас научат и все подскажут, так что проблем тоже не возникнет. Все, что вам нужно, это терпение и постоянное самообучение — а остальное приложится.
Для тех, кому нужны базовые знания по Kubernetes, в Слёрме есть курсы «Kubernetes База: стартовый курс для администраторов» и «Kubernetes для разработчиков».