全部產品
Search
文件中心

Container Service for Kubernetes:NodePort連接埠監聽隔離

更新時間:Feb 28, 2024

在邊緣網路情境中,服務隔離是必需的。例如,當使用NodePort類型的Service時,您可以指定特定節點池的節點上才會監聽NodePort Service中的連接埠,從而避免可能產生的連接埠衝突風險。本文介紹如何使用NodePort連接埠監聽隔離。

架構原理

edge-hub組件中內建可程式化資料過濾架構,可以對邊緣發起請求的響應資料(雲端kube-apiserver返回)實現無感知和按需轉換,以滿足雲邊協同情境的特定需求。架構如下圖所示。架構圖.png

edge-hub中引入一個名為nodeportisolation的新過濾器來實現NodePort Service的隔離能力,同時NodePort Service添加了一個新的註解(Annotaion)nodeport.openyurt.io/listen

注意事項

  • edge-hub組件版本使用v0.11.0及以上版本。

  • 您在建立Service時需要確定好是否添加註解nodeport.openyurt.io/listen。若Service建立後再添加該註解,需要重啟所有kube-proxy,該功能才會生效。

  • 新增節點池後,需要在未接入節點之前,把新建立的節點池增加到Service的註解中,該功能才能在後續接入的節點上生效。

  • 由於節點池名稱支援變更,所以請使用節點池ID來指定節點池。節點池ID可通過Container Service管理主控台查看,格式一般為npxxxx。

使用方法

您可以為NodePort、LoadBalancer服務引入註解nodeport.openyurt.io/listen

  • 註解的鍵(key)nodeport.openyurt.io/listen

  • 註解的值(value):用英文半形逗號分隔的節點池ID列表。

    • foo:使指定的NodePort Service在ID為foo的節點池中的節點上監聽。

    • -foo:禁止指定的NodePort Service在ID為foo的節點池中的節點上監聽。

    • *:使指定的NodePort Service在所有節點池中的節點上監聽。

重要
  • 如果對同一節點池有多個配置,僅第一個配置生效。

  • 如果未配置節點池ID,將在這些未配置的節點池中的節點上禁用此NodePort Service監聽。

  • 與原生Kubernetes一致,系統將預設監聽孤兒節點(不位於節點池中的節點)NodePort Service的連接埠。

註解設定樣本

註解

說明

nodeport.openyurt.io/listen=foo,bar

在foo和bar節點池中的節點上啟用NodePort Service監聽。

nodeport.openyurt.io/listen=foo,*

在所有節點池中的節點上啟用NodePort Service監聽。

nodeport.openyurt.io/listen=-foo,-bar

在所有節點池中的節點上禁用NodePort Service監聽。

nodeport.openyurt.io/listen=-foo,*

僅在foo節點池中的節點上禁用NodePort Service監聽。

nodeport.openyurt.io/listen=foo,-foo

在foo節點池中的節點上啟用NodePort Service監聽。

nodeport.openyurt.io/listen=-foo

在所有節點池中的節點上禁用NodePort Service監聽(包含foo節點池)。