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

Согласно ежегодному исследованию Cloud Native Computing Foundation (CNCF), 96% организаций либо используют K8, либо рассматривают возможность их использования. Если вы внимательно посмотрите, 5,8 миллиона разработчиков по всему миру используют Kubernetes, а это 31% разработчиков бэкенда по всему миру.

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

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

Что такое Kubernetes и зачем он вам нужен?

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

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

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

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

Возможности Кубернета

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

  • Автоматическое развертывание, масштабирование и откат — K8s роботизирует создание указанного вами количества реплик, распределение их по соответствующему (наиболее подходящему) оборудованию и перепланирование контейнеров, если узел находится в состоянии простоя. Вы можете мгновенно масштабировать свои реплики в зависимости от спроса или изменяющихся потребностей, таких как использование вашего ЦП.
  • Обнаружение служб, стабилизация нагрузки и вход в сеть — Kubernetes предлагает уникальное сетевое решение, включая внутреннее обнаружение служб и предоставление общедоступных контейнеров.
  • Приложения с состоянием и без него. В первые дни K8 в основном ориентировался на контейнеры без состояния. Поскольку технология развивается по многим направлениям, теперь она поддерживает встроенные объекты, представляющие приложения с отслеживанием состояния. Ратифицировано, любое приложение может работать в Kubernetes.
  • Регулирование хранения. Независимо от того, находитесь ли вы в локальной файловой системе, сетевом ресурсе или в облаке, Kubernetes предоставляет (абстрагирует) постоянное хранилище для приложений, работающих в контейнерах. А абстракция позволяет вам определять требования к хранилищу независимо от базовой инфраструктуры. Хотя это выходит за рамки данной статьи, в нем используются такие принципы, как постоянный том (PV), постоянный том (PVC), классы хранения и подключаемые модули томов.
  • Декларативное состояние — K8s использует файлы YAML (Yet Ain’t Markup Language), называемые манифестами объектов, для указания желаемого состояния вашего кластера. Манифесты определяют внешний вид вашего кластера, включая, помимо прочего, желаемые экземпляры приложений и сетевые правила, а также другие конфигурации. Когда вы применяете манифесты, K8s автоматически обрабатывает все переходы состояний — для этого вам не нужно писать сценарии.
  • Несколько рабочих сред. Вы не ограничены использованием Kubernetes в облаке или на рабочей станции разработчика. Почти каждый дистрибутив доступен для вашего конкретного варианта использования. Обратите внимание на крупных поставщиков облачных технологий, таких как Amazon Web Services, Google Cloud и Microsoft Azure. Вы поймете, что все они предлагают управляемые сервисы Kubernetes, в то время как дистрибутивы с одним узлом, такие как Minikube и K3, доступны для локального использования.
  • Super Extensivity – K8s представляет собой набор множества функций. Как будто этого недостаточно, вы можете расширить его возможности с помощью расширений. Вы можете создавать собственные типы объектов, операторы и контроллеры для оптимизации рабочих нагрузок.
  • Архитектура Кубернета

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

    Источник: kubernetes.io

    Вот еще разбивка.

    Главный узел (ы)

    Главный узел диктует состояния кластера и определяет действия каждого конкретного узла. Для настройки главного узла требуется несколько процессов.

  • API-сервер
    Здесь базируются все кластерные коммуникации. Это шлюз, который позволяет всем компонентам кластера обмениваться информацией. Он предоставляет Kubernetes API. Здесь сыграны две главные роли. Первая — это точка входа, которая позволяет пользователям взаимодействовать с кластером. Например, отправка запросов при использовании Kubectl. Во-вторых, привратник для аутентификации и проверки запросов. В этом случае выполнять запросы могут только определенные пользователи.
  • Планировщик
    Планировщик назначает приложения или объекты рабочей нагрузки Kubernetes рабочему узлу. Здесь планировщик размещает модули на узлах в зависимости от требований к ресурсам. А когда вы говорите о модулях, это всего лишь небольшая единица развертывания в Kubernetes.
  • Менеджер контроллера
    Этот модуль поддерживает кластеры, такие как сбои узлов, для поддержания правильного количества модулей. Он обнаруживает изменения состояния кластера, такие как смерть модулей, и пытается восстановить исходное состояние модуля. Например, если модуль случайно умирает, диспетчер контроллера запрашивает у планировщика подтверждение того, какой узел запускает новый модуль в качестве замены, а kubelet запускает новый модуль.
  • и т. д.
    Его также называют кластерным мозгом. Блок представляет собой хранилище ключевых значений для конфигурации кластера. Это означает, что все изменения кластера производятся здесь. Вы можете создать резервную копию кластера, сохранив распределенное хранилище значений ключа. Однако обратите внимание, что здесь хранятся только данные о состоянии кластера, а не данные приложения. Этот блок предназначен специально для хранения информации о состоянии кластера и использования ее для предшествующих процессов, предоставляющих им информацию о кластере.
  • Подчиненный(е) узел(ы)

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

  • Кубелет
    Это основная служба Kubernetes, которая запускает выполнение для уровня выполнения контейнера. Если убрать этот блок, Kubernetes — это не что иное, как REST API, поддерживаемый хранилищем ключей и значений. По умолчанию K8s выполняет приложение-контейнер. Контейнеры всегда изолированы друг от друга и базовой хост-системы. Это доказало свою аналитическую способность отделить управление отдельными приложениями друг от друга и от физической или виртуальной инфраструктуры.

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

  • Время выполнения контейнера
    Этот раздел запускает контейнеры. Например, вы можете использовать Docker, rkt или немного больше о том, как работают контейнеры.
  • Kube-прокси
    Этот модуль обеспечивает уровень абстракции для групп модулей узлов в соответствии с общими политиками, такими как в случае с балансировкой нагрузки. Все узлы применяют Kube-proxy для предоставления виртуального IP-адреса клиентам, обращающимся к динамическим модулям. Эта структура является решением для балансировки нагрузки при сохранении низкой производительности.
  • Как работает контейнеризация

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

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

    Читайте также: Контейнеры и виртуальные машины: объяснение различий

    Как установить и настроить Kubernetes

    Я потратил так много времени на теоретизирование; Каскадная секция будет тактической и потребует некоторого практического опыта работы с контейнерами. В этом учебном пособии особое внимание уделяется установке в операционной системе Windows.

    Существует несколько способов установки при использовании Windows; вы можете выбрать командную строку или графический интерфейс пользователя. Тем не менее, вы должны убедиться, что вы соответствуете следующим требованиям.

    Вашему оборудованию требуется главный узел с памятью не менее 2 ГБ и 700 МБ для рабочего узла. Что касается требований к программному обеспечению, Hype-v, Docker для настольных компьютеров, уникальный адрес Mac и уникальный UUID продукта для каждого узла. Вот пошаговый подход.

    Установка и настройка Hyper-V

    Hyper-V — это программное обеспечение виртуализации Windows по умолчанию. По сути, это VirtalBox на стероидах. Это позволяет вам управлять виртуальными машинами либо с помощью графического интерфейса Microsoft, либо из командной строки. Чтобы включить Hyper-V, выполните следующие действия.

  • Откройте панель управления.
  • Нажмите на программы на левой панели.
  • На странице программ и функций нажмите «Включить или отключить функции Windows».
  • Выберите функции Hyper-V и Hypervisor для Windows.
  • Затем выберите «ОК» на этом шаге; ваша машина должна перезагрузиться, чтобы активировать новые настройки.
  • Иногда ваш компьютер может перезагружаться несколько раз, чтобы убедиться, что все настроено правильно. Вы можете проверить успешность установки, введя следующую команду в Power Shell.

    Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V

    Убедитесь, что ваш экран заполнен состоянием «включено».

    Установка Докера

    Как вы уже знаете, K8s — это инструмент оркестрации контейнеров, созданный поверх контейнеров; в этом случае Docker — хороший выбор. K8s взаимодействует с Docker и управляет всем на уровне предприятия. Двигайтесь вперед, загрузив Docker для Windows. Если вам интересно, почему необходимо использовать Docker Desktop, он предпочтительнее для упрощения разработки, доставки и запуска доккеризованных (контейнерных) приложений.

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

    Установка Кубернетес

    Графический интерфейс Docker позволяет настраивать параметры, устанавливать и включать Kubernetes. Чтобы установить K8s, выполните следующие действия.

  • Щелкните правой кнопкой мыши значок Docker в трее и выберите свойства.
  • Выберите «Настройки» в раскрывающемся меню после нажатия «Свойства».
  • На левой панели выберите «Kubernetes» и нажмите «Применить».
  • Затем Docker установит некоторые дополнительные пакеты и зависимости. Процесс занимает от пяти до десяти минут, в зависимости от скорости вашего интернета. Вы можете использовать приложение Docker, чтобы убедиться, что все работает правильно.

    Поскольку приложения Kubernetes можно развертывать с помощью CLI, вам может потребоваться установить панель управления K8s, поскольку она не установлена ​​по умолчанию. Установите приборную панель, выполнив следующие действия.

  • Загрузите конфигурацию YAML.
  • Разверните приложение, используя этот код: . Kubectl применить -f .\recommended.yaml.
  • Подтвердите, что все настроено правильно: kubectl.exe get -f .\recommended.yaml.txt.
  • Чтобы получить доступ к панели управления, выполните следующую команду в Power Shell (не CMD)

  • Запустите следующий код ((kubectl -n kube-system description secret default | select-string «token:») — разделить «+»)[1]
    • Скопируйте сгенерированный токен и запустите прокси-сервер kubectl.
  • В браузере откройте эту ссылку.
  • Нажмите «Токен» и вставьте сюда свой токен.
  • Войти.
  • Если вы сделали это здесь, браво, ваш экран должен быть заполнен приборной панелью K8s. Теперь вы можете управлять своими приложениями, не выполняя тяжелую работу с помощью интерфейса командной строки.

    Читайте также: Как установить Kubernetes на Ubuntu 18

    Как создать и управлять кластером Kubernetes

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

  • Настроить сеть — здесь вам нужно настроить сеть между узлами кластера; позволить им общаться друг с другом.
  • Настройка аутентификации кластера — создание механизмов аутентификации и авторизации для доступа к кластеру.
  • Настройка основных компонентов; включает сервер API, планировщик и диспетчер контроллеров.
  • Присоединиться к рабочим узлам — подключить рабочие узлы к кластеру с помощью файлов конфигурации, предоставленных в процессе установки кластера.
  • Развертывание надстроек. Вы можете установить расширения для улучшения функциональности кластера.
  • Управляйте рабочими нагрузками. Пришло время развернуть ваши приложения.
  • Хотя это всего лишь обзор процесса создания кластера, он включает в себя множество шагов, включающих несколько команд. Вот официальное руководство по документации о том, как создавать кластеры перед развертыванием. Это должно быть вашей направляющей рукой.

    Как развернуть свое первое приложение с помощью Kubernetes

    Наиболее распространенной командой при использовании K8s является kubectl action resource, которая позволяет вам выполнять определенные действия, такие как создание или удаление указанного ресурса.

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

    Например, Kubernetes получает узлы –help. Разверните свое первое приложение K8s с помощью команды kubectl create deployment Kubernetes-bootcamp –image=gcr.io/google-samples/Kubernetes-bootcamp:v1.

    Заключительные слова

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

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

    Затем ознакомьтесь с руководствами по Kubernetes для начинающих.