NGINX в Openshift — NGINX не может разрешать внутренние имена хостов

При использовании переменной для перезаписи и прокси для внутренней службы Openshift в конфигурации proxy_pass контейнера nginx NGINX не может разрешить DNS службы из-за требуемого преобразователя. Например:

location /api/ {
   set $pass_url http://service.namespace.svc:8080$request_uri;
   proxy_pass  $pass_url;
}

При использовании стандартного Kubernetes я могу использовать kube-dns.kube-system.svc.cluster.local как преобразователь:

resolver kube-dns.kube-system.svc.cluster.local;

Но Openshift не предоставляет этого. Я пытался использовать IP-адрес, который находится в контейнере /etc/resolv.conf, который является лишь одним из узлов в моем кластере, на котором работает DNS-сервер, но он все еще не может разрешить.

Самая странная часть nslookup service.namespace.svc внутри контейнерного терминала использует сервер имен в /etc/resolv.conf и работает нормально.

Есть ли эквивалент DNS-имени хоста Kubernetes в Openshift, который я мог бы использовать, или, возможно, другое решение, чтобы обойти это?


person ev0lution37    schedule 02.03.2019    source источник


Ответы (3)


Запустив ngnix в OpenShift 4.7, я смог обойти эту проблему, добавив

resolver dns-default.openshift-dns.svc.cluster.local

к конфигурации server. По-видимому, ngnix не анализирует /etc/resolv.conf, но (в моем случае) dns-default.openshift-dns.svc.cluster.local также разрешается в 172.30.0.10, который был определен как nameserver в /etc/resolv.conf.

person Max    schedule 29.03.2021

В кластере Openshift на каждом мастер-узле есть служба SkyDNS. Обычно он прослушивает порт 8053. Просто используйте их в качестве преобразователя для конфигурации nginx, и все будет в порядке:

resolver your-openshift-master-node1-ip:8053 your-openshift-master-node2-ip:8053;
person 3cham    schedule 12.09.2019

Из https://docs.openshift.com/container-platform/3.11/architecture/networking/networking.html#architecture-additional-concepts-openshift-dns, похоже, следующее должно работать

<service>.<pod_namespace>.svc.cluster.local
person Will Gordon    schedule 02.03.2019