Рейтинг:1

Как настроить DNS для сервисов и подов в Kubernetes?

флаг ru

я проходил через документация K8s в DNS для служб и модулей.Основная задача, которую я хочу решить, заключается в том, что мое развертывание K8s NodePort как тип услуги. Это означает, что я использую внешние IP-адреса от узлов, чтобы предоставить услугу в Интернете. Когда я это делаю, мой IP-адрес раскрывается, и я предпочел бы иметь имя хоста [DNS-имя]. Просматривая документацию, указанную выше, я не понимаю многих концепций из-за того, что я новичок в K8s.

Я настроил Ingress Controller из NGINX для Bare Metal K8, потому что мой облачный провайдер не предоставляет услугу балансировки нагрузки.

Итак, мой вопрос: Как мне настроить ExternalDNS в моем кластере K8s?

Для справки, это мои ресурсы внутри кластера K8s.

Пространства имен
ИМЯ СТАТУС ВОЗРАСТ
по умолчанию активен 3d12h
вход-nginx активен 5h53m
kube-node-аренда Active 3d12h
куб-публичный Активный 3d12h
kube-система Active 3d12h

По сути, все мои развертывания находятся внутри По умолчанию пространство имен.

kubectl получить все -n по умолчанию

 ИМЯ ГОТОВ СТАТУС ПЕРЕЗАПУСКА ВОЗРАСТ
pod/hello-docker-cc749b757-qfctr 1/1 Бег 0 70м

НАЗВАНИЕ ТИП КЛАСТЕР-IP ВНЕШНИЙ-IP ПОРТ(Ы) ВОЗРАСТ
service/hello-docker NodePort 10.xxx.xxx.xxx <нет> 3000:30072/TCP 70 м
service/kubernetes ClusterIP 10.xxx.xxx.xxx <нет> 443/TCP 3d12h

НАЗВАНИЕ ГОТОВО АКТУАЛЬНО ДОСТУПНО ВОЗРАСТ
Deployment.apps/hello-docker 1/1 1 1 70 мин.

ИМЯ ЖЕЛАЕМЫЙ НАСТОЯЩИЙ ВОЗРАСТ ГОТОВНОСТИ
replicaset.apps/hello-docker-cc749b757 1 1 1 70 м

И это файл манифеста, который у меня есть для обслуживания и развертывания привет-докер приложение:

апиВерсия: v1
вид: сервис
метаданные: 
 имя: привет-докер 
 этикетки:   
   приложение: привет-докер
спецификация: 
 тип: NodePort
 порты:
 - порт: 3000
   целевой порт: 8000
   протокол: TCP
   имя: http
 селектор:
   приложение: привет-докер

---
apiVersion: приложения/v1
вид: развертывание
метаданные:
  имя: привет-докер
  этикетки:
    приложение: привет-докер
спецификация:
  реплики: 1
  селектор:
    метки соответствия:
      приложение: привет-докер
  шаблон:
    метаданные:
      этикетки:
        приложение: привет-докер
    спецификация:
      imagePullSecrets:
      - имя: regcred
      контейнеры:
      - имя: привет-докер
        изображение: Себастьян/hello-docker:1.1
        imagePullPolicy: всегда
        порты:
          - контейнерПорт: 8000 

Любые отзывы и предложения будут высоко оценены.

Mikolaj S. avatar
флаг cn
Какую версию Kubernetes вы использовали? Вы использовали установку на «голое железо» или какого-то облачного провайдера?
Sebastian avatar
флаг ru
@МиколайС. Я использовал от облачного провайдера. У них есть учебник по первоначальной настройке K8 с Ansible и Terraform, но нет службы LB. Что касается версии, то это v1.21
Mikolaj S. avatar
флаг cn
У вас есть готовый IP-узел и вы хотите написать доменное имя — если да, то вам следует сделать это вне kubernetes — зависит от вашего поставщика — например, [Amazon Route 53] (https://aws.amazon.com/route53/) .
Wytrzymały Wiktor avatar
флаг it
Привет @Себастьян. Любые обновления?
Sebastian avatar
флаг ru
@WytrzymaÅyWiktor, на самом деле ничего интересного. Чтобы заставить его работать, я настроил туннель Cloudflare (также известный как туннель Argo), который направляет трафик через входной контроллер. Туннель нужно поддерживать в рабочем состоянии, поэтому я сделал туннель для запуска через экземпляр виртуальной машины в облаке. Теперь проблема в том, что я могу получить доступ к своему DNS-имени хоста, но не могу предотвратить прямой доступ по IP.
kkopczak avatar
флаг ng
Если у вас получилось, рассмотрите возможность добавления своего решения в качестве ответа и создайте новый вопрос с текущей проблемой.
Рейтинг:1
флаг ru

Я выполнил эту работу, создав туннель Cloudflare (ранее называвшийся Argo Tunnel). Полную документацию по конфигурации туннеля можно найти здесь. Я надеюсь, что кто-то с похожей проблемой найдет это полезным.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.