Разрешить пользовательский dns в кластере kubernetes (AKS)

#kubernetes #dns #azure-aks #kube-dns #coredns

#kubernetes #dns #azure-aks #kube-dns #ядра

Вопрос:

В настоящее время у нас есть модули в кластере kubernetes (AKS), которым необходимо разрешить два разных домена.

Первым доменом является домен кластера default.svc.cluster.local, а вторым — mydns.local

как этого можно достичь?

Ответ №1:

Я сам нашел решение.

Есть два способа добиться желаемого разрешения имен:

  1. Если ваш кластер AKS находится в виртуальной сети Azure, вы можете настроить параметры DNS во виртуальной сети на пользовательский DNS-сервер, который может разрешить ваш пользовательский домен. Если у ваших модулей нет заданных параметров dns, разрешение будет работать следующим образом:

Сначала модули пытаются разрешить DNS-запрос в CoreDNS, если они не могут, тогда они берут настройки DNS хоста и запрашивают DNS-сервер, настроенный на хосте. Поскольку в Azure настройки DNS виртуальной сети применяются к виртуальным машинам, он будет запрашивать правильный DNS-сервер.

  1. Измените настройки CoreDNS в вашем кластере AKS с помощью следующего json :

     apiVersion: v1
    kind: ConfigMap
    metadata:
      name: coredns-custom
      namespace: kube-system
    data:
      yourdns.server: |
        yourdns.com:53 {
          errors
          cache 1
          proxy . 10.1.0.40
        }
      

Важно знать, что в AKS вы не можете перезаписать конфигурационную карту coredns. Мастер Kubernetes всегда сбрасывает его по умолчанию через пару секунд. Если вы хотите отредактировать ConfigMap в AKS, вы должны назвать configmap «coredns-custom».

yourdns.server на самом деле это не сервер. Это domain.server . IP-адрес DNS-сервера находится за настройкой прокси.

Ответ №2:

Я думаю, вы можете использовать ingress и ingress controller для управления доменом и путем.с помощью ingress вы можете управлять несколькими доменами и подключать службу к определенному домену.

https://kubernetes.github.io/ingress-nginx/

Здесь также представлен общий учебник по настройке ingress из digital ocean, которому вы можете следовать :

https://www.digitalocean.com/community/tutorials/how-to-set-up-an-nginx-ingress-with-cert-manager-on-digitalocean-kubernetes

Комментарии:

1. Эй, я, вероятно, был недостаточно ясен в своем посте. Пользовательский домен (mydns.local) содержит службы, которых нет в кластере kubernetes. Таким образом, кластеру необходимо разрешить свои внутренние адреса через домен «default.svc.cluster.local» и адреса в подключенной сети через домен «mydns.local».

2. Есть ли у вас сервер доменных имен для вашего пользовательского домена (mydns.local)

Ответ №3:

Ваш второй пункт «2. Измените настройки CoreDNS в вашем кластере AKS с помощью следующего json:»

Обратите внимание, что вместо «прокси» следует использовать плагин «forward», как указано здесь:

https://github.com/Azure/AKS/issues/1304