Я развивался локально в docker-compose
, и контейнер nginx выполнял простой proxy_pass
вот так:
location /app/ {
proxy_pass http://webapp:3000/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
resolver 127.0.0.11;
}
Теперь я хочу перейти к kubernetes
в GKE, и последняя строчка меня беспокоит.
Я попытался переключить резольвер на:
resolver kube-dns;
Я также пробовал различные другие IP-адреса и имена, но продолжаю получать ошибку в следующих строках:
nginx: [emerg] host not found in resolver "kube-dns"
Моя установка Kubernetes заключается в том, что у меня есть один модуль с двумя контейнерами: «webapp» и «nginx». Я просто хочу иметь внешний service
указывая на nginx, который может proxy_pass
в webapp.
Любые идеи?
Вы должны указать полное доменное имя для kube-dns и служб.
Например, для стандарта GKE kube-dns это будет: kube-dns.kube-system.svc.cluster.local
И если вы используете пространство имен по умолчанию с вашим webapp сервис, это будет: webapp.default.svc.cluster.local
Я знаю, что исходный вопрос старый, но, возможно, он кому-то поможет.
Если nginx находится внутри кубернетов, нет необходимости устанавливать резолвер, поскольку он будет разрешен в правильном месте. если nginx
и webapp
жить в одном пространстве имен, вы можете просто
proxy_pass http://webapp
Если имя вашей службы для веб-приложения называется webapp и использует порт 80.
Если nginx живет снаружи, вам следует использовать входной контроль или установить службу для веб-приложения на порт узла. Nodeport откроет один и тот же порт на всех узлах, чтобы вы могли балансировать нагрузку между ними на стороне nginx.