Эта статья была написана Скотт Култон , Microsoft Developer Advocation, посол CNCF и Captain Pocker. У него более 10 лет опыта работы в качестве инженера программного обеспечения в управляемых услугах и пространстве хостинга. Его конструктивные сильные стороны находятся в облачных вычислениях, автоматизации и безопасности.
Когда вы впервые начните свое путешествие Kubernetes, первое, что вам нужно учиться, — это то, как развернуть приложение. Есть несколько типов ресурсов, которые вы можете использовать, в том числе стручки, развертывания и Сервисы .
Сегодня мы сначала объясним, что делает каждый тип ресурса, а затем обсудить, когда и зачем использовать их в ваших приложениях.
Мы обсудим:
- Быстрая обмоска на Кубернетах
- Что такое стручки?
- Что такое услуги?
- Что такое развертывание?
- Что узнать дальше
Быстрая обмоска на Кубернетах
Kubernetes-это платформа управления контейнерами с открытым исходным кодом для развертывания и управления рабочими нагрузками в контейнер. При работе контейнеров в производстве у вас будут десятки, даже тысячи контейнеров. Эти контейнеры должны быть развернутыми, управляемыми и подключены, что трудно делать вручную. Вот где входит Kubernetes. Думать об этом как Контейнерный планировщик Отказ
Kubernetes предназначен для работы рядом Докер , который представляет собой платформу контейнеризации, которая упаковывает ваше приложение и все зависимости вместе в качестве контейнера.
Упрощенный: Docker используется для изоляции, упаковки и отправить ваше приложение в качестве контейнеров. Kubernetes — это планировщик контейнера для развертывания и масштабирования вашего приложения.
С Кубернетами мы можем:
- Развернуть услуги и развернуть новые выпуски без простояй,
- Запустить в частном или общественном облаке
- Разместить и масштабировать реплики обслуживания на наиболее подходящем сервере
- Проверьте здоровье наших услуг
- Основные объемы для применений
Теперь, когда у нас есть переподготовка к Куберату, давайте прыгнем в некоторые свои ресурсы и обсудим, когда их использовать. Мы начнем с стручки.
Что такое стручки?
POD — самый низкий или более атомная единица применения в Куберане. Важно отметить, что стручок не равен контейнеру в мире докеров. POD может быть состоит из Несколько контейнеров Отказ Если вы пришли с чистого фокера, это может быть трудно обернуть голову.
Подумайте об этом как о абстракции Kubernetes, которая представляет группу контейнеров и общих ресурсов для них. Например, POD может включать контейнер с вашим приложением Node.js и другим контейнером, который подает данные на веб-сервер.
POD — это способ представлять рабочий процесс в кластере.
Если POD может иметь более одного контейнера, как он работает? Есть некоторые ограничения, о которых мы должны знать. POD имеет следующее:
- Один IP-адрес
- Поделиться Localhost
- Общее пространство IPC
- Диапазон общего сетевого порта
- Общие объемы
Контейнеры в стручке разговаривают друг с другом через локальный хост, тогда как Cod-Pod Communication осуществляется через сервисы. Как вы можете видеть с иллюстрации, контейнеры в POD имеют IP-адрес.
Стручки — отличный способ для вас развертывать приложение, но есть некоторое ограничение в тип ресурса POD. POD — это единственное сущность, и если он не удается, он не может перезапустить себя. Это не устраивает большинство случаев использования, так как мы хотим, чтобы наши приложения были очень доступны. Но Kubernetes имеет этот вопрос решается, и мы посмотрим, как решать высокую доступность дальше на пост.
Узлы против стручков
В Кубейнетах стручок всегда будет работать на узле. Думайте о узле, как рабочая машина, управляемая мастером. Узел может иметь несколько стручков, и мастер автоматически планирует стручки через узл.
Анатомия стручка
PODS предназначены для запуска нескольких процессов, которые должны действовать как сплоченное устройство. Эти процессы обернуты в Контейнеры Отказ Все контейнеры, которые образуют POD на одной машине и не могут быть разделены на несколько узлов.
Все процессы (или контейнеры) внутри стручки имеют одни и те же ресурсы (такие как хранение), и они могут общаться друг с другом через Localhost
Отказ А объем похоже на каталог с разделяемыми данными. Их можно получить доступ к всем контейнерам и поделиться теми же данными.
Контроллер репликации
Мы только что узнали, что стручки смертны. Если они умрут, это их конец. Но что, если вы хотите иметь три версии одного и того же POD для доступности?
Введите Контроллер репликации Отказ
Основная ответственность контроллера репликации — предотвратить неудачу Отказ Он сидит над типом ресурса POD и контролирует его. Давайте посмотрим на пример.
Скажем, я хочу развернуть 4 POD X. Я бы создал набор реплик. Набор реплики имеет определенное количество стручков, которые необходимо запустить (в этом случае, 4). Если один из стручков выходит из строя или умирает, контроллер репликации запустит для меня новый стручок, и снова у меня будет 4 версии работы Pod X.
Эта функциональность обрабатывает эту проблему стручков. Однако важно отметить, что контроллер репликации не обрабатывает все, связанные с PODS, а именно, жизненным циклом. Скажем, мы хотим обновить стручки без простоя. Контроллер репликации не будет заботиться о этом.
Теперь, когда мы узнали о стручках, давайте перейдем к следующему ресурсу Kubernetes: Сервисы.
Держите обучение идти.
Мастер Куберанес, не очищающий видео или документацию. Исследовательские текстовые курсы просты в простоте и функционируют живые среды кодирования, что делает обучение быстро и эффективно.
Практическое руководство по Куберату
Что такое услуги?
Если мы хотим иметь подключение к нашим стручкам, нам нужно будет создать сервис. В Kubernetes сервис — это абстракция сети над набором стручков. Думайте об этом как о группе стручков, работающих на кластере. Услуги Kubernetes часто используются для власти Архитектура микровисса Отказ
Kubernetes дает стручки свои собственные IP-адреса и одно имя DNS для набора стручков, а также может загружать баланс через них. Они предоставляют функции для стандартизации кластера, например:
- Балансировки нагрузки
- Развертывание нулевого простоя
- Обнаружение услуг между приложениями
Это позволяет трафику быть нагрузкой сбалансированным для сбоев. Сервис позволяет Kubernetes установить одну запись DNS для стручков. Как мы упоминали ранее, каждый POD имеет отдельный IP-адрес. С типом ресурса обслуживания вы обычно определяете селектор, как пример ниже:
apiVersion: v1 kind: Service metadata: name: my-service spec: selector: app: MyApp
В дополнение к этому, Kube-Proxy
Также создает виртуальный IP в кластере для доступа к услуге. Этот виртуальный IP затем маршрутирует к IPS POD. Если изменение IPS POD или новые стручки развернуты, тип ресурса обслуживания отслеживает изменение и обновление внутренней маршрутизации от вашего имени.
Что такое развертывание?
Теперь для последнего куска головоломки: развертывание. Тип ресурса развертывания сидит над установленным репликом и может манипулировать их. Другими словами, развертывание предоставляют обновления для наборов реплики PODS.
Для этого вы описываете желаемое состояние в развертывании, а контроллер развертывания изменяется в желаемое состояние при контролируемой скорости. Это позволяет вам запустить приложение без вождения. Если вам нужно сделать обновление, вам нужно заменить набор реплик. Это действие приведет к вашему применению времени.
Одним из основных преимуществ Kubernetes является высокой доступностью. Развертывание дают нам функциональность делать Обновления без простоя. Как вы делаете в наборе реплик, вы указываете количество стручков, которые вы хотели бы запустить.
После того, как вы запускаете обновление, развертывание будет выполнять обновление проката на стручках при обеспечении успеха обновления для каждого POD, прежде чем перейти к следующему.
Давайте посмотрим на пример развертывания, чтобы увидеть, как они созданы.
kubectl create \ -f deploy/go-demo-2-db.yml \ --record kubectl get -f deploy/go-demo-2-db.yml
Вывод последней команды заключается в следующем.
NAME READY UP-TO-DATE AVAILABLE AGE go-demo-2-db 0/1 1 0 4s
Итак, что произойдет, если мы перевернум новую версию нашего приложения и что-то не так? Развертывание у нас также было покрыто там, как мы можем так же легко откатиться развертыванием.
Есть одно предупреждение к этому: если вы используете ПВХ (претензию на постоянное тому) и написали что-то по требованию. Это не будет отката. Развертывание управляющих наборов реплики, а реплики устанавливают контрольные стручки. Таким образом, при использовании типа ресурса развертывания вам по -прежнему нужна служба для доступа к нему.
Pro Tip: В производственной среде лучшая практика заключается в использовании развертываний для наших приложений в Kubernetes, но все равно важно понять, как работают развертывания.
Что узнать дальше
Поздравляю! Теперь вы узнали основы стручков, услуг и развертывания. Вы ознакомились с их использованием, плюсами и минусами. Есть еще много, чтобы научиться освоить Kubernetes и понять все, что он должен предложить для ваших приложений.
Хороший следующий шаг будет изучать следующее:
- Как определить стручки
- Компоненты планирования POD
- Создание Сплит API PODS
- Откатываясь от неудачных развертываний
- Обновление нескольких объектов
- и более
Чтобы начать работу с этими понятиями и многое другое, я рекомендую курс обучения Практическое руководство по Кубернетикам Отказ Вы начнете с основ Kubernetes и узнаете, как строить, тестировать, развернуть и обновить приложения.
Счастливое обучение!
Продолжить чтение о Kubernetes и Docker
- Развертывание вашего первого сервиса на Kubernetes: Демистифицирующий проход
- Начало работы с Docker и Kubernetes: Руководство для начинающих
- Docker Compose Tutorial: Advanced Docker сделал простой
Оригинал: «https://dev.to/educative/when-to-use-kubernetes-deployments-pods-and-services-2p4h»