☸️ Как развернуть Nginx в кластере Kubernetes

by itisgood

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

Я буду запускать это развертывание на виртуальной машине, размещенной поставщиком общедоступного облака.

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

Тестовая среда

Master Node - Public IP: 104.197.170.99 and Private IP: 10.128.15.195
Worker Node 1 - Public IP: 34.67.149.37 and Private IP: 10.128.15.196
Worker Node 2 - Public IP: 35.232.161.178 and Private IP: 10.128.15.197

Развертывание NGINX в кластере Kubernetes

Мы запустим это развертывание с мастер-узла.

Начнем с проверки состояния кластера.

Все ваши ноды должны быть в состоянии READY.

# kubectl get nodes

Мы создаем развертывание NGINX, используя образ NGINX.

# kubectl create deployment nginx --image=nginx
Теперь вы можете увидеть состояние вашего развертывания.
# kubectl get deployments
Если вы хотите увидеть более подробную информацию о своем развертывании, вы можете запустить команду describe.
Например, можно определить, сколько реплик развертывания запущено.
В нашем случае мы ожидаем увидеть реплику из 1 работающей (т.е. 1/1 реплики).
# kubectl describe deployment nginx
Теперь, когда ваше развертывание Nginx активно, вы можете предоставить сервис NGINX общедоступному IP-адресу, доступному в Интернете.

Предоставление вашего сервиса Nginx публичной сети

Kubernetes предлагает несколько вариантов предоставления вашего сервиса на основе функции под названием Kubernetes Service-types, и это:

  • ClusterIP – этот тип службы обычно предоставляет службу по внутреннему IP-адресу, доступному только внутри кластера и, возможно, только внутри узлов кластера.
  • NodePort – это наиболее простой вариант предоставления доступа к вашей службе за пределами вашего кластера через определенный порт (называемый NodePort) на каждом узле кластера. Мы проиллюстрируем этот вариант в ближайшее время.
  • LoadBalancer – этот параметр использует внешние службы балансировки нагрузки, предлагаемые различными поставщиками, для предоставления доступа к вашей службе. Это более надежный вариант, когда вы думаете о высокой доступности для вашего сервиса, и он имеет больше возможностей, чем доступ по умолчанию.
  • ExternalName – эта служба перенаправляет трафик на службы вне кластера. Таким образом, служба, таким образом, сопоставляется с DNS-именем, которое может быть размещено вне вашего кластера. Важно отметить, что тут не используется проксирование.

Тип службы по умолчанию – ClusterIP.

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

С этим типом сервиса Kubernetes назначит на эту службу порты в диапазоне 30000+.

# kubectl create service nodeport nginx --tcp=80:80
Запустите команду get svc, чтобы увидеть сводную информацию о службе и доступных портах.

# kubectl get svc
Теперь вы можете проверить, что страница Nginx доступна на всех узлах, с помощью команды curl.
# curl master-node:30386
# curl node-1:30386
# curl node-2:30386
Как видите, на страницу «WELCOME TO NGINX!» можно попасть.

Настройка эфемерного публичного IP-адреса

Как вы, возможно, заметили, Kubernetes сообщает, что у меня не зарегистрирован активный публичный IP, или, скорее, не зарегистрирован EXTERNAL-IP.

# kubectl get svc
Давайте проверим, правда ли это, что у меня нет ВНЕШНЕГО IP-адреса, подключенного к моим интерфейсам, с помощью команды IP.
# ip a
Нет никакого публичного IP, как вы можете видеть.

Как упоминалось ранее, в настоящее время я запускаю это развертывание на виртуальной машине, предлагаемой поставщиком общедоступного облака. Таким образом, хотя конкретный интерфейс не назначен общедоступному IP-адресу, поставщик виртуальных машин выдал временный внешний IP-адрес.

Эфемерный внешний IP-адрес – это временный IP-адрес, который остается подключенным к виртуальной машине, пока виртуальный экземпляр не будет остановлен.

Когда виртуальный экземпляр перезапускается, назначается новый внешний IP-адрес.
Проще говоря, это простой способ для поставщиков услуг использовать незанятые публичные IP-адреса.

Проблема здесь, за исключением того факта, что ваш общедоступный IP-адрес не является статичным, заключается в том, что Ephemeral Public IP является просто расширением (или прокси-сервером) частного IP-адреса, и по этой причине доступ к службе будет осуществляться только через порт 30386.

Это означает, что доступ к сервису будет осуществляться по URL-адресу <PublicIP: InternalPort>, то есть 104.197.170.99:30386.

You may also like

Leave a Comment