[英]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並盡可能減少其他組件。
如果您喜歡網絡層解決方案,請嘗試以下方法:
b_ip
b_ip
作為其網關,添加到服務器C(可能是網絡)的b_ip
。 這個解決方案有一些好處,當您需要訪問服務器C中的新服務時,您不需要修改HAproxy
的配置。還有一些不好的事情,您在步驟1中選擇的B節點將是您的單點系統。 我認為您可以使用浮動IP作為解決方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.