我找不到让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。
谢谢。
答案 0 :(得分:1)
我认为解析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条目得到更新。