如何在 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 上的 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 的部署準則。
- Azure Stack HCI 和 Windows Server 上的 AKS 需求
Azure Stack HCI 上的 Azure Kubernetes Service 需求 - SDN 要求
規劃軟體定義網路的基礎結構 - 學習課程模組
在 Azure Stack HCI 上規劃和部署 SDN 基礎結構
注意
針對 SDN 與 Azure Stack HCI 和 Windows Server 上 AKS 的整合,您需要網路控制站和軟體負載平衡器元件。 網路閘道 VM 是選用的,不是必要的。
安裝和準備 SDN
若要在 Azure Stack HCI 和 Windows Server 上搭配 AKS 使用 SDN,您必須設定 SDN,然後安裝 AKS。
安裝 SDK
第一個步驟是安裝 SDN。 若要安裝 SDN,建議使用 SDN Express 或 Windows 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 模組 指示來安裝 PowerShellGet 和 AksHci 模組。
從下載中心擷取 sdn_public_preview.zip
。
擷取 sdn_public_preview.zip
檔案,並複製更新的 PowerShell 模組。 在每個實體主機上:
分別取代
Akshci
和Moc
目錄中的AksHci.psm1
和Moc.psm1
PowerShell 模組內容。 您可以在 PowerShell 模組路徑 (%ProgramFiles%\\WindowsPowerShell\\Modules
) 中找到這些內容。取代或新增
Akshci
、DownloadSdk
、Kva
和Moc
目錄中所使用的Common.psm1
PowerShell 模組。
注意
完成此步驟之後,請重新整理或重載任何開啟的 PowerShell 工作階段,讓模組重載。
註冊訂閱的資源提供者
請遵循將資源提供者註冊至訂用帳戶的指示,以向訂用帳戶註冊資源提供者。
準備機器以進行部署
依照指示準備電腦進行部署,以準備機器進行部署。
在 Azure Stack HCI 和 Windows Server 上設定 AKS 以進行安裝
選擇其中一部 HCI 機器,以推動在 Azure Stack HCI 和 Windows Server 上 AKS 的建立。 安裝之前必須完成兩個步驟。
設定 Azure Stack HCI 和 Windows Server 網路設定上的 AKS 以進行 SDN。 例如,使用:
SDN 虛擬網路
10.20.0.0/24
(10.20.0.0 - 10.20.0.255
)這是虛擬化的網路,您可以使用任何 IP 子網路。 此子網路不需要存在於實體網路上。
PublicVIP 邏輯網路
10.127.132.16/29
(10.127.132.16 - 10.127.132.23
)這是您在設定 SDN 軟體負載平衡器時所提供的 PublicVIP 邏輯網路。
網路閘道
10.20.0.1
這是虛擬網路的網路閘道。
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
在上一個步驟中使用的相同 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 並設定註冊設定
依照指示登入 Azure,並進行註冊設定來進行註冊設定。
在 Azure Stack HCI 和 Windows Server 上安裝 AKS
AKS 設定完成後,您就可以在 Azure Stack HCI 和 Windows Server 上安裝 AKS:
Install-AksHci
安裝成功之後,應該已建立控制平面 VM (管理叢集),並將其 VmNIC 連結至 SDN 網路。
意見反應與問題
另外還可針對 SDN 在針對 SDN 進行疑難排解找到一些自助資源,並針對 Azure Stack HCI 和 Windows Server 上的 AKS 使用 Azure Stack HCI 上的 Azure Kubernetes Service 時解決一般問題。 我們感謝您的意見反應和參與!