Kubernetes: что может этот инструмент?

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

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

Что такое Kubernetes? История и назначение

Kubernetes едва исполнилось несколько лет, но он уже завоевал хорошую репутацию. Возможно, это объясняется его связью с технологическим гигантом Google. Когда компания запустила проект с открытым исходным кодом, Kubernetes разрабатывали некоторые сотрудники Google, но над программным обеспечением работало и много других сторонних разработчиков. Самая первая версия Kubernetes была выпущена в 2015 году. В настоящее время этот инструмент совместим с различными облачными платформами, такими как Azure и Amazon Web Services (AWS).

Однако изначально Kubernetes находился под сильным влиянием систем Borg и Omega компании Google, которые использовались для внутреннего управления кластерами. На тот момент виртуальные облачные приложения даже не рассматривались. Была выпущена версия с открытым исходным кодом, что сделало разработку Kubernetes публичной.

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

Kubernetes написан на языке Go, который является языком программирования, разработанным Google для использования в облаке, а также для использования на локальных компьютерах и в местных центрах обработки данных. Это стремление к поддержке облака также можно увидеть в постоянном развитии проекта. Сегодня Google и несколько других компаний под эгидой Cloud Native Computing Foundation продвигают этот проект с открытым исходным кодом, опираясь на помощь обширного сообщества.

Факт

Компания Niantic, разработчик мобильных игр, создала Pokémon GO с помощью Kubernetes. Вы можете прочитать об этом процессе в этом интересном тематическом исследовании.

Как работает Kubernetes?

Kubernetes — это система контейнерной оркестровки. Это означает, что программное обеспечение предназначено для управления, а не для создания контейнеров. Для этого Kubernetes полагается на автоматизацию процессов. Это облегчает разработчикам тестирование, поддержку и публикацию своих приложений. Архитектура Kubernetes имеет четкую иерархическую структуру:

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

Архитектура Kubernetes также основана на модели ведущий/ведомый. Узлы используются в качестве ведомых (т.е. управляемых частей системы). Они управляются и контролируются мастером Kubernetes.

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

Мастер и узлы имеют свою особую структуру.

Узел Kubernetes

Ведомый узел (также известный как миньон) — это физический или виртуальный сервер, на котором активны один или несколько контейнеров. Узел содержит среду выполнения для контейнеров. Также активен Kubelet. Это компонент, который обеспечивает связь с мастером. Он также запускает и останавливает контейнеры. Kubelet использует cAdvisor, который является сервисом для записи использования ресурсов. Это полезно при проведении анализов. Наконец, есть Kube-proxy, который используется для балансировки нагрузки и позволяет установить сетевой прокси, используя TCP, а также другие протоколы.

Мастер Kubernetes

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

  • Контроллер узлов следит за узлами и вмешивается, когда они выходят из строя.
  • Контроллер репликации гарантирует, что целевое количество стручков всегда работает одновременно.
  • Контроллер конечных точек управляет объектом конечной точки, который отвечает за объединение сервисов и капсул.
  • Контроллер учетных записей и токенов служб управляет пространством имен и создает токены доступа к API.

Вместе с менеджером контроллера работает база данных под названием etcd. В этой базе данных хранится конфигурация кластера, за которую отвечает мастер. Используя компонент планировщика, мастер может автоматически назначать капсулы узлам. При подключении к узлу используется API-сервер, встроенный в мастер. Он предоставляет REST-интерфейс и обменивается информацией с кластером через JSON. Это позволяет различным контроллерам, например, получать доступ к узлам.

Примечание

Вы также можете оркестровать кластеры с помощью IONOS. Мы предлагаем различные пакеты для создания специализированных кластеров Kubernetes.

Kubernetes и Docker: являются ли они конкурентами?

Невозможно ответить на вопрос, что лучше — Kubernetes или Docker. Потому что этот вопрос даже не возникает. Вы используете эти две программы вместе. Docker (или другая контейнерная платформа, например rkt) отвечает за создание и запуск контейнера на Kubernetes. Kubernetes получает доступ к этим контейнерам, оркестрирует и автоматизирует их процессы. Однако он не может самостоятельно создавать контейнеры.

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

Совет

Подробнее о различиях и возможных комбинациях этих двух систем вы можете прочитать в нашем сравнении Docker и Kubernetes.

Практическое применение Kubernetes и его преимущества

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

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

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

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

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

Совет

Вам интересно работать с Kubernetes? Вы можете воспользоваться нашим учебником по Kubernetes, чтобы начать работу с этим инструментом.

Оцените статью
cdelat.ru
Добавить комментарий