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

Немного фактов

Kubernetes — это программное обеспечение с открытым исходным кодом, которое позволяет запускать и оркестрировать (то есть автоматически размещать, управлять и координировать) контейнеризированные прикладные программы.

Платформа Kubernetes была разработана семь лет назад, но стала набирать популярность в последние четыре года, после того как Google передала ее Cloud Native Computing Foundation для дальнейшего совершенствования. Так, в опросе Stackoverflow за 2020 год Kubernetes заняла третье место как наиболее «любимая» платформа со стороны разработчиков после Docker и Linux. Ежегодный опрос VMware State of Kubernetes также показал, что в 2021 году она использовалась в 65% компаний с более чем 1000 сотрудников. Это значительный прирост по сравнению с 2018 годом (30%).

Могу сказать, что повсеместное использование Kubernetes или другого инструмента оркестрации — это вопрос времени, так как контейнеризация и микросервисная архитектура становятся повседневностью.

Микросервисная архитектура и контейнеры

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

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

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

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

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

Преимущества Kubernetes

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

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

С помощью Kubernetes можно управлять как физическими, так и виртуальными серверными ресурсами, на которых запущены контейнеры, выбирая оптимальное количество контейнеров и балансируя нагрузку программного обеспечения приложений. Если возникают проблемы c ИТ-ресурсами, или же ресурсы в каком-то из дата-центров недоступны, то решение проблемы происходит автоматически, поскольку нагрузка перенаправляется в тот ЦОД, где есть свободные ресурсы.

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

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

Кроме того, все решения для Kubernetes, например, бесплатные Kubernetes DIY или платные VMware Tanzu, Redhat Openshift, Azure AKS, Amazon EKS, Google GKE и другие основаны на исходном коде Kubernetes и интерфейсах REST API. Поэтому контейнеризованные прикладные программы будут работать идентично на всех этих платформах при условии, что используются те же инструменты третьей стороны.

Выбор платформы: своя или чужая?

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

И это легко объяснимо. Компании осознают, что обслуживание кластеров DIY Kubernetes занимает много времени, простой обходится дорого, а одного-двух экспертов недостаточно для управления дюжиной кластеров с сотнями контейнеров, поэтому они выбирают стороннюю платформу, экономя время и другие ресурсы на обеспечение непрерывной работы своих приложений.

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

Марис Сперга, директор по развитию бизнеса ЦОД компании Tet