在 Windows Server 上架設 Azure Kubernetes Service 主機,並使用 PowerShell 部署工作負載叢集

適用於:Windows Server 資料中心

這個快速入門指南會引導你如何設定 Azure Kubernetes Service (AKS) 主機。 你可以用 PowerShell 在 Windows Server 上建立 Kubernetes 叢集。 若想改用 Windows Admin Center,請參閱使用 Windows Admin Center 進行設定。

Note

開始之前

  • 請確定您符合系統需求中的所有必要條件。
  • 使用 Azure 帳戶註冊 AKS 主機以進行計費。 如需詳細資訊,請參閱 Azure 需求。

安裝 AksHci PowerShell 模組

請在 Windows Server 叢集中的所有節點依照以下步驟操作:

Note

如果你使用遠端 PowerShell,必須使用 CredSSP。

  1. 關閉所有開啟的 PowerShell 視窗,以管理員身份開啟新的 PowerShell 會話,並在 Windows Server 叢集中的所有節點執行以下指令:

    Install-PackageProvider -Name NuGet -Force
    Install-Module -Name PowershellGet -Force -Confirm:$false
    

    你必須再次關閉所有現有的 PowerShell 視窗,以確保已載入的模組被重新整理。 在關閉所有開啟的 PowerShell 視窗之前,不要繼續下一步。

  2. 透過在 Windows Server 叢集中的所有節點執行以下指令來安裝 AksHci PowerShell 模組:

    Install-Module -Name AksHci -Repository PSGallery -Force -AcceptLicense
    

    你必須再次關閉所有現有的 PowerShell 視窗,以確保已載入的模組被重新整理。 在關閉所有開啟的 PowerShell 視窗之前,不要繼續下一步。

你可以用 輔助腳本刪除舊的 AKS-HCI PowerShell 模組,避免在 AKS 部署中遇到與 PowerShell 版本相關的問題。

驗證你的安裝

Get-Command -Module AksHci

欲了解完整的 AksHci PowerShell 指令清單,請參見 AksHci PowerShell。

向訂用帳戶註冊資源提供者

在註冊流程前,先在 Azure 啟用適當的資源提供者來進行 AKS 註冊。 為此,執行以下 PowerShell 指令:

要登入 Azure,請執行 Connect-AzAccount PowerShell 命令:

Connect-AzAccount

如果你想切換到其他訂閱,請執行 Set-AzContext PowerShell 指令:

Set-AzContext -Subscription "xxxx-xxxx-xxxx-xxxx"

執行以下指令,將你的 Azure 訂閱註冊到 Azure Arc 啟用的 Kubernetes 資源提供者。 這個註冊過程可能長達10分鐘,但只需在特定訂閱上執行一次:

Register-AzResourceProvider -ProviderNamespace Microsoft.Kubernetes
Register-AzResourceProvider -ProviderNamespace Microsoft.KubernetesConfiguration
Register-AzResourceProvider -ProviderNamespace Microsoft.ExtendedLocation

要驗證註冊流程,請執行以下 PowerShell 指令:

Get-AzResourceProvider -ProviderNamespace Microsoft.Kubernetes
Get-AzResourceProvider -ProviderNamespace Microsoft.KubernetesConfiguration
Get-AzResourceProvider -ProviderNamespace Microsoft.ExtendedLocation

步驟 1:為部署作好機器的準備

對每個實體節點進行檢查,確認安裝 AKS 的所有需求是否都符合。 以管理員身份開啟 PowerShell,並在 Windows Server 叢集中的所有節點執行以下 Initialize-AksHciNode 指令:

Initialize-AksHciNode

步驟二:建立虛擬網路

在你的 Windows Server 叢集中任一個節點執行以下指令。

要取得可用交換器的名稱,請執行以下指令。 確保 SwitchType 你的虛擬機交換器是 外部的:

Get-VMSwitch

範例輸出:

Name        SwitchType     NetAdapterInterfaceDescription
----        ----------     ------------------------------
extSwitch   External       Mellanox ConnectX-3 Pro Ethernet Adapter

要為部署中的節點建立虛擬網路,請使用 New-AksHciNetworkSetting PowerShell 指令建立環境變數。 這個虛擬網路後續用於配置使用靜態 IP 的部署。 如果您想要使用 DHCP 設定 AKS 部署,請參閱 New-AksHciNetworkSetting 以取得範例。 您也可以檢閱一些 網路節點概念。

# static IP
$vnet = New-AksHciNetworkSetting -name myvnet -vSwitchName "extSwitch" -k8sNodeIpPoolStart "172.16.10.1" -k8sNodeIpPoolEnd "172.16.10.255" -vipPoolStart "172.16.255.0" -vipPoolEnd "172.16.255.254" -ipAddressPrefix "172.16.0.0/16" -gateway "172.16.0.1" -dnsServers "172.16.0.1" -vlanId 9

Note

您必須針對您的環境自定義此範例命令中顯示的值。

步驟 3:配置您的部署

請在 Windows Server 叢集中的任何節點執行以下指令。

要建立 AKS 主機的設定,請使用 Set-AksHciConfig 指令。 你必須指定 imageDir、 和 workingDircloudConfigLocation 參數。 如果您想要重設組態詳細數據,請使用新的參數再次執行命令。

使用下列命令設定您的部署:

$csvPath = 'C:\clusterstorage\volume01' # Specify your preferred CSV path
Set-AksHciConfig -imageDir $csvPath\Images -workingDir $csvPath\ImageStore -cloudConfigLocation $csvPath\Config -vnet $vnet

Note

你必須根據你的環境自訂這個範例指令中顯示的值,但你不能更改主機或 Kubernetes 叢集上的虛擬機名稱。

步驟 4:登入 Azure 並設定註冊設定

選項一:如果你有「擁有者」權限,請使用 Microsoft Entra 帳號

請以訂閱名稱和資源群組名稱執行以下 Set-AksHciRegistration PowerShell 指令,登入 Azure。 您必須擁有 Azure 訂閱,並且在澳洲東部、美國東部、東南亞或西歐的 Azure 區域內已有現有的 Azure 資源群組:

Set-AksHciRegistration -subscriptionId "<subscriptionId>" -resourceGroupName "<resourceGroupName>"

選項二:使用 Azure 服務主體

如果你無法存取你身為 Owner 的訂用帳戶,可以使用服務主體將 AKS 主機註冊到 Azure 以進行計費。 如需更多關於如何使用服務主體的資訊,請參閱 在 Windows Server 上使用服務主體註冊 AKS。

步驟五:開始新的部署

在 Windows Server 叢集中的任何節點執行以下指令。

配置完後,必須啟動部署才能安裝 AKS 代理程式和服務,以及 AKS 主機。 要開始部署,請執行以下指令:

Tip

安裝過程中若想查看更多狀態細節,請先設定 $VerbosePreference = "Continue" 好再進行。

Install-AksHci

警告

在安裝 AKS 主機期間, 會在註冊期間設定的資源群組中建立 Kubernetes - Azure Arc 資源類型。 不要刪除這個資源,因為它代表你的 AKS 主機。 您可以透過檢查其發佈欄位是否具有aks_management的值來識別資源。 如果你刪除此資源,將會導致不符合原則的部署。

步驟 6:建立 Kubernetes 叢集

安裝好 AKS 主機後,你可以部署 Kubernetes 叢集。 以管理員身份開啟 PowerShell,並執行以下 New-AksHciCluster 指令。 這個範例指令會建立一個新的 Kubernetes 叢集,裡面有一個 Linux 節點池, linuxnodepool 節點數為 1。

欲了解更多關於節點池的資訊,請參閱 「在 AKS 中使用節點池」。

New-AksHciCluster -name mycluster -nodePoolName linuxnodepool -nodeCount 1 -osType Linux

檢查你部署的叢集

要取得已部署的 Kubernetes 叢集清單,請執行以下 Get-AksHciCluster PowerShell 指令:

Get-AksHciCluster
ProvisioningState     : provisioned
KubernetesVersion     : v1.20.7
NodePools             : linuxnodepool
WindowsNodeCount      : 0
LinuxNodeCount        : 0
ControlPlaneNodeCount : 1
Name                  : mycluster

要取得叢集中節點池的清單,請執行以下 Get-AksHciNodePool PowerShell 指令:

Get-AksHciNodePool -clusterName mycluster
ClusterName  : mycluster
NodePoolName : linuxnodepool
Version      : v1.20.7
OsType       : Linux
NodeCount    : 1
VmSize       : Standard_K8S3_v1
Phase        : Deployed

步驟 7:將您的叢集連接到支援 Arc 的 Kubernetes

透過執行 Enable-AksHciArcConnection 指令,將您的叢集連接到支援 Arc 的 Kubernetes。 以下範例是利用你在指令中 Set-AksHciRegistration 傳遞的訂閱與資源群組細節,將你的 Kubernetes 叢集連接到 Arc:

Connect-AzAccount
Enable-AksHciArcConnection -name mycluster

Note

若在安裝過程中遇到問題或錯誤訊息,請參閱 「安裝已知問題與錯誤 」以獲得更多資訊。

擴展 Kubernetes 叢集

如果你需要放大或縮小叢集,可以用 Set-AksHciCluster 指令來調整控制平面節點的數量。 要更改節點池中 Linux 或 Windows 工作節點的數量,請使用 Set-AksHciNodePool 指令。

要縮放控制平面節點,請執行以下指令:

Set-AksHciCluster -name mycluster -controlPlaneNodeCount 3

要擴展節點池中的工作節點,請執行以下指令:

Set-AksHciNodePool -clusterName mycluster -name linuxnodepool -count 3

Note

在 Windows Server 先前版本的 AKS 中,Set-AksHciCluster 指令也被用來擴展工作節點。 現在 AKS 正在工作負載叢集中引入節點池,只有當你的叢集是用 New-AksHciCluster 設定的舊參數建立時,才能用這個指令來擴展工作節點。

要擴展節點池中的工作節點,請使用 Set-AksHciNodePool 指令。

使用 kubectl 存取您的叢集

要使用 kubectl 存取你的 Kubernetes 叢集,請執行 Get-AksHciCredential PowerShell 指令。 此指令使用指定叢集的 kubeconfig 檔案作為 kubectl 的預設 kubeconfig 檔案。 你也可以使用 Kubectl 來 部署 Helm 的應用程式:

Get-AksHciCredential -name mycluster

刪除 Kubernetes 叢集

要刪除 Kubernetes 叢集,請執行以下指令:

Remove-AksHciCluster -name mycluster

Note

請確認你的叢集已被刪除,方法是查看 Hyper-V Manager 裡現有的虛擬機。 如果它們沒有被刪除,你可以手動刪除虛擬機。 接著執行指令 Restart-Service wssdagent。 在故障轉移叢集的每個節點執行這個指令。

取得記錄

若要擷取所有 Pod 的記錄,請執行 Get-AksHciLogs 命令。 這個指令會在你的工作目錄中建立一個壓縮 akshcilogs.zip 的輸出資料夾。 執行以下指令後,資料夾 akshcilogs.zip 的完整路徑為輸出:

Get-AksHciLogs

在這份快速入門中,你學會了如何架設 AKS 主機並使用 PowerShell 建立 Kubernetes 叢集。 你也學會了如何使用 PowerShell 擴展 Kubernetes 叢集,並用 kubectl 存取叢集。

下一步