Kubernetes

Что такое Kubernetes?

Что такое Kubernetes?

Что такое Kubernetes? И какова его архитектура?

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

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

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

Почему Kubernetes?

Теперь, зачем вам вообще нужна распределенная среда??

По многим причинам, прежде всего, это высокая доступность. Вы хотите, чтобы ваш сайт электронной коммерции оставался в сети 24/7, иначе вы потеряете бизнес, используйте для этого Kubernetes. Во-вторых, это масштабируемость, когда вы хотите «масштабировать». Горизонтальное масштабирование здесь предполагает добавление дополнительных вычислительных узлов, чтобы дать вашему растущему приложению больше места для работы.

Дизайн и архитектура

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

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

Типичное развертывание Kubernetes с высоты птичьего полета

Kubernetes Мастер

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

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

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

В API-сервер предоставляет Kubernetes API, который использует полезные данные JSON через HTTPS, для взаимодействия с пользовательским интерфейсом, с которым в конечном итоге будут взаимодействовать команды разработчиков или персонал DevOps. И веб-интерфейс, и интерфейс командной строки используют этот API для взаимодействия с кластером Kubernetes.

Сервер API также отвечает за связь между рабочими узлами и различными компонентами главного узла, такими как etcd.

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

Узлы Kubernetes

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

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

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

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

Зачем придумывать стручки?

В Docker есть политика запуска одного приложения на контейнер. Часто описывается как «Один процесс на контейнер» политика. Это означает, что если вам нужен сайт WordPress, вам рекомендуется иметь два контейнера: один для работы с базой данных, а другой для работы веб-сервера. Объединение таких связанных компонентов приложения в модуль гарантирует, что всякий раз, когда вы масштабируете, два взаимозависимых контейнера всегда сосуществуют на одном узле и, таким образом, быстро и легко взаимодействуют друг с другом.

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

Вернуться к Kubernetes Node

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

Вы не можете, и вам не нужно! Кубе-прокси это последний кусок головоломки, который позволяет операторам открывать определенные модули в Интернете. Например, ваш интерфейс можно сделать общедоступным, а kube-proxy будет распределять трафик между всеми различными модулями, которые отвечают за хостинг внешнего интерфейса. Однако ваша база данных не должна быть общедоступной, и kube-proxy будет разрешать только внутреннюю связь для таких внутренних рабочих нагрузок.

Тебе все это нужно??

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

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

Установите последнюю версию игры OpenRA Strategy в Ubuntu Linux
OpenRA - это игровой движок Libre / Free Real Time Strategy, воссоздающий ранние игры Westwood, такие как классическая Command & Conquer: Red Alert. Р...
Установите последнюю версию эмулятора Dolphin для Gamecube и Wii в Linux
Эмулятор Dolphin позволяет вам играть в выбранные вами игры Gamecube и Wii на персональных компьютерах (ПК) Linux. Являясь свободно доступным игровым...
Как использовать чит-движок GameConqueror в Linux
В статье содержится руководство по использованию чит-движка GameConqueror в Linux. Многие пользователи, играющие в игры на Windows, часто используют п...