共用方式為


控制 AKS 叢集集集區和叢集上 HDInsight 的網路流量

重要

此功能目前為預覽功能。 適用於 Microsoft Azure 預覽版的補充使用規定包含適用於 Beta 版、預覽版或尚未發行至正式運作之 Azure 功能的更合法條款。 如需此特定預覽的相關信息,請參閱 AKS 預覽資訊的 Azure HDInsight。 如需問題或功能建議,請在 AskHDInsight提交要求,並提供詳細數據,並遵循我們在 Azure HDInsight 社群取得更多更新。

AKS 上的 HDInsight 是受控平臺即服務 (PaaS),可在 Azure Kubernetes Service (AKS) 上執行。 HDInsight on AKS 可讓您部署熱門的開放原始碼分析工作負載,例如 Apache Spark™、Apache Flink®️ 和 Trino,沒有管理及監視容器的負擔。

根據預設,如果可從節點的網路介面連線到目的地,AKS 叢集上的 HDInsight 會允許從叢集到任何目的地的輸出網路連線。 這表示叢集資源可以存取因特網或虛擬網路上的任何公用或私人IP位址、功能變數名稱或URL。

不過,在某些情況下,您可能會想要控制或限制叢集的輸出流量,因為安全性、合規性原因。

例如,您可能想要:

  • 防止叢集存取惡意或垃圾服務。

  • 在輸出流量上強制執行網路原則或防火牆規則。

  • 監視或稽核來自叢集的輸出流量,以進行疑難解答或合規性。

控制輸出流量的方法和工具

您有不同的選項和工具,可用來管理輸出流量如何從AKS 叢集上的 HDInsight 流動。 您可以在叢集集集區層級設定其中一些,而另一些則設定在叢集層級。

  • 使用負載平衡器的輸出。 當您使用此輸出路徑部署叢集集區時,會布建公用IP位址並指派給負載平衡器資源。 不需要自定義虛擬網路 (VNET) ;不過,強烈建議您使用。 您可以在自定義 VNET 上使用 Azure 防火牆 或網路安全組 (NSG)來管理離開網路的流量。

  • 具有使用者定義路由的輸出。 當您使用此輸出路徑部署叢集集區時,使用者可以使用 Azure 防火牆/NAT 閘道和自定義路由表來管理子網層級的輸出流量。 只有在使用自定義 VNET 時,才能使用此選項。

  • 啟用私人 AKS。 當您在叢集集區上啟用私人 AKS 時,AKS API 伺服器將會獲指派內部 IP 位址,且無法公開存取。 AKS API 伺服器與 AKS 節點集區(叢集)上的 HDInsight 之間的網路流量會保留在專用網上。

  • 私人輸入叢集。 當您部署已啟用私人輸入選項的叢集時,將不會建立公用IP,而且叢集只能從相同 VNET 內的用戶端存取。 您必須提供自己的 NAT 解決方案,例如 NAT 閘道或防火牆提供的 NAT,才能連線到 AKS 相依性的輸出公用 HDInsight。

在下列各節中,我們會詳細說明每個方法。

使用負載平衡器的輸出

負載平衡器用於透過 AKS 指派公用 IP 上的 HDInsight 輸出。 當您在叢集集區上設定負載平衡器的輸出類型時,可能會預期輸出出 AKS 上的 HDInsight 所建立的負載平衡器。

您可以使用 Azure 入口網站,使用負載平衡器組態來設定輸出。

顯示叢集集區網路設定的螢幕快照。

選擇此設定之後,AKS 上的 HDInsight 會自動完成建立為叢集輸出布建的公用 IP 位址,並指派給負載平衡器資源。

HDInsight 在 AKS 上建立的公用 IP,而且它是 AKS 管理的資源,這表示 AKS 會管理該公用 IP 的生命週期,而且不需要直接在公用 IP 資源上執行用戶動作。

建立叢集時,也會建立特定的輸入公用IP。

若要允許將要求傳送至叢集,您必須 允許列出流量。 您也可以在 NSG 中設定特定規則,以執行粗略的控件。

具有使用者定義路由的輸出

注意

輸出 userDefinedRouting 類型是進階的網路案例,而且在您開始之前需要適當的網路設定。
不支援在建立叢集集區之後變更輸出類型。

如果已設定 userDefinedRouting,AKS 上的 HDInsight 將不會自動設定輸出路徑。 輸出設定必須由使用者完成。

顯示使用者定義路由的螢幕快照。

您必須在 AKS 叢集上將 HDInsight 部署到具有先前設定子網的現有虛擬網路,而且您必須建立明確的輸出。

此結構要求將輸出流量明確傳送到防火牆、閘道或 Proxy 等設備,如此一來,指派給標準負載平衡器或設備的公用 IP 就能處理網路位址轉譯 (NAT)。

AKS 上的 HDInsight 不會設定輸出公用 IP 位址或輸出規則,不同於具有負載平衡器類型叢集的輸出,如上一節所述。 您的 UDR 是輸出流量的唯一來源。

針對輸入流量,您必須根據選擇私人叢集的需求來選擇(用於保護 AKS 控制平面/API 伺服器上的流量),並選取每個叢集圖形上可用的私人輸入選項,以使用公用或內部負載平衡器型流量。

使用 建立輸出的叢集集集區 userDefinedRouting

當您在 AKS 叢集集區上使用 HDInsight,並選擇 userDefinedRouting (UDR) 作為輸出路徑時,不會布建任何標準負載平衡器。 您必須先設定輸出資源的防火牆規則,才能 userDefinedRouting 運作。

重要

UDR 輸出路徑需要路由 0.0.0.0/0,以及路由表中防火牆或 NVA 的下一個躍點目的地。 路由表已經具備連到網際網路的預設 0.0.0.0/0。 您無法只新增此路由來取得輸出因特網連線,因為 Azure 需要 SNAT 的公用 IP 位址。 AKS 會檢查您未建立指向因特網的 0.0.0.0/0 路由,但會指向閘道、NVA 等。當您使用 UDR 時,只有在設定 loadbalancer 類型的服務時,才會建立輸入要求的負載平衡器公用 IP 位址。 當您使用 UDR 輸出路徑時,AKS 上的 HDInsight 絕不會為輸出要求建立公用 IP 位址。

顯示已啟用私人 AKS 的螢幕快照。

使用下列步驟,您將瞭解如何使用 Azure 防火牆 鎖定從 AKS 服務上的 HDInsight 輸出流量到後端 Azure 資源或其他網路資源。 此設定有助於防止資料外流或惡意程式入侵的風險。

Azure 防火牆讓您以更細微的層級控制輸出流量,並根據 Microsoft 網路安全性的即時威脅情報來篩選流量。 您可以橫跨訂用帳戶和虛擬網路集中建立、強制執行以及記錄應用程式和網路連線原則。

以下是設定防火牆規則並測試輸出連線的範例

以下是如何設定防火牆規則,並檢查輸出連線的範例。

  1. 建立必要的防火牆子網

    若要將防火牆部署到整合式虛擬網路,您需要名為 AzureFirewallSubnet 的子網或您選擇的名稱。

    1. 在 Azure 入口網站 中,流覽至與您的應用程式整合的虛擬網路。

    2. 從左側導覽中,選取 [ 子網 > + 子網]。

    3. 在 [名稱] 中,鍵入 AzureFirewallSubnet

    4. 子網路位址範圍,接受預設值或指定大小至少 /26 的範圍。

    5. 選取 [儲存]。

  2. 部署防火牆並取得其IP

    1. 從 Azure 入口網站功能表或 [首頁] 頁面,選取 [建立資源]。

    2. 在搜尋方塊中輸入防火牆,然後按 Enter

    3. 選取 [防火牆],然後選取 [建立]

    4. 在 [建立防火牆] 頁面上,設定防火牆,如下表所示:

      設定
      資源群組 與整合式虛擬網路相同的資源群組。
      名稱 您選擇的名稱
      區域 與整合式虛擬網路相同的區域。
      防火牆原則 選取 [新增] 建立新的原則。
      虛擬網路 選取整合式虛擬網路。
      公用 IP 位址 選取現有的位址,或選取 [新增] 建立位址。

      顯示建立防火牆基本索引卷標的螢幕快照。

    5. 按一下 [檢閱 + 建立] 。

    6. 再次選取 [建立]。 此程式需要幾分鐘的時間才能部署。

    7. 部署完成後,請移至您的資源群組,然後選取防火牆。

    8. 在防火牆的 [概觀] 頁面中,複製私人 IP 位址。 私人IP位址將作為虛擬網路路由規則中的下一個躍點位址。

      顯示如何設定防火牆的螢幕快照。

  3. 將所有流量路由傳送至防火牆

    建立虛擬網路後,Azure 會針對虛擬網路的每個子網路,建立預設路由表,並新增系統預設路由至此資料表。 在此步驟中,您會建立使用者定義的路由表,並路由傳送所有流量至防火牆,然後在整合式虛擬網路中關聯路由表與 App Service 子網路。

    1. Azure 入口網站功能表上,選取 [所有服務],或從任何頁面搜尋並選取 [所有服務]。

    2. 在 [網路] 底下,選取 [路由表]

    3. 選取 [新增]。

    4. 設定路由表,如下列範例所示:

      顯示如何建立路由表的螢幕快照。

      請務必選取您建立防火牆時相同的區域。

    5. 選取 [檢閱 + 建立]。

    6. 選取 建立

    7. 完成部署後,選取 [移至資源]

    8. 從左側導覽中,選取 [ 路由 > 新增]。

    9. 設定新的路由,如下表所示:

      設定
      目的地類型 IP 位址
      目的地 IP 位址/CIDR 範圍 0.0.0.0/0
      下一個躍點類型 虛擬設備
      下一個躍點位址 您複製之防火牆的私人IP位址
    10. 從左側導覽中,選取 [ 子網 > 關聯]。

    11. 在 [虛擬網路] 中,選取整合式虛擬網路。

    12. 在 [ 子網] 中,選取您想要使用的 AKS 子網上的 HDInsight。

      顯示如何建立子網關聯之螢幕快照。

    13. 選取 [確定]。

  4. 設定防火牆原則

    AKS 子網上的 HDInsight 輸出流量現在會透過整合式虛擬網路路由傳送至防火牆。 若要控制輸出流量,請將應用程式規則新增至防火牆原則。

    1. 瀏覽至防火牆的概觀頁面,然後選取防火牆原則。

    2. 在防火牆原則頁面中,從左側導覽新增網路和應用程式規則。 例如,選取 [ 網络規則 > ] [新增規則集合]。

    3. 在 [規則],新增具有子網作為來源地址的網路規則,並指定 FQDN 目的地。 同樣地,新增應用程式規則。

      1. 您必須新增 此處提供的輸出流量規則。 請參閱 此檔以新增應用程式和網路規則 ,以允許叢集的流量運作。 (建立 clusterPool 之後需要新增 AKS ApiServer,因為您只能在建立 clusterPool 之後取得 AKS ApiServer)。
      2. 您也可以為叢集相同子網中的任何相依資源新增 私人端點 ,以存取它們(例如 – 記憶體)。
    4. 選取 [新增]。

  5. 確認是否已建立公用IP

設定防火牆規則后,您可以在叢集集區建立期間選取子網。

顯示如何驗證IP位址的螢幕快照。

建立叢集集區之後,您可以在 MC 群組中觀察到沒有建立公用 IP。

顯示網路清單的螢幕快照。

重要

使用輸出路徑在叢集集集區設定Outbound with userDefinedRouting中建立叢集之前,您必須提供 AKS 叢集 -符合叢集集區 Network Contributor - 用於定義路由的網路資源角色,例如 虛擬網絡、路由表和 NSG(如果使用的話)。 在這裡深入瞭解如何指派角色

注意

當您部署具有 UDR 輸出路徑和私人輸入叢集的叢集集區時,AKS 上的 HDInsight 會自動建立私人 DNS 區域,並對應專案來解析 FQDN 以存取叢集。

使用私人 AKS 建立叢集集區

使用私人 AKS 時,控制平面或 API 伺服器具有RFC1918 - 私人因特網位址設定檔中定義的內部 IP 位址。 藉由使用此選項的私人 AKS,您可以確保 API 伺服器與 AKS 工作負載叢集上的 HDInsight 之間的網路流量只會保留在專用網上。

顯示已啟用私人 AKS 的螢幕快照。

您佈建私人 AKS 叢集時,AKS 預設會建立擁有私人 DNS 區域的私人 FQDN,以及擁有 Azure 公用 DNS 中對應 A 記錄的額外公用 FQDN。 代理程式節點會繼續使用私人 DNS 區域中的記錄,解析私人端點的私人IP位址,以便與 API 伺服器通訊。

因為 AKS 上的 HDInsight 會自動將記錄插入 HDInsight 中建立受控群組的 HDInsight 私人 DNS 區域,以供私人輸入使用。

具有私人輸入的叢集

當您在 AKS 上使用 HDInsight 建立叢集時,其具有任何人都可以存取的公用 FQDN 和 IP 位址。 使用私人輸入功能,您可以確定只有專用網可以在用戶端與 AKS 叢集上的 HDInsight 之間傳送和接收數據。

顯示 [建立叢集基本] 索引卷標的螢幕快照。

注意

透過這項功能,AKS 上的 HDInsight 會自動在私人 DNS 區域上建立 A 記錄以供輸入。

此功能可防止公用因特網存取叢集。 叢集會取得內部負載平衡器和私人IP。 AKS 上的 HDInsight 會使用叢集集集區建立的私人 DNS 區域來連線叢集 虛擬網絡 並執行名稱解析。

每個私人叢集都包含兩個 FQDN:公用 FQDN 和私人 FQDN。

公用 FQDN: {clusterName}.{clusterPoolName}.{subscriptionId}.{region}.hdinsightaks.net

公用 FQDN 只能解析為具有子域的 CNAME,因此必須搭配正確 Private DNS zone setting 使用,以確保 FQDN 最終可以解析為正確的私人 IP 位址。

私用 DNS 區域應該能夠將私人 FQDN 解析為 IP (privatelink.{clusterPoolName}.{subscriptionId})

注意

AKS 上的 HDInsight 會在叢集集區虛擬網路中建立私人 DNS 區域。 如果您的用戶端應用程式位於相同的虛擬網路中,您就不需要再次設定私人 DNS 區域。 如果您在不同的虛擬網路中使用用戶端應用程式,您必須使用虛擬網路對等互連,並系結至叢集集區虛擬網路中的私人 DNS 區域,或使用 v貝魯特網路中的私人端點,以及私人 DNS 區域,將 A 記錄新增至私人端點私人 IP。

私人 FQDN: {clusterName}.privatelink.{clusterPoolName}.{subscriptionId}.{region}.hdinsightaks.net

私人 FQDN 將會指派給僅啟用私人輸入的叢集。 這是私人 DNS 區域中的 A-RECORD,可解析為叢集的私人 IP。

參考