Основные концепции, особенности и строительные блоки
Это сводная запись, которую я написал для себя после завершения « Кубернаны: вверх и бега ». Я решил, что это будет хороший способ заставить себя просматривать то, что я прочитал, и дал это для других, которые ищут TL; DR, Как бы я, если бы у меня было это.
Построен на плечах Google Borg , K8S («Кубернаны») — это контейнер Система оркестрации ; Очень мощный. K8S и его вся экосистема (инструменты, модули, дополнения и т. Д.) Написаны в Golang, что делает его по сути, что делает его в значительной степени коллекцией API-ориентированных, очень быстрых двоичных файлов, которые хорошо документируются и легко вносят вклад или создают приложения.
У него есть несколько основных концепций, которые, по какой-либо заинтересованной разработке DEV/OPS/заинтересованной, должны быть знакомы, чтобы получить понимание системы, ее различных способностей и понимают, почему почти все используют его.
Прежде чем двигаться, я хотел бы упомянуть лучшие друзья K8S (или соперников): ECS, NOMAD и MESOS. ECS, являющийся собственным решением AWS для оркестрации, который недавно представил EKS — управляемую систему K8 на AWS. Оба предложения Фаргейт , это позволяет пользователю забыть о работе физических ресурсов.
В то время как K8S без сомнения, большой победитель в номерах усыновления, который является функцией, являющейся системой открытой исходности, которые также доступны в его управляемой форме на каждом из трех основных облачных поставщиков; Тем не менее, все же сложнее и запуталось, чем другие. K8S может справиться практически любой вид контейнерной рабочей нагрузки и имеет много трюков вниз по рукавам, но это не значит, что Все должен запустить его. Компании могут быть так же счастливы с другими решениями, E.G Компании Интернет-продукта, которые исключительно развернуты на AWS, имеют гораздо лучшие шансы на пользу наслаждаться своей производственной жизнью с ECS, а не K8S, а не, а не EKS.
Имея это, K8S имеет свою магию — он может быть развернут где угодно, он имеет активное сообщество с сотнями основных разработчиков, а также тысячи других участников открытых источников в широкой экосистеме вокруг него. Это быстро, инновационные, модульные и ориентированные на API, что делает его супер-дружелюбной системой для создания дополнительных или услуг.
Так что без дальнейшего ADO давайте сделаем это; K8S Intro в 11 шагах:
1. Подвигание
Стручки являются единственным наименьшим взаимодействующим блоком в K8S. Стручок может состоять из нескольких контейнеров, которые образуют устройство, развернутое на одном узле вместе. POD получает один IP, который передается среди его контейнеров. В мире Micro-Service POD будет один экземпляр микросервиса, выполняющего некоторые фоновые работы, или обслуживает входящие запросы.
2. Узлы
Узлы машины. Они являются «голым металлом» (также могут быть виртуальными машинами), на которых K8S развертывает свои стручки. Узлы обеспечивают доступные кластерные ресурсы для K8, чтобы сохранить данные, выполнять задания, поддерживать рабочие нагрузки и создает сетевые маршруты.
3. Ярлыки и аннотации
Этикетки k8s и его конечные пользователи способ фильтровали аналогичные ресурсы в системе, они также являются клеем, где один ресурс должен «получить доступ» или относиться к другому ресурсу. Например, сервис, который хочет открыть порты для развертывания. Будь то для мониторинга, регистрации, отладки, тестирования, любой ресурс K8S должен быть маркирован для дальнейшей проверки. E.G:, этикетка, придаваемая всем работам работникам в системе, которая может быть позже выбрана с использованием поля с использованием инструмента KUBECTL или API K8S.
Аннотации очень похожи на этикетки, но обычно используются для хранения метаданных для разных объектов в виде струн фристайла, например, « Причина изменений: Обновление версии приложений для исправлений безопасности ».
4. Открытие услуг
Будучи оркестратором, контролируя многие ресурсы разных рабочих нагрузок, K8S управляет сетью для стручек, рабочих мест и любым физическим ресурсом, требующим связи. Для того, чтобы управлять этим, K8S использует Etcd Отказ ETCD — это база данных K8S «внутренняя», мастера используют его, чтобы знать, где все находится. K8S также имеет фактическое «открытие услуг» для ваших услуг — он использует пользовательский DNS-сервер, который использует все PODS, и вы можете разрешить имена других сервисов, чтобы получить их IP-адреса и порты. Он работает внутри кластера K8S «из коробки», и для его установки ничего не требуется.
5. Реплиссеты
В то время как стручки — это физическая рабочая задача, обычно не достаточно, чтобы использовать их один экземпляр. Для резервирования и обработки нагрузки стручки должны быть реплицированы по разным причинам I.e «масштабирование». Чтобы реализовать слой, который отвечает за масштабирование и репликацию, K8S использует Реплизетки Отказ Этот слой представляет желаемое состояние системы с точки зрения количества реплик, и содержит текущий статус для системы в любой момент.
Это также место для настройки автоматического масштабирования, где дополнительные репликации создаются, когда система загружается, а также масштаб, когда эти ресурсы больше не требуются для поддержки рабочей нагрузки.
6. Daemonsets
Иногда определенные приложения требуют не более одного экземпляра на каждом узле. Очень хороший пример — это коллектор журнала, такой как Filebeat Отказ Для того, чтобы агент собирать журналы из узлов, он должен быть на всех из них, но только один экземпляр этого. Для того, чтобы создать такую рабочую нагрузку, K8S имеет Daemonsets которые позволяют именно этому.
7. Государственные средства
Хотя большинство микросервисов мира связано с неизменными приложениями без гражданства, некоторые из них нет. Загородные нагрузки требуют надежно поддерживаться какой-то громкостью диска. Хотя сам контейнер приложений может быть неизменно и заменен новыми версиями или более здоровыми экземплярами себя, им понадобится постоянство их данных даже с другими репликациями. Для этого Государственные средства Разрешить развертывание приложений, которые требуют использования того же узла в течение всего их жизни. Это также сохраняет свое «имя»; оба Имя хоста
Внутри контейнеров и имени в открытии услуг по кластеру. Сосредоточенное состояние 3 зоопареводителей может быть названо ZK-1, ZK-2 и ZK-3 Он также может быть масштабирован, чтобы включить дополнительные члены, такие как ZK-4, ZK-5 и т. Д… Установкам также управлять персистентными ледами (ыми) (диски, связанные с подводами).
8. Рабочие места
Основная команда K8S подумала о подавляющем большинстве применений, которые будут использовать систему оркестрации. Хотя большинство требуют постоянного времени безотказной работы для одновременного сервера (например, веб-сервер), нам иногда нужна партия рабочих мест, которые должны быть вырезаны и убраны после завершения. Мини-скверная среда, если вы будете. Для того, чтобы достичь этого в K8S, мы можем использовать Работа ресурс. Работа — это именно то, что они звучат, рабочая нагрузка, которая вращает контейнеры, чтобы завершить определенную работу и быть уничтожена на Успешно завершение. Хорошим примером может быть набор рабочих, чтение заданий из очереди, которые будут обработаны и сохранены. Как только очередь пуста, рабочие больше не требуются, пока следующая партия не будет готова к обработке.
9. Configmaps & Secrets.
Если вы еще не знакомы с Двенадцать факторных приложений Манифест , вам следует. Одним из ключевых концепций современных приложений является окружающей средой и настраивается от введенных переменных среды. Приложение должно быть полностью агностика к его местоположению. Для достижения этой важной концепции в K8S нам дают Configmaps Отказ По сути, они являются спискими переменных среды для значений клавиш, которые передаются для выполнения рабочих нагрузок, чтобы определить различное поведение времени выполнения. На этой же области у нас есть Секреты ** какие ** похожи на нормальные записи конфигурации, за исключением зашифрованных для предотвращения утечек конфиденциальной информации, такой как клавиши, пароли, сертификаты и т. Д.
Лучший вариант, который я лично знаю, чтобы использовать секреты на любой системе, это хранилище Hashicorp. Обязательно прочитайте пост, который я писал об этом В прошлом году о причинах, по которым вы хотели бы хранить как часть вашего производства, а другой великий и Более техническая написано моим коллегой.
10. Развертывание
Это все хорошо и денди, когда у вас работают ваши стручки, даже с реплизкой сверху, масштабирования вещей, когда нагрузка требуется. Но мы все собрали здесь для быстрой замены наших приложений с более новыми версиями. Мы хотим построить, тестировать и отправить в небольшие куски, чтобы наслаждаться Короткие петли обратной связи Отказ K8S позволяет нам постоянно развернуть новое программное обеспечение, используя Развертывание ; Набор метаданных, описывающих новые требования от определенной рабочей нагрузки. Хорошим примером для этого является новая версия, исправление ошибки или даже откат (который является еще одним внутренним вариантом K8S).
Развертывание программного обеспечения в K8S имеет 2 главных Стратегии использовать:
Замена — как это звучит, заменит всю свою рабочую нагрузку новыми требованиями и естественным образом поддерживать простоя. Это хорошо для быстрой замены неработающих ресурсов.
Rollingupdate — K8S Способ медленно замена контейнеров новыми путем прослушивания двух конкретных конфигураций: a. MaxaVailable — Установка того, какой процент (или точное число) рабочей нагрузки должно быть доступно при развертывании новой версии, 100% значение «У меня есть 2 контейнера, сохраняйте 2 живых и обслуживающих запросы на протяжении всего развертывания». b. MaxSurge — устанавливает процент (или число) рабочей нагрузки для развертывания в верхней части текущего живого, 100% значений «У меня есть х контейнеры, развертываете еще один х-контейнеры, а затем начните выкатывать старые».
11. Место хранения
K8S добавляет слой абстракции на вершине хранения. Рабочие нагрузки могут запросить определенное хранение для разных задач и даже управлять постоянством, которые переживают срок службы определенного POD. Чтобы держать его коротким, я бы хотел сослаться на Недавний пост я опубликовал около K8S Storage И, в частности, почему он не будет решать полностью постоянные требования к постоянному данным, таких как развертывание БД.
Концептуальное понимание
K8S был (и все еще есть), разработанный и разработанный в свете нескольких руководящих направлений, каждая функция, концепция и идея встроены в систему, учитывая природу сообщества. Кроме того, конечные пользователи руководствуются, чтобы использовать систему определенным образом, хотя никогда не принудительно; Лучшие практики известны, но, но, будучи открытым исходным кодом и бесплатной системой, которая никому не принадлежит, вы можете делать все, что вы хотите тем не мение Вы хотите с этим.
API ориентирован — каждая часть в системе построена таким образом, что она взаимодействует с помощью хорошо документированной и оперативной API. Основные разработчики убедитесь, что вы, как конечный пользователь, могут вносить изменения, запросы и обновления, чтобы вы никогда не закрывали за маскирующими занавескими или нежелательными фильтрами.
Инструменты обертки Приветствуясь — как производное для предыдущей точки, K8S приветствует инструменты и обертки, которые будут построены вокруг и сверху его API. Он представляет себя как необработанную платформу, построенную очень настроенным способом для других для использования и дальнейшего разработки инструментов для разных случаев использования. Некоторые стали очень известными и широко используются как Spinnaker , ISTIO и многие другие.
Декларативное государство — пользователи рекомендуются использовать систему с декларативными описаниями, а не императивными. Это означает, что состояние и компоненты системы и компоненты системы лучше описываются как код, управляемый в какой-то варианте управления, как Git, а не исход ручных изменений, которые привели к определенной точке. Таким образом, K8s больше Доктор Стойкий, легко поделиться среди команд и передачи обязанностей.
Вот и все
Попытка сохранить сосредоточенность на введении K8S и основных концепций, это был список вещей, которые необходимо знать, когда введен в эту отличную систему. Конечно, K8S имеет другие очень важные области, такие как физические системы, такие как Кублет , Kube-Proxy , API-сервер и окончательный инструмент управления — kubectl . Я буду обсуждать эти и некоторые другие прохладные функции на моих следующих постах. Обязательно следуйте и оставайтесь на сегодня.
Меня зовут Омер, и я инженер в Продро — Глобальная консультация, которая обеспечивает программное обеспечение в надежном, безопасном и простом виде, приняв культуру DevOps. Дайте мне знать свои мысли в комментариях ниже, или связаться со мной прямо в Twitter @ ОМЕРГСР . CLAP Если вам понравилось, это помогает мне сосредоточиться на моих будущих писаниях.
Оригинал: «https://dev.to/prodopsio/an-8-minute-introduction-to-kubernetes-1oi»