docker-compose
、そして単純な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;
}
GKEのkubernetes
に移動したいと思います。最後の行で問題が発生しています。
私はリゾルバーを次のように切り替えようとしました:
resolver kube-dns;
他にもさまざまなIPと名前を試しましたが、次のようなエラーが発生し続けます。
nginx: [emerg] Host not found in resolver "kube-dns"
私のkubernetesセットアップは、「webapp」と「nginx」の2つのコンテナーを持つ単一のポッドがあることです。私は単に、service
がnginxを指すproxy_pass
からwebappへ。
何か案は?
Kube-dnとサービスのFQDNを指定する必要があります。
たとえばGKE kube-dns標準の場合、次のようになります:kube-dns.kube-system.svc.cluster.local
そしてwebappサービスでデフォルトの名前空間にいる場合、それは次のようになります:webapp.default.svc.cluster.local
私は元の質問が古いことを知っていますが、多分それは誰かを助けるでしょう。
Nginxがkubernetes内にある場合は、正しい場所に解決されるため、リゾルバーを設定する必要はありません。 nginx
とwebapp
が同じ名前空間にある場合は、単純に
proxy_pass http://webapp
Webappのサービス名がwebappで、ポート80を使用している限り。
Nginxが外部にある場合は、イングレスコントロールを使用するか、webappのサービスをノードポートに設定する必要があります。ノードポートはすべてのノードで同じポートを開くため、nginx側でノード間で負荷を分散できます。