Что такое Kubernetes?

Kubernetes, также известная как K8s, — это система с открытым исходным кодом для автоматизации развертывания, масштабирования и управления контейнерными приложениями.

перед запуском kubernetes давайте немного разберемся в контейнеризации.

Что такое контейнеры?

Контейнеры состоят из образов контейнеров как метода упаковки программного обеспечения и его зависимостей, пространств имен для изоляции ресурсов и контрольных групп ядра Linux для ограничения ресурсов, таких как ЦП, ОЗУ и т. д.

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

Преимущества контейнеров
Контейнеры в некотором смысле превращают операционную систему хоста в контейнер (ОС), запуская приложение непосредственно на ЦП хоста и взаимодействуя с ядром хост-системы. Это дает вам возможность запускать несколько из них в одной ОС.

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

Оркестрация контейнеров

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

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

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

Что такое Kubernetes?

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

Возможности Kubernetes

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

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

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

4. Горизонтальное масштабирование и балансировка нагрузки. Kubernetes может увеличивать и уменьшать масштаб приложения в соответствии с требованиями с помощью простой команды, с помощью пользовательского интерфейса или автоматически в зависимости от загрузки ЦП.

Архитектура Kubernetes

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

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

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

Компоненты архитектуры Kubernetes или компоненты K8s включают плоскость управления Kubernetes и узлы в кластере. Компоненты машины уровня управления включают сервер Kubernetes API, планировщик Kubernetes, диспетчер контроллеров Kubernetes и т. д. Компоненты узла Kubernetes включают механизм выполнения контейнера или докер, службу Kubelet и прокси-службу Kubernetes.

Узел управления

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

Узел управления Kubernetes —

Как вы можете видеть на приведенной выше диаграмме, главный узел имеет различные компоненты, такие как сервер API, диспетчер контроллеров, планировщик и ETCD.

. Для взаимодействия с сервером KubeAPI мы можем использовать пользовательский интерфейс или инструмент Kubectl.

. Kubectl :инструмент командной строки для взаимодействия с сервером KubeAPI.
· Сервер KubeAPI:сервер API является точкой входа для всех команд REST, используемых для управления кластер.

· Диспетчер контроллеров: это демон, который регулирует работу кластера Kubernetes и управляет различными циклами непрерывного управления.

· Планировщик: планировщик распределяет задачи по подчиненным узлам. Он хранит информацию об использовании ресурсов для каждого подчиненного узла.

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

Рабочие узлы

Как вы можете видеть на диаграмме выше, рабочий узел имеет различные компоненты, такие как Kubelet, Kube-proxy и Pods.

· Kubelet: Kubelet получает конфигурацию Pod с сервера API и гарантирует, что описанные контейнеры запущены и работают.
Он также является основным узлом-агентом рабочего узла, который взаимодействует как с узлом, так и с контейнером в данном рабочем узле.

kubelet отвечает за

  • Поддержка набора модулей, состоящих из одного или нескольких контейнеров, в локальной системе.
  • Для регистрации узла в кластере Kubernetes, отправки событий и состояния модуля, а также создания отчетов об использовании ресурсов.

· Kube-proxy:Kube-proxy действует как сетевой прокси и балансировщик нагрузки для службы на одном рабочем узле.

· Поды. Под – это один или несколько контейнеров, которые логически работают вместе на узлах.

· Среда выполнения контейнера. Среда выполнения контейнера запускается на каждом из рабочих узлов и запускает настроенные модули, которые внутри содержат контейнеры. Ex of Container runtime —containerd, CRI-O, Docker

Компоненты kubernetes

  • Pods: наименьшая единица k8s, которая является абстракцией приложения-контейнера.
  • Службы: для управления внутренней связью на уровне модуля.
  • Ingress: для управления внешней связью между узлами.
  • ConfigMaps: для управления конечными URL-адресами, необходимыми модулям/базам данных.
  • Секреты. Для безопасного хранения паролей и секретных ключей на уровне приложений с помощью кодировки на основе 64.
  • Том: для постоянного хранилища данных.
  • Развертывание: развертывание, создание реплик и управление приложениями без сохранения состояния.
  • Statefulsets: для приложений и баз данных с отслеживанием состояния.

На этом все, до встречи в следующем блоге
Приятного обучения !!