sha*_*876 16 nginx kubernetes google-kubernetes-engine
我在本地开发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;
}
Run Code Online (Sandbox Code Playgroud)
我现在想转移到 kubernetes
GKE 中,最后一行给我带来了麻烦。
我试图将解析器切换到:
resolver kube-dns;
Run Code Online (Sandbox Code Playgroud)
我还尝试了各种其他 IP 和名称,但我不断收到以下错误:
nginx: [emerg] host not found in resolver "kube-dns"
Run Code Online (Sandbox Code Playgroud)
我的 kubernetes 设置是我有一个 pod,有 2 个容器:“webapp”和“nginx”。我只想有一个service
指向 nginx的外部可以proxy_pass
指向 webapp 的。
有任何想法吗?
小智 18
您必须为 kube-dns 和服务指定 FQDN。
例如,对于 GKE kube-dns 标准,它将是:kube-dns.kube-system.svc.cluster.local
如果您使用webapp服务的默认命名空间,它将是:webapp.default.svc。集群.local
我知道最初的问题很老,但也许它对某人有帮助。
如果 nginx 位于 kubernetes 内部,则无需设置解析器,因为它将解析到正确的位置。如果nginx
和webapp
生活在同一个命名空间中,你可以简单地
proxy_pass http://webapp
Run Code Online (Sandbox Code Playgroud)
只要您的 Web 应用程序的服务名称称为 webapp 并使用端口 80。
如果 nginx 位于外部,那么您应该使用入口控件或将 Web 应用程序的服务设置为节点端口。Nodeport 将在所有节点上打开相同的端口,以便您可以在 nginx 端在它们之间进行负载平衡。
归档时间: |
|
查看次数: |
13586 次 |
最近记录: |