我找不到让Nginx Pod解析另一个kubernetes服务URL的方法。
我不是在使用kube-dns ,我们只是在使用kube2sky,我们还没有实现kube-dns,所以我需要在这种情况下进行修复。
例如,我希望nginx解析服务URL app.mynamespace.svc.skydns.local
,但是如果对该URL执行ping操作,它将成功解析。
我的nginx配置部分是:
location /api/v1/namespaces/mynamespace/services/app/proxy/ {
resolver 127.0.0.1
set \$endpoint \"http://app.mynamespace.svc.skydns.local/\";
proxy_pass \$endpoint;
proxy_http_version 1.1;
proxy_set_header Connection \"upgrade\";
}
我需要在变量中指定上游目标,因为即使目标不可用,我也希望nginx启动,如果启动时我没有在变量中指定nginx崩溃,因为上游需要可用且可解析。
我认为的问题是解析器值,我已经尝试过使用
127.0.0.1
,127.0.0.11
和配置172.40.0.2:53
中指定的skydns IP:etcdctl get /skydns/config
{"dns_addr":"0.0.0.0:53","ttl":4294967290,"nameservers":["172.40.0.2:53"]}
但是nginx尚无法解析URL。
我应该在Nginx config的resolver字段中为kubernetes和skydns config指定什么IP?
请记住,我们没有kube-dns。
谢谢。
最佳答案
我认为解析app.mynamespace.svc.skydns.local
与配置上游DNS服务器没有任何关系。通常,为此,您可以配置一个众所周知的DNS服务器(例如8.8.8.8
)或您的云基础结构DNS服务器(可能是172.40.0.2
)。例如docs中所述:
$ curl -XPUT http://127.0.0.1:4001/v2/keys/skydns/config \
-d value='{"dns_addr":"127.0.0.1:5354","ttl":3600, "nameservers": ["8.8.8.8:53","8.8.4.4:53"]}'
您可能需要检查
kube2sky2
容器的日志,以获取任何指导,并指定所有config options,例如--kube-master-url
,--etcd-server
。也许它无法与Kubernetes主服务器通信并接收正在运行的Pod的更新,以便SRV条目得到更新。
关于nginx - 使用Skydns的Kubernetes的Nginx解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53159623/