当在nginx容器的proxy_pass配置中使用变量重写和代理到内部Openshift服务时,由于需要解析器,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不提供此功能。我尝试使用容器的/etc/resolv.conf中的IP,这只是运行DNS服务器的集群中的一个节点,但它仍然无法解析。
在Openshift中有没有等同于Kubernetes DNS主机名的东西,我可以使用,或者可能有其他解决方案来解决这个问题?
发布于 2021-03-30 00:27:29
在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,它在/etc/resolv.conf中被定义为nameserver。
发布于 2019-09-12 20:58:04
在Openshift集群中,每个主节点上都有SkyDNS服务。它通常在端口8053上侦听。只需使用它们作为nginx配置的解析器,就可以了:
resolver your-openshift-master-node1-ip:8053 your-openshift-master-node2-ip:8053;发布于 2019-03-03 00:00:41
<service>.<pod_namespace>.svc.cluster.localhttps://stackoverflow.com/questions/54959812
复制相似问题