Микросервисы используются в современных системах, чтобы поддерживать их масштабируемость и функциональность. Благодаря своим инструментам и функциям Kubernetes создает идеальные условия для совместной работы микросервисов. Решение в целом становится гораздо более гибким, поскольку каждый компонент приложения развертывается в контейнере. Обнаружение служб – это процесс обнаружения приложений и микросервисов в сети.
Метод автоматического поиска устройств и служб в сети известен как обнаружение служб. Протокол обнаружения служб (SDP) – это сетевой стандарт для обнаружения сетей и определения местоположения ресурсов, когда пользователям предоставляются подходящие ресурсы, такие как принтер или ноутбук с поддержкой Bluetooth. Обнаружение служб помогает уменьшить проблемы с настройкой.
Обнаружение службы выполняется в Kubernetes с использованием автоматически созданных имен служб, соответствующих IP-адресу службы. В Kubernetes модель сервисов предлагает самый простой, но важный компонент обнаружения микросервисов. Чтобы понять, как приложение работает в Kubernetes, требуется понимание обнаружения сервисов. Kubernetes Service Syncs стандартизирует и автоматизирует взаимодействие между сервисами, решая проблемы с контейнерами в дизайне микросервисов. Службы подключают модули к сети единообразным образом в кластерах.
Процесс определения того, как присоединиться к службе, известен как обнаружение службы. Обнаружение служб на стороне сервера и на стороне клиента – это основные типы обнаружения служб. Клиентские приложения могут использовать подходы к обнаружению служб на стороне сервера для поддержки через маршрутизатор или балансировщик нагрузки. Обнаружение служб на стороне клиента позволяет клиентским приложениям находить службы путем поиска или запроса реестра служб, содержащего экземпляры служб и конечные точки.
Экземпляры служб можно зарегистрировать в реестре служб и временно приостановить их использование двумя разными способами. Шаблон саморегистрации позволяет обслуживающим организациям регистрироваться независимо в реестре услуг. Шаблон сторонней регистрации предполагает, что другой системный компонент выполняет регистрацию и отмену регистрации для службы. Одним из компонентов, которые делают эту контейнерную платформу функциональной и адаптируемой, является обнаружение сервисов Kubernetes. Благодаря стандартизации передовые технологии, такие как сервисная сетка, делают обнаружение сервисов Kubernetes более эффективным. В этом разделе мы рассмотрим некоторые из основных процессов обнаружения сервисов в Kubernetes.
Давайте начнем с того, что соберем несколько необходимых сервисов, чтобы изучить, как концепции сервисов Kubernetes работают на практике. Давайте зайдем в терминал ОС Ubuntu 20.04 LTS, чтобы поговорить об обнаружении сервисов в Kubernetes. Для этого вы можете использовать область приложения или сочетание клавиш «Ctrl + Alt + T».
Чтобы инициализировать minikube, выполните команду, указанную ниже.
$ minikube start
Текущая версия minikube будет отображаться в выводе этой инструкции. Теперь мы создадим пространство имен с именем «develop» с помощью команды cat в оболочке.
$ cat << ENDL > develop-namespace.yml
Контент будет добавлен прямо в терминал, не открывая его из файла.
Чтобы сгенерировать пространство имен в терминале, используйте команду как:
$ kubectl apply -f develop-namespace.yml
Пространство имен создано эффективно. Теперь мы снова создадим другое пространство имен с именем «production», используя команду cat в оболочке.
Чтобы сгенерировать пространство имен в терминале, выполните команду как:
$ kubectl apply -f production-namespace.yml
Опять же, пространство имен было создано эффективно. Теперь мы собираемся развернуть наши примеры приложений в пространствах имен, которые мы создали ранее. Для этого мы создадим развертывание с именем «hello» для пространства имен develop с помощью команды cat в оболочке.
$ cat << ENDL > app-deployment-develop.yml
Контент будет добавлен прямо в терминал, не открывая его из файла.
Чтобы создать развертывание для пространства имен разработки, выполните команду как:
$ kubectl apply -f app-deployment-develop.yml
Развертывание создано эффективно. Опять же, мы создадим другое развертывание для пространства имен с именем «production», используя команду cat в оболочке.
$ cat << ENDL > app-deployment-production.yml
Чтобы создать развертывание для производственного пространства имен в терминале, используйте команду как:
$ kubectl apply -f app-deployment-production.yml
Развертывание было создано эффективно, как видно из отображаемых выходных данных. Теперь, чтобы определить модули и найти их IP-адреса, мы собираемся выполнить команду, указанную ниже, как:
$ kubectl describe pods --all-namespaces
IP-адреса для каждого модуля в выходных данных выше являются внутренними и уникальными для каждого случая. Каждый раз, когда мы повторно развертывали приложение, ему присваивался новый IP-адрес. Теперь мы можем проверить, можем ли мы пропинговать Pod внутри кластера. Создайте файл с помощью команды cat как.
$ cat << ENDL >> jumpod.yml
Чтобы создать модуль для пространства имен по умолчанию в оболочке, выполните команду как:
kubectl apply -f jumpod.yml
Jumpod создан. Проверьте связь с IP-адресом временного модуля в пространстве имен по умолчанию с помощью команды cat в оболочке с помощью команды kubectl exec.
$ kubectl exec -it jumpod ping 101.214.0.149
Система доменных имен – один из важнейших аспектов эффективного интернет-сервиса (DNS). Весь интернет-контент и веб-сервисы зависят от DNS, поэтому вы должны иметь возможность быстро решать любые проблемы. Инструмент под названием nslookup – один из способов сделать это. nslookup означает «поиск сервера имен». Он позволяет вам проверить информацию о доменном имени и обнаружить проблемы. Мы можем получить полное доменное имя модуля с помощью инструмента nslookup:
$ kubectl exec -it jumpod nslookup 101.214.0.149
Теперь, чтобы проверить внешний развернутый IP-адрес, мы выполним следующую команду:
$ kubectl get services --all-namespaces
Заключение
При переходе на микросервисы обнаружение сервисов, вероятно, является наиболее важной частью инфраструктуры для реализации. В этом руководстве мы увидели, насколько просто опубликовать приложение с помощью Kubernetes Services.