Компоненты кластера Kubernetes с акцентом на сервисы AWS Elastic Kubernetes

Опубликовано: 2 Сентября, 2022

Четыре из десяти корпоративных компаний, включенных в двухгодичный опрос Cloud Native Computing Foundation, сообщили, что они используют Kubernetes в производственных средах.

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

Нельзя отрицать, что Kubernetes завоевал всеобщее признание и штурмом берет мир. Но задумывались ли вы, будучи дилетантом, изучающим постоянно расширяющуюся область облачных вычислений, что такое Kubernetes? Что он делает и как устроен? В этой статье мы попытаемся кратко ответить на вышеупомянутые вопросы и разработать прочную основу для различных компонентов кластера Kubernetes. Он также включает сервисы Kubernetes, предоставляемые популярными поставщиками облачных услуг, такими как Amazon Web Services (EKS).

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

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

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

Что такое Кубернетес?

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

С точки зрения непрофессионала, Kubernetes похож на менеджера, который наблюдает за компьютеризацией операций с контейнерами, исключая ручные методы, изначально использовавшиеся при масштабировании и развертывании. Важно отметить, что Kubernetes — это не просто обычная система оркестрации, придерживающаяся выполнения предписанного, автоматизированного рабочего процесса. Это состав понятных независимых процессов управления, переводящих существующее состояние системы в предопределенное желаемое состояние. Различные поставщики общедоступного облака, такие как Amazon Web Services, предоставляют Elastic Kubernetes Services (EKS) с динамической гибкостью для запуска, запуска и масштабирования приложений Kubernetes в облаке или локально.

Еще одна особенность заключается в том, что когда мы говорим о Kubernetes (K8s), мы имеем в виду кластер Kubernetes. Кластер Kubernetes — это набор рабочих и управляющих единиц (узлов), запускающих и управляющих контейнерными приложениями. Внутри кластеров контейнеры могут работать в нескольких средах. Дистрибутив AWS EKS можно использовать для создания мощных и надежных кластеров Kubernetes. Теперь мы обсудим архитектурную структуру кластера Kubernetes и компоненты внутри него.

Каркас кластера Kubernetes

Изучив вышеупомянутую инфографику, вы можете сделать вывод, что типичный кластер K8s разделен на 2 основных блока: уровень управления и уровень данных. Давайте углубимся в специфику каждого блока и различных компонентов, встроенных в каждый из них.

Плоскость управления

Плоскость управления функционирует как мозг кластера K8s. Он принимает глобальные решения для кластера и реагирует на события кластера. Он также известен как главный узел. Это связано с тем, что в поставщиках облачных услуг, таких как AWS EKS, плоскость управления регулирует рабочий процесс различных рабочих узлов, зарегистрированных в ней. Kubernetes предоставляет гибкие сетевые интерфейсы в уникальных виртуальных частных облаках (VPC для подключения плоскости управления к рабочим узлам. Плоскость управления EKS также позволяет регистрировать журналы аудита и диагностики из плоскости управления в журналы CloudWatch для лучшего резервного копирования. Плоскость управления имеет 5 основные субъединицы.

1. Сервер Kube API . API — это интерфейс прикладного программирования, который позволяет двум приложениям взаимодействовать друг с другом и обмениваться данными. Сервер API предоставляет данные API без разработки пользовательских приложений, что упрощает поток данных. Сервер Kube API обеспечивает интерфейс для кластера, аутентифицируя и организуя состояние (данные). После определения достоверности состояния или запроса сервер Kube API обрабатывает его и разрешает аутентифицированным пользователям, внешним компонентам и компонентам кластера взаимодействовать друг с другом.

2. ETCD. Произносится как «et-cee-dee». Это хранилище ключей и значений с открытым исходным кодом (иерархически организованное). Это надежный и надежный способ хранения данных, которые будут использоваться кластером. ETCD позволяет пользователям читать и писать код, используя упрощенные инструменты HTTP, такие как curl. Следует отметить важный момент: если кластер K8s использует ETCD в качестве основного резервного хранилища, обязательно должен быть хорошо сформулированный план резервного копирования. Это связано с тем, что все объекты K8s хранятся в ETCD, и регулярные блокировки необходимы для восстановления кластеров в случае их потери в катастрофических сценариях. Встроенные моментальные снимки ETCD и моментальные снимки томов — это два широких спектра резервного копирования кластера ETCD. В AWS ETCD полностью управляется EKS. EKS запускает настраиваемый выделенный ETCD для каждого кластера и предлагает гибкость и масштабируемость.

3. Диспетчер контроллеров Kube — диспетчер контроллеров запускает процессы контроллера. Это как типичный руководитель проекта. Выполняемые им управляющие (незавершающие) циклы проверяют поток данных и общее состояние кластера с помощью API. AWS EKS Controller Manager регулирует процессы контроллера для достижения желаемой вехи. Обычно в кластере работают различные контроллеры. Но для облегчения рабочего процесса все контроллеры скомпилированы в единый процесс.

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

5. Диспетчер облачных контроллеров. Диспетчер облачных контроллеров запускает определенные контроллеры CSP. AWS EKS Cloud Controller Manager создает балансировщики нагрузки AWS и жизненные циклы узлов и управляет ими. Это означает, что локальным кластерам Kubernetes они не нужны. Как и в Kube Controller Manager, в Cloud Controller Manager также есть циклы управления, скомпилированные в один файл. Их основная функция — связать кластер с API CSP и отфильтровать компоненты, взаимодействующие только с кластером.

Плоскость данных

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

1. Pod . Pod — это самый маленький базовый развертываемый объект в кластере Kubernetes. Если вы снова посмотрите на инфографику, то увидите, что модуль содержит контейнер Docker (или любой другой контейнер). Модуль создает рабочий уровень среды для контейнера, чтобы абстрагироваться от среды выполнения контейнера, чтобы разрешить пользовательский интерфейс. Проще говоря, это абстракция, содержащая один или несколько докеров/контейнеров со специфическими для контейнера ресурсами, такими как сетевые ресурсы, общие тома и т. д. Под обычно поддерживает выполнение только одного приложения, но он также может запускать несколько приложений.

2. Сервисы. Точно так же, как у каждого веб-сайта есть URL-адрес для его идентификации, каждому модулю назначается IP-адрес для облегчения связи. Поскольку модули подвержены повреждениям и могут выйти из строя из-за сбоя службы, они могут легко реплицироваться и позже получить новый IP-адрес. Однако несоответствие IP-адреса может поставить под угрозу взаимодействие компонентов кластера. Сервис — это постоянный IP-адрес, выделенный каждому модулю. Таким образом, даже если модуль выйдет из строя и на его месте будет создан новый, у него будет тот же сервис, что и у предыдущего модуля.

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

4. Kubelet — Kubelet похож на локального менеджера для узлов. Он проверяет, работают ли контейнеры в соответствующих модулях. Kubelet не несет ответственности за контейнеры, которые не были созданы Kubernetes. Последняя версия модуля AWS Fargate в AWS EKS развернута с версией kubelet, которая совпадает с версией kubelet в обновленной плоскости управления кластером.

5. Прокси -сервер Kube. Прокси-сервер Kube — это сотрудники ГИБДД, которые следят за соблюдением сетевых правил в узлах. Это обеспечивает плавный поток трафика данных. Kube Proxy — это надстройка, но она очень важна для основного сервиса. В AWS EKS прокси-сервер Kube следит за сетевыми правилами на каждом узле экземпляра EC2. Они не развернуты на узлах Fargate.

Использованная литература:

  1. https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html
  2. https://kubernetes.io/docs/concepts/overview/components/#node-components
  3. https://kubernetes.io/docs/tutorials/kubernetes-basics/explore/explore-intro/
  4. https://docs.aws.amazon.com/eks/latest/userguide/managing-kube-proxy.html