Поиск по сайту:

Что делает Kubernetes и когда его следует использовать?


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

Что делает Kubernetes?

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

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

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

Но хотя Kubernetes предоставляет множество функций системы «Платформа как услуга» (PaaS), на самом деле он не предоставляет никакого оборудования. Kubernetes — это чистое программное обеспечение с открытым исходным кодом. Системы PaaS, такие как AWS EKS, строятся на основе Kubernetes и во многих случаях предлагают ему возможность выделять больше ресурсов для себя (автоматическое масштабирование).

Зачем использовать Kubernetes?

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

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

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

И если вам просто не нравится настраивать серверы и управлять ими, управляемый сервис Kubernetes, такой как AWS EKS, может решить эту проблему и сделать ваше приложение «бессерверным».

Как мне начать?

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

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

AWS EKS — это решение Amazon, которое может запускать приложения Kubernetes в нескольких зонах доступности AWS. EKS вообще не требует особой настройки; все, что вам нужно сделать, это предоставить новые узлы. Вы платите 0,20 доллара США в час (150 долларов США в месяц) за каждый запущенный кластер, а также платите за ресурсы EC2 и EBS, потребляемые вашими рабочими узлами.

Если вам не нужен полный кластер Kubernetes, но вы все равно хотите запускать контейнерные приложения, вы можете использовать Elastic Container Service (ECS) AWS. ECS запускает контейнеры Docker и имеет собственную систему масштабирования.

Служба Microsoft Azure Kubernetes (AKS) — это управляемая служба Kubernetes, которая хорошо интегрируется с конвейером Azure, упрощая переход от кода в системе управления версиями к контейнерам, развернутым в вашем кластере Kubernetes.

Google является первоначальным создателем Kubernetes, поэтому, естественно, они предлагают управляемый сервис Kubernetes через Google Cloud Platform.