簡體   English   中英

如何訪問本地集群中的Kubernetes Pod?

[英]How to access Kubernetes pod in local cluster?

我建立了一個具有一個主節點和三個從節點的實驗性本地 Kubernetes集群。 我為偵聽端口10001的自定義服務創建了一個部署。目標是使用穩定的IP /主機名訪問示例性端點/hello ,例如http://<master>:10001/hello

部署完成后,可以成功創建Pod,並可以通過其群集IP對其進行訪問。

我了解雲提供商的解決方案是為部署創建負載平衡器服務,以便您可以expose服務。 但是,本地群集顯然不支持此功能。 為此,設置Ingress似乎有些過分。 不是嗎

似乎更像是kube proxy 但是,當我在主節點上運行kube proxy --port <port>時,我可以訪問http://<master>:<port>/api/... ,但不能訪問實際的pod。

有許多相關問題(例如, 如何通過kubernetes集群ip訪問服務? ),但沒有(可接受的)答案。 Kubernetes關於該主題的 文檔也很少,因此我什至不確定什么是正確的概念。

因此,我正在尋找簡單明了的解決方案和/或良好的教程。 這似乎是一個非常典型的用例,但缺少明確的路徑。

如果Ingress Controller在您的情況下過大,則可能需要嘗試使用NodePort類型的服務。 您可以指定端口,也可以讓系統為您自動分配一個端口。

NodePort服務在群集中所有節點上的同一端口處公開您的服務。 如果您可以通過網絡訪問節點,則可以通過配置中指定的節點IP和端口訪問服務。

顯然,這不會在節點之間實現負載平衡。 如果要模擬真實的負載平衡器將執行的操作,則可以添加外部服務來幫助您完成此操作。 一種簡單的選擇是運行諸如rocky-cli之類的東西。

Ingress可能是您最簡單的選擇。

您可以非常簡單地安排Nginx IngressController的創建; 這是一個指南 請注意,此設置使用DaemonSet,因此每個節點上都有一個IngressController。 它還使用hostPort config選項,因此IngressController將偵聽節點的IP,而不是不穩定的虛擬服務IP。

現在,您只需要將HTTP流量發送到任何一個節點即可。 您可能需要為每個服務定義一個外部DNS條目,每個條目都指向您節點的IP(即多個A / AAAA記錄)。 入口將使用基於名稱的虛擬主機,根據HTTP主機名消除歧義並在群集內路由。

如果您需要公開非HTTP服務,那么會涉及更多的內容,但是您可以在nginx入口文檔中查找更多示例(例如UDP )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM