当使用变量重写并代理到 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 不提供这一点。我尝试过使用容器中的IP/etc/resolv.conf
,它只是我的集群中运行 DNS 服务器的节点之一,但它仍然无法解析。
最奇怪的部分是nslookup service.namespace.svc
从容器终端内部使用名称服务器/etc/resolv.conf
而且效果很好。
我可以使用 Openshift 中的 Kubernetes DNS 主机名吗?或者可能有其他解决方案来解决这个问题?
在 OpenShift 4.7 中运行 nginx 我可以通过添加来解决这个问题
resolver dns-default.openshift-dns.svc.cluster.local
to the server
配置。显然,nginx没有解析/etc/resolv.conf
,但是(就我而言),dns-default.openshift-dns.svc.cluster.local
还决心172.30.0.10
,它被定义为nameserver
in /etc/resolv.conf
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)