nginx - 使用Skydns的Kubernetes的Nginx解析器

标签 nginx dns kubernetes reverse-proxy skydns

我找不到让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和配置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/

相关文章:

azure - AKS 日志格式已更改

php - nginx 转发代理 - 失败(24 : Too many open files),

django - 将 Nginx 设置为 Apache 的反向代理与 Apache Event MPM 的反向代理

networking - 如何在本地网络中设置每个人都可以看到的本地域?

dns - 什么是 XMPP 域名?

azure - 如何在 Azure AKS 上的 YAML 中创建基本 sku 负载均衡器

ruby-on-rails - 如何使用 nginx 配置 phusion passenger 以支持 rails 中的 ssl?

css - 提供 CSS 文件的 Nginx 问题。

python socket.gethostbyaddr()——减少超时?

amazon-web-services - 为什么 Kubernetes 服务 DNS 不起作用?