Что такое нода в кластере
Перейти к содержимому

Что такое нода в кластере

  • автор:

Что такое Pods, Nodes, Containers и Clusters в Kubernetes

Что такое Pods, Nodes, Containers и Clusters в Kubernetes

Kubernetes (k8s) очень стремительно становится новым стандартом для деплоймента и менеджмента вашего кода в клауде. Вместе с тем, сколько фич предоставляет k8s, для новичка наступает высокий порог входа в новую технологии.

Документация по k8s достаточно обширна и довольно сложно пройти ее всю. Именно по этому эта статья служит неким обобщением для того, чтобы разобрать основные модули kubernetes.

Hardware

Nodes

node k8s

Node — это самая маленькая единица 'computing hardware в k8s. Это представление одной машины в вашем кластере. В большинстве производственных систем нодой, корее всего, будет либо физическая машина в датацентре, либо виртуальная машина, размещенная на облачном провайдере, таком как Google Cloud Platform, Azure, AWS. Однако, вы можете сделать ноду практически из чего угодно (например Rasbery PI).

Если обсуждать про машину как "ноду", можем разбавить это слоем абстракции, мы можем представлять ее как некий набор CPU, RAM ресурсов которые можно использовать. Таким образом любая такая машина может заменить любую другую машину как k8s кластер.

Cluster

cluster

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

В Kubernetes ноды объединяют свои ресурсы для формирования более мощной машины. Когда вы развертываете программы в кластере, он балансирует нагрузку по индивидуальным нодам для вас. Если какие-либо nodes добавляются или удаляются, кластер будет перемещаться по мере необходимости. Для программы или девелопера не должно быть важно, на каких машинах выполняется код в k8s. Можно сравнить такую систему с улием.

Persistent Volumes

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

Persistent Volumes

Для постоянного хранения данных Kubernetes использует Persistent Volumes. Хотя ресурсы ЦП и ОЗУ всех нодов эффективно объединяются и управляются кластером, постоянного хранение файлов — нет. Вместо этого локальные или облачные диски могут быть подключены к кластеру как постоянный том (Persistent Volumes). Это можно рассматривать как подключение внешнего жесткого диска к кластеру. Persistent Volumes предоставляют файловую систему, которая может быть подключена к кластеру без привязки к какому-либо конкретному ноду.

Software

Контейнеры

containers

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

Контейнеризация позволяет вам создавать self-contained environments. Любая программа и все ее зависимости могут быть объединены в один файл и затем опубликованы в Интернете. Любой может загрузить контейнер и развернуть его в своей инфраструктуре с минимальными настройками. Создание контейнера может быть сделано и скриптом, позволяя строить CI/CD пайплайны.

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

pods

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

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

Pod'ы могут содержать несколько контейнеров, но вы должны ограничивать их количество, когда это возможно. Поскольку контейнеры масштабируются как единое целое, все контейнеры в паке должны масштабироваться вместе, независимо от их индивидуальных потребностей. Это приводит к потраченным впустую ресурсам и дорогому счету. Чтобы решить эту проблему, Pod'ы должны оставаться меньше на сколько это возможно, обычно вмещая только основной процесс и его тесно связанные вспомогательные контейнеры (эти вспомогательные контейнеры обычно называют Side-cars).

Deployments

deployemnt

Хотя в Kubernetes pod являются базовой единицей вычислений, они, как правило, не запускаются напрямую в кластере. Вместо этого pod обычно менеджится еще одним уровнем абстракции — deployment.

Основная цель юзать подход с deployment состоит в том, чтобы настроить, сколько реплик pod'а должно работать одновременно. Когда развертывание добавляется в кластер, оно автоматически деплоит требуемое количество pod'ов и отслеживает их. Если pod умирает, deployment автоматически пересоздает его.

Используя deployment, вам не нужно иметь дело с подами вручную. Вы можете просто объявить желаемое состояние системы, и оно будет управляться автоматически.

Ingress

ingress

Используя описанные выше концепции, вы можете создать кластер нодов и запустить деплоймент подов в кластере. Однако есть еще одна проблема, которую необходимо решить: разрешить внешний трафик вашему приложению. По умолчанию Kubernetes обеспечивает изоляцию между модулями и внешним миром. Если вы хотите общаться с сервисом, работающим в pod, вам нужно открыть канал для связи. Это называется Ingress.

Есть несколько способов добавить ingress в ваш кластер. Наиболее распространенными способами являются добавление либо ingress controller, либо LoadBalancer. Описание различий и что лучше выбрать выходит за рамки этой статьи, но вы должны держать в голове что вам нужно разобратся с доступом к сервису, если вы хотите работать с k8s.

Знакомство с Kubernetes. Часть 0: Что это?

Apr 15, 2018 14:17 · 479 words · 3 minute read kubernetes

Kubernetes — это проект с открытым исходным кодом для управления “флотом” контейнеров на нескольких хостах, объединенных в кластер. Данный инструмент призван обеспечить основные механизмы развертывания, обслуживания и масштабирования приложений, упакованных в контейнеры.

Разработка Kubernetes была начата в Google, которая уже более десяти лет использует похожий инструмент (закрытый и недоступный для сообщества) для оркестрации контейнеров — Borg . В данный момент Kubernetes передан под управление Cloud Native Computing Foundation (CNCF) и теперь поддерживается многими компаниями, в том числе Microsoft, RedHat, IBM и Docker.

Если вы используете контейнеры (docker/rkt — здесь под контейнером мы понимаем упакованное приложение со всеми необходимыми для работы зависимостями), то рано или поздно возникает вопрос с развертыванием, обновлением, масштабированием контейнеров, балансировкой траффика между ними, обнаружением сервисов и т. д. Именно эти (и некоторые другие) проблемы и призван решить Kubernetes .

Взаимодействуя с API можно описать желаемое состояние вашего приложения (например, количество реплик или размещение на определенном хосте) и Kubernetes сделает все необходимое для обеспечения соответствия текущей инфраструктуры желаемой — будет запускать поды (группы из одного или нескольких контейнеров), реплицировать их, “поднимать”, если некоторые поды “упадут” и т.д..

Kubernetes довольно гибкий, кластер можно поднять практически в любом месте. Например, Kubernetes присутствует в Docker for Mac, его легко установить и запустить на компьютере под управлением Windows и тем более Linux. Естественно, Kubernetes работает на Google Compute Engine (GKE) и с некоторыми особенностями на виртуалках других облачных провайдеров (AWS, Azure).

Кластер Kubernetes состоит из одной или нескольких нод (напомню, нода может быть физической или виртуальной машиной). Если в кластере есть несколько нод, то они объединены в кластерную сеть. Вне зависимости от количества нод, все кластеры Kubernetes имеют одни и те же компоненты (components).

Компонентами кластера могут быть:

  • kube-apiserver — ключевой компонент системы. Он предоставляет JSON REST API, использующий HTTP в качестве транспорта и используется для организации внешнего и внутреннего доступа к функциям Kubernetes ;
  • etcd — легкий распределённый движок хранилища ключ-значение (используется для хранения конфигурационных данных приложений в кластере);
  • kube-scheduler — компонент системы (один из контроллеров), который выбирает, на какой ноде должен запускаться какой под, исходя из доступности ресурсов;
  • kube-controller-manager — часть мастер-ноды, запускающая основные контроллеры Kubernetes (Node Controller, Replication Controller, Endpoints Controller, Service Account & Token Controllers);
  • cloud-controller-manager — часть мастер-ноды, запускающая контроллеры, необходимые для взаимодействия с облачными провайдерами (Node Controller, Route Controller, Service Controller, Volume Controller);
  • kubelet — отвечает за статус подов на ноде (запуск, останов и управление контейнерами);
  • kube-proxy — компонент, ответственный за маршрутизацию входящего трафика на конкретные контейнеры, работающие в пределах пода.

Наилучший способ познакомиться с работой в кластере под управлением Kubernetes — установить его. Самый простой способ — “поиграть” с кубернетесом на сайте Play with Kubernetes. Второй по сложности вариант — установить Minikube — утилиту командной строки для настройки и запуска однонодового кластера Kubernetes в виртуальной машине на локальном компьютере. Также, если есть в наличии один (или несколько) компьютеров (или виртуальных машин) и желание “покопаться” поглубже, можно настроить свой кластер самостоятельно (чем мы и займемся в следующей статье).

Нода — что это? Виды и примеры

Что такое нода? Простыми словами — мы запускаем устройство, будь то компьютер, ноутбук или виртуальный сервер, который в свою очередь подключается к сети той или иной криптовалюты.

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

Существуют различные виды нод — полные ноды, майнинг ноды, мастерноды и облегченные ноды.

Полные ноды — они подключаются к основной сети и сохраняют все данные блокчейна в отдельную папку. Данные ноды гарантируют жизнеспособность сети криптовалюты, участвуя практически во всём, что нужно для поддержания сети. С полных нод мы ничего толком не заработаем. Но ради интереса, можно посмотреть сколько весят блокчейны:

Размер блокчейна биткоина — 335.19 Гб.

А эфириума — 217.32 Гб.

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

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

DASH — самая известная криповалюта, работающая с протоколом мастерноды, и поддерживаемая тысячами пользователей по всему миру.

И конечно облегченные ноды — это как блиц версии игр. С помощью них мы имеем крипто-кошельки вроде SafePal и TrustWallet. Они могут работать удаленно, то есть их можно поставить в виртуальный сервер, а они будут там бесперебойно работать. Но за ними надо следить, мало ли, что-то случится.

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

К чему я это всё? Да просто для общего развития и конечно для понимания всего происходящего.

Kubernetes

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

«IT-специалист с нуля» наш лучший курс для старта в IT

Kubernetes разработала компания Google на основе более ранней системы управления кластерами Borg. Первое название — Project Seven, в честь героини сериала Star Trek. Аллюзией на нее также являются семь ручек на штурвале логотипа проекта. Современное название отсылает к греческому слову «рулевой». Исходный код системы был представлен в 2014 году. После выхода версии 1.0 в 2015 году Google в сотрудничестве с Linux Foundation основала фонд Cloud Native Computing Foundation (CNCF) и передала ему Kubernetes в рамках начального технологического вклада.

Логотип ПО Kubernetes

Что представляет собой контейнеризация

Контейнеризация приложений — одно из ключевых понятий в работе Kubernetes. Для его понимания кратко рассмотрим подходы к развертыванию приложений на серверах.

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

Виртуальная машина. Это программная или аппаратная эмуляция работы одной или нескольких гостевых платформ (quest) на платформе-хозяине (host). Виртуальная машина имитирует компоненты аппаратного обеспечения или целый ПК с отдельной ОС. Это позволило эффективнее разграничить ресурсы физического сервера между ВМ и масштабировать их работу.

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

Преимущества контейнеризации:

  • простота и гибкость развертывания приложений по сравнению с ВМ;
  • непрерывность создания, интеграции и развертывания контейнера с возможностью быстро откатить изменения;
  • создание контейнеров приложений в процессе сборки/релиза и отделение приложения от аппаратной инфраструктуры;
  • идентичность среды разработки и тестирования на сервере и терминалах разработчика (ноутбуках, ПК);
  • возможность переносить приложения между облаками и ОС — Ubuntu, RHEL, CoreOS, on-prem, Google Kubernetes Engine и т.д.;
  • разделение приложений на изолированные, распределенные, гибкие микросервисы с динамическим развертыванием и управлением.

Попробуйте 9 профессий за 2 месяца и выберите подходящую вам

vsrat_7 1 (1)

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

Сами по себе контейнеры — это способ развертывания и запуска приложений на сервере. Если контейнеров несколько, важно настроить их совместную работу так, чтобы они не отбирали друг у друга ресурсы аппаратной платформы и эффективно их расходовали. Кроме развертывания и запуска контейнеров, разработчику нужно периодически исправлять ошибки. Делать это вручную очень сложно. Kubernetes позволяет автоматизировать большинство процессов. Это называется «оркестрация контейнеров». Платформа может масштабировать приложения и обрабатывать возникающие ошибки, распределять ресурсы, поддерживать баланс между контейнерами и т.д. Но K8s работает не один. Чтобы он мог запустить приложения и службы в контейнерах, каждый должен быть оснащен средой выполнения. Это может быть Docker, rkt или runc.

Kubernetes действует на уровне логики, а не аппаратного обеспечения, по принципу «ведущий — ведомый». Управление системой основано на двух подходах:

  • декларативном — разработчик задает цели, а не пути их достижения, которые система автоматически выбирает сама;
  • императивном — разработчик может распоряжаться ресурсами с помощью команд «Создать», «Изменить», «Удалить».

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

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

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

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

Курс для новичков «IT-специалист
с нуля» – разберемся, какая профессия вам подходит, и поможем вам ее освоить

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

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

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

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

Основные объекты кластера Kubernetes

Объекты — сущности, которые в архитектуре Kubernetes используются для представления состояния кластера.

объекты кластеров Kubernetes и схема взаимодействияСхема взаимодействия основных объектов K8s

Nodes (ноды, узлы)

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

Nodes бывают двух типов:

  1. Master (мастер-нода) — узел, управляющий всем кластером. Он следит за остальными нодами и распределяет между ними нагрузку с помощью менеджера контроллеров (controller manager) и планировщика (scheduler). Как правило, мастер-нода занимается только управлением и не берет на себя рабочие нагрузки. Для повышения отказоустойчивости существует несколько мастер-нод.
  2. Worker (рабочие ноды) — узлы, на которых работают контейнеры. В зависимости от параметров ноды (объема памяти и центрального процессора) на одном узле может работать много контейнеров. Чем больше рабочих узлов, тем больше приложений можно запустить. Также количество влияет на отказоустойчивость кластера, потому что при выходе из строя одной ноды нагрузка переносится на другие.

Pods (Поды)

Это абстрактный объект Kubernetes, представляющий собой «обертку» для одного или группы контейнеров. Контейнеры в поде запускаются и работают вместе, имеют общие сетевые ресурсы и хранилище. Kubernetes не управляет контейнерами напрямую, он собирает их в поды и работает с ими.

Помогайте компаниям быстрее выпускать качественный продукт

cables (3)

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

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

Поды, объединяющие несколько контейнеров, встречаются реже. Например, когда надо объединить взаимосвязанные приложения, зависящие друг от друга. Запускать их отдельно бессмысленно.

поды в контейнере на одном узле k8sПоды с контейнерами находятся на одном узле

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

Controllers (контроллеры)

Контроллеры — это общее название средств управления, следящих за кластером и поддерживающих желаемое его состояние. Существует несколько типов контроллеров:

  • Deployment (развертывание). Набор алгоритмов и директив, описывающих поды, число их экземпляров, порядок их замены при изменении характеристик. С его помощью разработчик декларирует изменения нодов и наборов реплик. Это самый популярный способ разместить приложение в Kubernetes.
  • ReplicaSet(набор реплик). Описывает и управляет работой нескольких подов на кластере. Чем больше таких реплик, тем выше устойчивость системы к отказам и лучше масштабируются приложения.
  • StatefulSet(набор состояния). Контроллер применяется для управления приложениями с отслеживанием состояния (stateful-приложениями) с использованием постоянного хранилища.
  • DaemonSet(набор «демонов»). Представляет собой совокупность «демонов» (фоновых программ, работающих без взаимодействия с пользователем) и отвечает за запуск одной реплики выбранного пода на каждом отдельном узле. То есть по мере добавления узлов в кластер добавляются и поды.
  • Job(задание). Контроллер, отвечающий за однократный запуск выбранного пода и завершающий его работу. CronJob — его разновидность, запускающая группу заданий по заданному расписанию.

Services (сервисы)

Сервисы объединяют поды в логическую группу и определяют политику доступа к ним. По функционалу они напоминают маршрутизатор и балансировщик нагрузки между подами.

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

сервисы KubernetesКак работают сервисы в Kubernetes

Persistent Volumes (постоянные тома)

Это способ хранения данных между перезапусками контейнеров.

Контейнеры могут в любой момент быть уничтожены или перезапущены. Их идея в том, что они легко «умирают» и заново появляются при необходимости. Поэтому все постоянные данные должны храниться вне контейнера. Но в целях безопасности контейнеры изолированы от основной системы. Кроме того, для отказоустойчивости могут создаваться несколько экземпляров контейнеров. Появляется новая проблема: нужно синхронизировать данные между репликами.

Для решения этих проблем в Kubernetes есть Persistent Volumes. Это постоянные тома, жизненный цикл которых не связан с подами и контейнерами. Самостоятельные ресурсы создаются и управляются отдельно.

Namespaces (пространства имен)

Это возможность разделить физический кластер Kubernetes на виртуальные, каждый из которых изолирован от других. Обычно пространства имен создаются для того, чтобы разделить команды, разные проекты или среды развертывания (dev, test, prod).

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

В каждом Namespaces есть свои ресурсы: сервисы, поды, развертывания. В одном пространстве имен они должны иметь уникальные названия, но эти же названия допустимо использовать в других пространствах. В Namespaces входят не все ресурсы: например, Persistent Volumes и ноды доступны всему кластеру.

Namespaces в кластере KubernetesОтдельные Namespaces в кластере Kubernetes

Основные компоненты кластера

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

 архитектура компонентов кластера k8sПростая архитектура компонентов кластера

Кластер Kubernetes включает следующие компоненты:

  • kube-apiserver. С помощью сервера API обеспечивается работа API кластера, обрабатываются REST-операции и предоставляется интерфейс, через который остальные компоненты взаимодействуют друг с другом. Также через него проходят запросы на изменение состояния или чтение кластера. Работает на master-нодах;
  • kube-scheduler. Компонент, планирующий, на каких узлах разворачивать поды. Он учитывает такие факторы, как ограничения, требования к ресурсам, местонахождение данных и пр. Работает на master-нодах;
  • etcd. Распределенное хранилище в формате «ключ-значение». В нем хранится состояние всего кластера. Главная задача etcd — обеспечить отказоустойчивость кластера и консистентность данных. Etcd — самостоятельный проект. Он развивается отдельно от Kubernetes и применяется в разных продуктах. Работает на master-нодах;
  • kube-proxy. Служба, которая управляет правилами балансировки нагрузки. Она конфигурирует правила IPVS или iptables, через которые выполняются проксирование и роутинг. Работает на worker-нодах;
  • kube-controller-manager. Компонент запускает работу контроллеров. Работает на master-нодах;
  • kubelet. Cлужба, которая управляет состоянием ноды: запуском, остановкой и поддержанием работы контейнеров и подов. Работает на worker-нодах.

Преимущества и недостатки Kubernetes

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

Портативность и гибкость

Kubernetes не зависит от аппаратного обеспечения. Работающую платформу можно переносить на другой сервер, в частное или общедоступное облако. Главное требование — операционная система хоста должна иметь подходящую версию ОС Linux и Windows.

Экономичность

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

Поддержка мультиоблачности

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

Эффективное распределение задач

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

Наличие развитой экосистемы

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

Надежность

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

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

Станьте DevOps-инженером и помогайте командам фокусироваться на создании качественного продукта. Профессия отлично подойдет разработчикам, тестировщикам и сисадминам

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *