簡體   English   中英

從本地機器連接到許多 kubernetes 服務

[英]Connecting to many kubernetes services from local machine

從我的本地機器上,我希望能夠轉發到集群中的許多服務。 例如,我有名為 serviceA-type1、serviceA-type2、serviceA-type3 等的服務。這些服務都不能從外部訪問,但可以使用 kubectl port-forward 命令訪問。 然而,有這么多的服務,端口轉發到每一個是不可行的。

是否可以在 kubernetes 中創建某種代理服務,允許我通過在 URL 中指定它們來連接到任何 serviceA-typeN 服務? 我希望能夠從我的本地機器端口轉發到代理服務,然后它將請求轉發到 serviceA-typeN 服務。

例如,如果我在 8080 上設置了一個端口轉發到此代理,那么訪問 serviceA-type1 服務的 URL 可能如下所示:

http://localhost:8080/serviceA-type1/path/to/endpoint?a=1 等

我也許可以創建一個小型應用程序來執行此操作,但 kubernetes 是否已經提供此功能?

好的選擇是使用Ingrees來實現它。

閱讀更多關於 Ingress 是什么的信息

主要概念有:

  • Ingress 將 HTTP 和 HTTPS 路由從集群外部公開到集群內的服務。 流量路由由 Ingress 資源上定義的規則控制。
  • Ingress 可以配置為提供服務外部可訪問的 URL、負載平衡流量、終止 SSL / TLS,並提供基於名稱的虛擬主機。
  • Ingress controller 負責實現 Ingress,通常使用負載均衡器,但它也可以配置邊緣路由器或其他前端來幫助處理流量。
  • Ingress 不會暴露任意端口或協議。 向 Internet 公開 HTTP 和 HTTPS 以外的服務通常使用Service.Type=NodePortService.Type=LoadBalancer類型的服務。

在 Kubernetes 中,我們有 4 種Services類型,默認服務類型是Cluster IP ,這意味着該服務只能在集群內訪問。 Ingress將您的服務暴露在集群之外,因此ingress充當集群的入口點。

如果您計划使用Ingress遷移到雲(我假設您會這樣做,因為將來所有應用程序都將在雲中工作),它將與雲服務兼容,最終將節省時間,並且更容易從本地環境遷移。


要從ingress開始,您需要先安裝Ingress controller 您可以使用不同的入口控制器

您可以從 kubernetes 社區支持的最常見的 ingress-nginx開始。

如果您使用的是minikube ,則可以將其作為插件啟用 - 請參見此處

在集群中安裝ingress后,您需要創建一個規則以使其正常工作。 [簡單扇出] 是一個示例,其中包含兩個服務和基於path的路由。

暫無
暫無

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

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