Max*_*kov 5 nginx google-cloud-platform kubernetes
所以,我想nginx在请求时解析后端的主机名。我希望HTTP 502 Bad Gateway在后端服务关闭时得到响应,并且在它启动时得到服务响应。
我使用nginx:1.15-alpine图像nginx,这是我在它的配置中所拥有的:
server {
resolver kube-dns.kube-system.svc.cluster.local valid=5s;
server_name mysystem.com;
listen 80;
client_max_body_size 20M;
location = /nginx_status {
stub_status on;
access_log off;
}
# Services configuration
location ~ /my-service/ {
set $service_endpoint http://my-service.namespace:8080;
proxy_pass $service_endpoint$request_uri;
include includes/defaults-inc.conf;
include includes/proxy-inc.conf;
}
}
Run Code Online (Sandbox Code Playgroud)
因此,当我向 nginx 发出请求时,我收到 502 Bad Gateway 响应。Nginx 的日志说找不到名称:
2018/06/28 19:49:18 [error] 7#7: *1 my-service.namespace could not be resolved (3: Host not found), client: 10.44.0.1, server: mysystem.com, request: "GET /my-service/version HTTP/1.1", host: "35.229.17.63:8080"
Run Code Online (Sandbox Code Playgroud)
但是,当我使用 shell ( kubectl exec ... -- sh)登录容器并测试 DNS 解析时,它运行良好。
# nslookup my-service.namespace kube-dns.kube-system.svc.cluster.local
Server: 10.47.240.10
Address 1: 10.47.240.10 kube-dns.kube-system.svc.cluster.local
Name: my-service.namespace
Address 1: 10.44.0.75 mysystem-namespace-mysystem-namespace-my-service-0.my-service.namespace.svc.cluster.local
Run Code Online (Sandbox Code Playgroud)
此外,我可以wget http://my-service.namespace:8080/并得到回应。
为什么nginx无法解析主机名?
更新:我如何设法解决它:
在nginx.conf在server水平我添加了一个解析器设置:
resolver kube-dns.kube-system.svc.cluster.local valid=10s;
Run Code Online (Sandbox Code Playgroud)
然后我在proxy_pass以下位置使用了 FQDN :
proxy_pass http://SERVICE-NAME.YOUR-NAMESPACE.svc.cluster.local:8080;
Run Code Online (Sandbox Code Playgroud)
它失败是因为您需要使用 FQDN 来解析名称。
只使用主机名通常会起作用,因为在 kubernetes 中 resolv.conf 配置了搜索域,因此您通常不需要提供服务的 FQDN。
但是,当您告诉 nginx 使用自定义名称服务器时,必须指定 FQDN,因为它无法从这些域搜索规范中受益。
在服务器级别添加的 nginx.conf 中:
resolver kube-dns.kube-system.svc.cluster.local valid=10s;
Run Code Online (Sandbox Code Playgroud)
然后在 proxy_pass 中使用 FQDN:
proxy_pass http://SERVICE-NAME.YOUR-NAMESPACE.svc.cluster.local:8080;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3046 次 |
| 最近记录: |