我一直在嘗試部署我的web應用程序kubernetes。在Kubernetes的前端和後端配置一個Nginx
我想用nginx作爲反向代理在我的後端和前端服務之前模仿舊部署。
我有3件在我的系統中,nginx,正面和背面。我構建了3個部署,3個服務,並使用nodePort: 30050
僅顯示了我的nginx服務。
如果沒有進一步的延遲,這是我的nginx.conf:
upstream my-server {
server myserver:3000;
}
upstream my-front {
server myfront:4200;
}
server {
listen 80;
server_name my-server.com;
location /api/v1 {
proxy_pass http://my-server;
}
location/{
proxy_pass http://my-front;
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;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
我試圖安裝內部艙體一個捲曲,則nslookup,並試圖做集羣內部端點手動請求......淚水涌上我的眼睛,一切都在工作......我幾乎是一個值得雲計算的開發者。
一切工作正常......除了nginx DNS解析之外,其他的一切都很順利。
如果我做kubectl exec -it my-nginx-pod -- /bin/bash
並試圖蜷縮其他2個服務中的其中一個:curl myfront:4200
它可以正常工作。
如果我嘗試nslookup其中之一,它也可以。
之後,我嘗試在nginx.conf中使用pod IP替換服務名稱。重新啓動nginx服務後,一切正常。
爲什麼nginx沒有正確解析上游名字? 我對此很感興趣。
只是一個旁註:也許你想看看Ingress和Nginx Ingress控制器。這樣您就不需要再手動編寫Nginx配置了,請參閱https://kubernetes.io/docs/concepts/services-networking/ingress/。 –