Я пытаюсь создать прокси-сервер nginx, который отправляет запросы /<service>
в http://<service>
. Сначала я попробовал следующее:Динамический proxy_pass в nginx для другого pod в Kubernetes
location ~ ^/(.+)$ {
set $backend "http://$1:80";
proxy_pass $backend;
}
Но он не говорит что-то вроде (при вызове /myservice
):
[error] 7741#0: *1 no resolver defined to resolve http://myservice
Поскольку myservice
является не доступен извне, я попытался установить go-dnsmasq как коляску в тот же самый pod, и я пытаюсь использовать его для разрешения DNS (например, я видел в примере this) и изменил конфигурацию nginx так, чтобы он выглядел так:
location ~ ^/(.+)$ {
resolver 127.0.0.1:53;
set $backend "http://$1:80";
proxy_pass $backend;
}
Но теперь Nginx терпит неудачу с:
[error] 9#9: *734 myservice could not be resolved (2: Server failure), client: 127.0.0.1, server: nginx-proxy, request: "GET /myservice HTTP/1.1", host: "localhost:8080"
127.0.0.1 - xxx [30/May/2016:10:34:23 +0000] "GET /myservice HTTP/1.1" 502 173 "-" "curl/7.38.0" "-"
Мой Kubernetes стручок выглядит следующим образом:
spec:
containers:
- name: nginx
image: "nginx:1.10.0"
ports:
- containerPort: 8080
name: "external"
protocol: "TCP"
- name: dnsmasq
image: "janeczku/go-dnsmasq:release-1.0.5"
args:
- --listen
- "0.0.0.0:53"
Бег netstat -ntlp
в контейнере Dnsmasq дает мне:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN -
tcp 0 0 :::53 :::* LISTEN 1/go-dnsmasq
И работает nmap --min-parallelism 100 -sT -sU localhost
в nginx:
Starting Nmap 6.47 (http://nmap.org) at 2016-05-30 10:33 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00055s latency).
Other addresses for localhost (not scanned): 127.0.0.1
Not shown: 1997 closed ports
PORT STATE SERVICE
53/tcp open domain
8080/tcp open http-proxy
53/udp open domain
Итак, похоже, что dnsmasq и nginx действительно работают и работают? Что я могу делать неправильно?
спасибо за это! –
Это замечательно. Спасибо. Не уверен, почему 'kube-dns' как распознаватель не работает. – ZoidbergWill