Kubernetes - Введение для начинающих

Что такое Kubernetes?

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

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

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

Облачная платформа Google (GCP) позволяет запускать Kubernetes всего за несколько кликов. Она поддерживается другими облачными провайдерами, такими как AWS и Azure. И есть несколько доступных управляемых платформ Kubernetes .

Почему Kubernetes?

Принцип работы Kubernetes

Ранее борьба между разработчиками и тестировщиками была обычным делом.

Среды раньше были разными для них; то, что работало в системе разработчика, не работало в системе тестеров.

Теперь, когда большинство организаций используют контейнеры, проблемы, возникающие из-за различий в среде, больше не возникают.

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

Особенности Kubernetes

Принцип работы Kubernetes

Их конечно же много, но мы выделили самые лучшие:

Автоматический Bin Packing

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

Балансировка нагрузки и Service Discovery

Kubernetes автоматически назначает контейнерам свои IP-адреса и DNS-имя контейнерам, выполняющим логические операции. Функция балансировки нагрузки также присутствует между набором контейнеров.

Хранение оркестровки

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

Самовосстановление

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

Горизонтальное масштабирование

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

Автоматический откат

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

Kubernetes и Docker

Kubernetes и Docker

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

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

Kubernetes планирует контейнеры, а затем Kubelet говорит Docker запускать или останавливать контейнеры. Kubelet в Kubernetes отвечает за мониторинг этих контейнеров и сбор их информации на главном узле. Итак, основное отличие состоит в том, что вместо администраторов, которые говорят Docker, что делать, в Kubernetes все автоматизировано.

Для оркестровки контейнеров используется еще один инструмент - Docker Swarm.