[英]Route external traffic from a standalone nginx service to kubernetes nodeport service
目標我想通過獨立的 nginx 服務和 microk8s 節點端口服務訪問 kubernetes 儀表板。
上下文我有一個 linux 服務器。 在此服務器上,有幾個正在運行的服務,例如:
這是我正在尋找的工作流程:
問題:但是,每次我請求 http:// URL /dashboard 我都會收到502 錯誤的請求答案,我缺少什么?
CONFIGURATION請在下面找到,nginx 配置,節點端口服務配置和 microk8s 集群的狀態:
nginx 配置:/etc/nginx/site-availables/default
非常感謝您的幫助。
我將在這里總結整個問題和解決方案。
首先,需要暴露 Kubernetes Dashboard 的服務需要指向正確的目標端口,還需要 select 正確的 Pod(kubernetes-dashboard Pod)
如果您通過以下方式檢查您的服務:
kubectl desribe service <service-name>
通過查看 Endpoints 部分,您可以輕松查看它是選擇一個 Pod(或多個 Pod)還是什么都不選。 通常,您的服務應該具有與標准 kubernetes-dashboard 服務相同的選擇器、端口、targetPort 等(它公開儀表板,但僅在集群內部)
其次,您的 NGINX 配置將位置 /dashboard 代理到服務,但問題是 kubernetes-dashboard Pod 期望請求直接到達 /,因此路徑 /dashboard 對它沒有任何意義。
解決第二個問題,有幾種方法,但都在於NGINX配置。 如果您閱讀了模塊代理的文檔(又名http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass ),您可以看到解決方案是在配置中添加一個 URI,如下所示:
proxy_pass https://51.68.123.169:30000/
注意尾部的斜杠,即URI,表示匹配代理規則的位置被改寫為/。 這意味着 your_url/dashboard 將成為 your_url/
如果沒有尾部斜杠,您的位置將按原樣傳遞給目標,因為目標只是端點。
如果您需要更復雜的 URI 更改,您正在搜索的是重寫規則(它們支持正則表達式等等),但添加尾部斜杠應該可以解決您的第二個問題。
確實@AndD,你建議我執行這個命令:
sudo microk8s kubectl describe service -n kube-system kubernetes-dashboard
為了獲得這些以下信息
多虧了以上信息,我可以修復 nodePort 服務,您可以在下面找到一個片段:
spec:
type: NodePort
k8s-app: 'kubernetes-dashboard'
ports:
- protocol: TCP
port: 8443
targetPort: 8443
nodePort: 30000
但是,我確實將 nginx 配置更改為
proxy_pass https://51.68.123.169:30000/
我確實收到了成功的響應(html),然后所有剩余的請求都有 404 狀態(js、css、資產)。
html 文件包含一組依賴項 (js/img/css)
<link rel="stylesheet" href="styles.3aaa4ab96be3c2d1171f.css"></head>
...
<script src="runtime.3e2867321ef71252064e.js" defer></script>
所以它試圖用這些 URL 來獲取這些資產:
而不是使用:
我只是再次將子路徑 => dashboad/ 更改為 dash/
它適用於鉻。 但它不適用於 firefox。 (沒有大礙)
非常感謝AndD!
此外,我遇到了與 jenkins 類似的問題,但是 jenkins 圖像包含修復該問題的參數。 docker 運行 --publish 8080:8080 --env JENKINS_OPTS="--prefix=/subpath" jenkins/jenkins
我期待找到與kubernetesui /dashboard 類似的東西,但我沒有找到任何東西
https://github.com/kubernetes/dashboard
好吧,我不知道如何很好地配置 nginx 以便在子路徑中正確顯示儀表板,我在 kubernetes\dashboard 圖像中沒有找到任何參數來處理子路徑。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.