共用方式為


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

注意

AKS 上的 Azure HDInsight 將於 2025 年 1 月 31 日退場。 請於 2025 年 1 月 31 日之前,將工作負載移轉至 Microsoft Fabric 或對等的 Azure 產品,以免工作負載突然終止。 訂用帳戶中剩餘的叢集將會停止,並會從主機移除。

在淘汰日期之前,只有基本支援可用。

重要

此功能目前為預覽功能。 Microsoft Azure 預覽版增補使用規定包含適用於 Azure 功能 (搶鮮版 (Beta)、預覽版,或尚未正式發行的版本) 的更多法律條款。 若需此特定預覽版的相關資訊,請參閱 Azure HDInsight on AKS 預覽版資訊。 如有問題或功能建議,請在 AskHDInsight 上提交要求並附上詳細資料,並且在 Azure HDInsight 社群上追蹤我們以獲得更多更新資訊。

「AKS 上的 HDInsight」是一種在 Azure Kubernetes Service (AKS) 上執行的受控平台即服務 (PaaS)。 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 上的 HDInsight」指派的公用 IP 來進行輸出。 當您在您的叢集集區上設定負載平衡器的輸出類型時,您可以預期來自「AKS 上的 HDInsight」所建立的負載平衡器的輸出流量。

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

顯示叢集集區網路設定的螢幕擷取畫面。

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

這個由「AKS 上的 HDInsight」所建立的公用 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 時,只有當您設定負載平衡器類型的服務時,才會建立用於輸入要求的負載平衡器公用 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 伺服器都具有內部 IP 位址,如 RFC1918 - 私人網際網路文件的位址配置中所定義。 透過使用此私人 AKS 選項,您可以確保 API 伺服器與「AKS 上的 HDInsight」工作負載叢集之間的網路流量僅保留在私人網路上。

顯示已啟用私人 AKS 的螢幕擷取畫面。

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

因為「AKS 上的 HDInsight」會自動將記錄插入到「AKS 上的 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 區域,或使用虛擬網路中的私人端點,以及私人 DNS 區域,將 A 記錄新增至私人端點私人 IP。

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

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

參考