如何在 Azure Stack HCI 和 Windows Server 上使用 Azure Kubernetes Service 搭配軟體定義的網路和虛擬網路基礎結構 (公開預覽)

您可以使用 PowerShell,在 Azure Stack HCI 和 Windows Server 的軟體定義網路 (SDN) 虛擬網路基礎結構上部署 Azure Kubernetes Service (AKS)。

重要

軟體定義網路和虛擬網路基礎結構與 Azure Stack HCI 和 Windows Server 上 AKS 的整合目前為預覽狀態。 請參閱 Microsoft Azure 預覽版增補使用規定,以了解適用於 Azure 功能 (搶鮮版 (Beta)、預覽版,或尚未正式發行的版本) 的法律條款。

公開預覽版的範圍

您可以在 Azure Stack HCI 和 Windows Server 上設定 AKS:

  • 將 Azure Stack HCI 和 Windows Server 基礎結構和工作負載虛擬機器 (VM) 上的 AKS 連結至 SDN 虛擬網路。
  • 針對 Azure Stack HCI 和 Windows Server 負載平衡用途上的所有 AKS,使用 SDN 軟體負載平衡器 (SLB)。

請檢閱 Azure Stack HCI 和 Windows Server 上 AKS 所搭配軟體定義網路的基礎結構概覽。

限制 Azure Stack HCI 和 Windows Server 上 AKS 上的 SDN

不支援下列功能:

  • 將 Pod 和容器連結至 SDN 虛擬網路。 Pod 會使用 Flannel 或 Calico (預設) 做為網路提供者。
  • 使用 SDN 存取控制清單強制執行網路原則。 您仍然可以使用 SDN 工具,在 Azure Stack HCI 和 Windows Server 上 AKS 之外設定 SDN 存取控制清單,例如 REST 端點、PowerShell、Windows Admin Center 和 System Center Virtual Machine Manager,但 Kubernetes NetworkPolicy 物件不會設定這些清單。
  • 將 Azure Stack HCI 和 Windows Server VM NIC 上的 AKS 連結至 SDN 邏輯網路
  • 使用 Windows Admin Center 安裝。
  • Azure Stack HCI 和 Windows Server VM 連線能力上的 AKS 實體主機:VM NIC 會加入 SDN 虛擬網路,因此預設無法從主機存取。 您可以使用 SDN 的軟體負載平衡器,將公用 IP 直接連結至 VM,以手動啟用此功能。

必要條件

若要使用 SDN 在 Azure Stack HCI 和 Windows Server 上部署 AKS,您必須確定環境符合 Azure Stack HCI 和 Windows Server 上 AKS 與 SDN 的部署準則。

注意

針對 SDN 與 Azure Stack HCI 和 Windows Server 上 AKS 的整合,您需要網路控制站和軟體負載平衡器元件。 網路閘道 VM 是選用的,不是必要的。

安裝和準備 SDN

若要在 Azure Stack HCI 和 Windows Server 上搭配 AKS 使用 SDN,您必須設定 SDN,然後安裝 AKS。

安裝 SDK

第一個步驟是安裝 SDN。 若要安裝 SDN,建議使用 SDN ExpressWindows Admin Center

您可以在 Software Load Balancer.psd1 找到部署所有必要的 SDN 基礎結構元件的參考設定檔

SDN Express 部署完成後,應該會有一個畫面,其狀態報告為良好:

您的部署會表示其狀態為使用中且良好

如果發生錯誤或回報為狀況不良,請參閱針對 SDN 進行疑難排解

在繼續之前,SDN 的健康情況務必為良好。 如果您要在新環境中部署 SDN,請建立測試 VM,並驗證負載平衡器 VIP 的連線能力。 瞭解如何使用 Windows Admin Center 建立 VM 並將其連結至 SDN 虛擬網路

在 Azure Stack HCI 和 Windows Server 上安裝 AKS

初始化並準備 Azure Stack HCI 和 Windows Server 上 AKS 的所有實體主機電腦。 請參閱快速入門:使用 PowerShell 在 Azure Stack HCI 和 Windows Server 上設定 Azure Kubernetes Service 主機,並部署工作負載叢集,以取得最新的指示。

安裝 Azure Stack HCI 和 Windows Server PowerShell 模組上的 AKS

請參閱安裝 AksHci PowerShell 模組,以在 Azure Stack HCI 和 Windows Server PowerShell 模組上安裝 AKS 的指示。

注意

您可能需要將 PowerShell ExecutionPolicy 變更為 Unrestricted,以便匯入和執行其中一些指令碼。 進行方式為執行 Set-ExecutionPolicy Unrestricted

完成上一個步驟後,請遵循 安裝 AksHci PowerShell 模組 指示來安裝 PowerShellGetAksHci 模組。

從下載中心擷取 sdn_public_preview.zip

擷取 sdn_public_preview.zip 檔案,並複製更新的 PowerShell 模組。 在每個實體主機上:

  1. 分別取代 AkshciMoc 目錄中的 AksHci.psm1Moc.psm1 PowerShell 模組內容。 您可以在 PowerShell 模組路徑 (%ProgramFiles%\\WindowsPowerShell\\Modules) 中找到這些內容。

  2. 取代或新增 AkshciDownloadSdkKvaMoc 目錄中所使用的 Common.psm1 PowerShell 模組。

注意

完成此步驟之後,請重新整理或重載任何開啟的 PowerShell 工作階段,讓模組重載。

註冊訂閱的資源提供者

請遵循將資源提供者註冊至訂用帳戶的指示,以向訂用帳戶註冊資源提供者。

準備機器以進行部署

依照指示準備電腦進行部署,以準備機器進行部署。

在 Azure Stack HCI 和 Windows Server 上設定 AKS 以進行安裝

選擇其中一部 HCI 機器,以推動在 Azure Stack HCI 和 Windows Server 上 AKS 的建立。 安裝之前必須完成兩個步驟。

  1. 設定 Azure Stack HCI 和 Windows Server 網路設定上的 AKS 以進行 SDN。 例如,使用:

    1. SDN 虛擬網路 10.20.0.0/24 (10.20.0.0 - 10.20.0.255)

      這是虛擬化的網路,您可以使用任何 IP 子網路。 此子網路不需要存在於實體網路上。

    2. PublicVIP 邏輯網路 10.127.132.16/29 (10.127.132.16 - 10.127.132.23)

      這是您在設定 SDN 軟體負載平衡器時所提供的 PublicVIP 邏輯網路。

    3. 網路閘道 10.20.0.1

      這是虛擬網路的網路閘道。

    4. DNS 伺服器 10.127.130.7

      這是虛擬網路的 DNS 伺服器。

      $vnet = New-AksHciNetworkSetting -name "myvnet" -vswitchName "External" -k8sNodeIpPoolStart "10.20.0.2" -k8sNodeIpPoolEnd "10.20.0.255" -vipPoolStart "10.127.132.16" -vipPoolEnd "10.127.132.23" -useNetworkController -ipAddressPrefix "10.20.0.0/24" -gateway "10.20.0.1" -dnsServers "10.127.130.7"
      
      參數 描述
      -name Azure Stack HCI 和 Windows Server 上 AKS 中的虛擬網路名稱
      -vswitchName HCI 伺服器上的外部 vSwitch 名稱
      -k8sNodeIpPoolStart -k8sNodeIpPoolEnd SDN 虛擬網路的 IP 開始/結束範圍
      -vipPoolStart -vipPoolEnd 用於負載平衡器 VIP 集區的邏輯網路 IP 開始/結束範圍。 我們已使用上述來自「PublicVIP」邏輯網路的位址範圍。
      -useNetworkController 啟用與 SDN 的整合
      -ipAddressPrefix CIDR 標記法中的虛擬網路子網路
      -gateway 閘道
      -dnsServers DNS 伺服器

      注意

      如需這些參數的詳細資訊,請參閱:New-AksHciNetworkSetting

  2. 在上一個步驟中使用的相同 PowerShell 視窗中,藉由提供目標 SDN 網路的參考,並在我們定義的網路設定 ($vnet) 傳入,以建立 Azure Stack HCI 和 Windows Server 設定上的 AKS 以進行 SDN:

    Set-AksHciConfig -imageDir "C:\clusterstorage\Volume1\images" -workingDir "C:\clusterstorage\Volume1\store" -cloudConfigLocation "C:\clusterstorage\Volume1\config" -vnet $vnet -useNetworkController -networkControllerFqdnOrIpAddress "nc.contoso.com" -networkControllerLbSubnetRef "/logicalnetworks/PublicVIP/subnets/my_vip_subnet" -networkControllerLnetRef "/logicalnetworks/HNVPA" -ring "SDNPreview" -catalog AKS-HCI -stable-catalogs-ext -version 1.0.10.40517
    

    注意

    HNVPA 邏輯網路將做為 Azure Stack HCI 和 Windows Server 虛擬網路上 AKS 的基礎提供者。

    注意

    如果您使用 Azure Stack HCI 叢集節點的靜態 IP 位址指派,您也必須提供 CloudServiceCidr 參數。 這是 MOC 雲端服務的 IP 位址,且必須與 Azure Stack HCI 叢集節點位於相同的子網路中。 更多詳細資料 Microsoft 內部部署雲端服務

    參數 描述
    -imageDir 儲存 VHD 映像的目錄路徑。
    -workingDir Azure Stack HCI 和 Windows Server 上的 AKS 儲存暫存檔案的目錄路徑
    -cloudConfigLocation 儲存雲端代理程式設定的目錄路徑
    -vnet 在上一個步驟中建立的 AksHciNetworkSetting 變數名稱
    -useNetworkController 啟用與 SDN 的整合
    -networkControllerFqdnOrIpAddress 網路控制器 FQDN。 您可以在網路控制器 VM 上執行 Get-NetworkController,並使用 RestName 參數來取得 FQDN。
    -networkControllerLbSubnetRef 參考網路控制器中設定的公用 VIP 邏輯網路子網路。 您可以執行 Get-NetworkControllerLogicalSubnet 命令來取得此子網路。 使用此命令時,請使用 PublicVIP 做為 LogicalNetworkId。 New-AksHciNetworkSetting Cmdlet 中的 VipPoolStart 和 vipPoolEnd 參數必須是此處所參考的子網路一部分。
    -networkControllerLnetRef 一般而言,這會是「/logicalnetworks/HNVPA」
    -version 使用 1.0.10.40517
    -ring 使用 SDNPreview
    -catalog 使用 Azure Stack HCI 和 Windows Server 上的 AKS -stable-catalogs-ext

注意

如需這些參數的詳細資訊,請參閱 Set-AksHciConfig

請檢查 Azure Stack HCI 和 Windows Server 上 AKS 的成功設定。

登入 Azure 並設定註冊設定

依照指示登入 Azure,並進行註冊設定來進行註冊設定。

在 Azure Stack HCI 和 Windows Server 上安裝 AKS

AKS 設定完成後,您就可以在 Azure Stack HCI 和 Windows Server 上安裝 AKS:

Install-AksHci

安裝成功之後,應該已建立控制平面 VM (管理叢集),並將其 VmNIC 連結至 SDN 網路。

其在執行後,請檢查 Azure Stack HCI 和 Windows Server 上 AKS 的成功安裝。

意見反應與問題

另外還可針對 SDN 在針對 SDN 進行疑難排解找到一些自助資源,並針對 Azure Stack HCI 和 Windows Server 上的 AKS 使用 Azure Stack HCI 上的 Azure Kubernetes Service 時解決一般問題。 我們感謝您的意見反應和參與!

後續步驟