簡體   English   中英

如何讓Kubernetes Pod連接到只能通過節點子集訪問的目標?

[英]How to have a Kubernetes Pod connect to a destination only reachable by a subset of Nodes?

我有一個Kubernetes v1.13集群,Calico +法蘭絨作為CNI。 所有節點都有一個可公共路由的IP地址,並運行Ubuntu 16.04。

某些節點位於公司網絡中,位於LAN和DMZ中,因此可以訪問內部服務,同時仍可公開訪問。 其他人則是雲提供商托管的虛擬機。

簇

考慮上面的簡化示例。 我想要一個Kubernetes Pod來訪問Internal Server C (它只是一個常規服務器而不是集群的一部分)。 我可以強制要在內部Node B上安排Pod,但由於連接只需要低延遲和帶寬,並且Node A上有更多的資源,我更喜歡使用Node B那種門戶 (考慮幾個Node B ,所以實際上沒有SPOF)。

我目前的方法是使用帶有節點選擇器的DaemonSet,其目標是所有內部B )節點,定義HAProxy Pod。 可以作為Kubernetes服務訪問這些HAproxy實例,並將請求轉發到內部目標服務。

您是否看到了更好或更直接的方式來實現從位於任何節點的Pod到只能通過節點子集到達的目標的連接?

根據你在這里說的話:

我可以強制要在內部Node B上安排Pod,但由於連接只需要低延遲和帶寬,並且節點A上有更多的資源,我更喜歡使用Node B那種門戶。

我認為你所尋找的是大使模式。 基本上你會在你的B區創建這種容器,你的流量將使用ClusterIP服務進入這個容器/ pod,因為它在集群內。

然后,這些容器將在其中運行代理 (您現在在守護進程中擁有的那種),這會將流量透明地路由到您要定位的常規服務器。

其他可能有用的鏈接可能來自MS此幻燈片(第42頁)

如果這對你已經運行的東西提供了一個很大的優勢,我不確定,但我更願意只使用pods並盡可能減少其他組件。

如果您喜歡網絡層解決方案,請嘗試以下方法:

  1. 選擇一個B節點,找到與A在同一子網下的IP地址。假設該IP地址為b_ip
  2. 使用b_ip作為其網關,添加到服務器C(可能是網絡)的b_ip

這個解決方案有一些好處,當您需要訪問服務器C中的新服務時,您不需要修改HAproxy的配置。還有一些不好的事情,您在步驟1中選擇的B節點將是您的單點系統。 我認為您可以使用浮動IP作為解決方法。

暫無
暫無

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

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