当使用变量重写并代理Nginx容器的proxy_pass配置中的内部Openshift服务时,由于需要解析器,NGINX无法解析服务的DNS。例如:
kube-dns.kube-system.svc.cluster.local
使用标准Kubernetes时,我可以使用resolver kube-dns.kube-system.svc.cluster.local;
作为解析器:
/etc/resolv.conf
但是Openshift不提供此功能。我尝试使用容器nslookup service.namespace.svc
中的IP,该IP只是群集中运行DNS服务器的节点之一,但仍然无法解析。
最奇怪的部分是/etc/resolv.conf
,来自集装箱码头内部,它使用pandas
中的名称服务器,并且工作正常。
我可以使用Openshift中的Kubernetes DNS主机名等效项,还是解决该问题的另一种解决方案?
答案 0 :(得分:1)
在 OpenShift 4.7 中运行 ngnix 我能够通过添加来解决这个问题
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
。
答案 1 :(得分:0)
<service>.<pod_namespace>.svc.cluster.local
答案 2 :(得分:0)
在Openshift群集中,每个主节点上都有SkyDNS服务。通常它会监听8053端口。只要将它们用作nginx config的解析器,就可以了:
resolver your-openshift-master-node1-ip:8053 your-openshift-master-node2-ip:8053;