1

我找不到让 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.1127.0.0.11和 配置中指定的 skydns IP 172.40.0.2:53

etcdctl get /skydns/config
{"dns_addr":"0.0.0.0:53","ttl":4294967290,"nameservers":["172.40.0.2:53"]}

但是 nginx 还不能解析 URL。

我应该在 nginx 配置的解析器字段中为 kubernetes 和 skydns 配置指定什么 IP?

请记住,我们没有 kube-dns。

谢谢你。

4

1 回答 1

1

我认为解析app.mynamespace.svc.skydns.local与配置上游 DNS 服务器没有任何关系。通常,为此,您配置一个众所周知的 DNS 服务器,例如8.8.8.8您的云基础设施 DNS 服务器,它可能是172.40.0.2. 例如,如文档中所述:

$ 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"]}'

您可能需要检查kube2sky2pod 的日志以获取任何指导,并且所有配置选项都指定为--kube-master-url, --etcd-server。也许它无法与 Kubernetes master 对话并接收正在运行的 pod 的更新,以便 SRV 条目得到更新。

于 2018-11-05T18:20:05.670 回答