К основному контенту

☸️ Определение пода Kubernetes в качестве службы NodePort

Не так давно я начал собирать кластер Kubernetes в своей локальной сети, где у меня нет OpenStack или OpenShift, которые могли бы предоставить мне IP балансировщика нагрузки.

Большинство облачных платформ имеют уже написанную логику балансировки нагрузки, которая может предоставлять IP-адрес при создании сервиса с типом LoadBalancer.

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

ПРИМЕЧАНИЕ. Вам нужно будет вручную ввести NODE IP: EXPOSE PORT в свой предварительный балансировщик нагрузки. Если у вас есть автоматизация, которая может сделать за вас, это здорово! Чтобы открыть ваш под за пределами кластера Kubernetes, вам нужно создать файл yaml, а затем развернуть его на главном узле. Есть и другие способы предоставления сервиса пода через командную строку.

Я дойду  до этого в конце этого раздела.

Сначала я создам под, а затем перейду к службам.

Если вы уже знаете, как создавать поды с метками, вы можете пропустить этот раздел.

Развернем Pod

kubectl run nginx-demo --image=nginx --port=80 --labels="name=nginx-demo"
Выполните kubectl get pods, чтобы получить статус только что созданного pod.
$ kubectl get pods NAME READY STATUSRESTARTS AGE nginx-demo-74df6b89b6-lkjvq1/1 Running 01m
Как только под создан и находится в рабочем состоянии, мы продолжим работу и начнем с сервисов для создания NodePort.

Создадим сервис NodePort

Сервис NodePort предоставляет порт на каждом сервере, который будет перенаправлять трафик на ваш под.

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

Сгенерируем файл yaml для создания NodePort.

vi nginx-demo-nodeport-svc.yaml

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

apiVersion: v1 kind: Service metadata: name: nginx-demo labels: name: nginx-demo-nodeport-svc spec: type: NodePort ports: - port: 80 nodePort: 30180 name: http - port: 443 nodePort: 31443 name: https selector: name: nginx-demo
Давайте создадим  службу NodePort.
kubectl create -f nginx-demo-nodeport-svc.yaml
Выполните kubectl get services, чтобы отобразить сервисы
$ kubectl get services NAME TYPECLUSTER-IPEXTERNAL-IP PORT(S)AGE kubernetes ClusterIP 10.96.0.1 443/TCP4d nginx-demo NodePort10.98.148.146 80:30180/TCP,443:31443/TCP 1m
После того, как вы создали сервис, вы должны увидеть nginx-demo, созданный с портами, которые были определены в файле yaml. Теперь давайте получим IP-адрес узла, где находится наш под. Затем мы можем выполнить curl или просмотреть его в браузере.
kubectl get pods -o wide
Вывод:
$ kubectl get pods -o wide NAME READY STATUSRESTARTS AGE IPNODE nginx-demo-74df6b89b6-lkjvq1/1 Running 044m 10.244.1.15 k8s-worker-node1
Проверим по DNS
$ nslookup k8s-worker-node1 Address: 192.168.0.151

Выполнение тестирования

Используя Curl:

$ curl 192.168.0.151:30180    Welcome to nginx!  body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; }    

Welcome to nginx!

If you see this page, the nginx web server is successfully installed and working. Further configuration is required.

For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.

Thank you for using nginx.

Просмотр через браузер:

Использование командной строки для создания сервиса NodePort

kubectl expose deployment nginx-demo --port=80 --type=NodePort

Вывод:

 kubectl get services NAME TYPECLUSTER-IPEXTERNAL-IP PORT(S)AGE kubernetes ClusterIP 10.96.0.1 443/TCP4d nginx-demo NodePort10.100.95.8180:32546/TCP 4s
ПРИМЕЧАНИЕ. Когда вы создаете развертывание для NodePort через командную строку, вы не можете назначить порт вручную. Кластер автоматически назначит один динамически. Если вы должны назначить порт вручную, используйте шаблон yaml и создайте развертывание.

Комментарии


Дистанционная компьтерная помощь, удаленная компьютерная помощь онлайн.

Популярные сообщения из этого блога

Лучшие плагины для OBS Studio

Open Broadcast Software или OBS - это свободное программное обеспечение с открытым исходным кодом для стриминга аудио и видео данных в сеть интернет. Программа полностью кроссплатформенная и может работать в Windows, Linux или MacOS. Это отличная альтернатива для таких программ, как Wirecast и XSplit. OBS использует для вещания стандартный протокол обмена сообщениями в реальном времени, а поэтому может транслировать данные в любой сервис, поддерживающий это, например, Yotube. Несмотря на широкие возможности OBS, программа поддерживает еще и множество плагинов. В этой статье мы рассмотрим лучшие плагины для OBS Studio, которые вы можете использовать. Содержание статьи: Лучшие плагины OBS Studio 1. Browser Source Plugin 2. Video Source Plugin 3. Simple Scene Switcher 4. DirectShow Audio Source 5. CLR Browser Source 6. OBS Remote 7. AMD Advanced Media Framework Encoder 8. Text Source Plugin Выводы Лучшие плагины OBS Studio Чтобы найти плагины OBS Studio для Video пользователям пр…

Лучшие аналоги Paint для Linux

Когда я работал в Windows, я часто использовал стандартную программу редактора изображений Windows - Paint. Не всегда нужен очень и многофункциональный инструмент вроде Photoshop или Gimp. Иногда, чтобы подправить ту или иную картинку, дорисовать на ней несколько фигур или вставить текст достаточно простого, легкого в освоении графического редактора вроде Paint. В Linux таких программ довольно много. В этой инструкции мы рассмотрим лучшие аналоги Paint для Linux. В этот список не будут включены такие программы, как Gimp и Krita, ведь это полнофункциональные графические редакторы, векторные редакторы, такие как Inkscape мы тоже рассматривать не будем. А теперь перейдем к списку. Содержание статьи: KolourPaint MyPaint Gnome Paint XPaint Pinta mtPaint GPaint Rassam-paint Выводы KolourPaint На первом месте в списке аналогов Piant для Linux будет KoloutPaint. Это стандартный графический редактор для окружения рабочего стола KDE. Он поддерживает множество форматов изображений PNG, J…

Подключение OneDrive в Linux

OneDrive (Ранее известный как SkyDrive) это популярное облачное хранилище файлов от Майкрософт. Сейчас OneDrive бесплатно предоставляет 7 гигабайт пространства новым пользователям. Как вы знаете OneDrive хорошо интегрирован с другими продуктами компании  Microsoft. В OneDrive Также есть официальный клиент который автоматически загружает ваши видео и фотографии с камеры в облако. Но к сожалению этот клиент недоступен для операционных систем семейства Linux. Но не все так плохо. Сообщество открытого программного обеспечения уже нашло решение. Это opedrive-d от Boilermaker. Запустившись как демон программа автоматически синхронизирует локальную папку с облаком OneDrive. Содержание статьи: Установка Onedrive-d в Linux Настройка Синхронизация локальной папки с OneDrive Установка Onedrive-d в Linux Несмотря на то что onedrive-d разрабатывается для Ubuntu/Debian, CentOs/Fedora/RHEL поддерживается тоже хорошо. Для установки достаточно набрать несколько команд: $ git clone https://gith…