快速入門:在 Azure Stack HCI 上設定 Azure Kubernetes Service 主機,並使用 PowerShell 部署工作負載叢集

適用于: Azure Stack HCI、Windows Server 2019 Datacenter

在本快速入門中,您將瞭解如何使用 PowerShell 設定 Azure Kubernetes Service 主機,以及在 Azure Stack HCI 叢集上建立 AKS。 若要改為使用 Windows Admin Center,請參閱設定 Windows Admin Center

開始之前

  • 確定您已滿足 系統需求 頁面上的所有必要條件。
  • 註冊 AKS 主機以進行計費的 Azure 帳戶。 如需詳細資訊,請造訪 Azure 需求
  • 您在 Azure Stack HCI 上使用的 Azure 訂用帳戶 至少有下列其中一個 存取層級 AKS:
    • 具有內建 擁有 者角色的使用者帳戶。 您可以流覽至您的訂用帳戶,然後按一下 Azure 入口網站左側的 [存取控制 (IAM) ],然後按一下 [查看我的存取權],來檢查存取層級。
    • 具有內建 Kubernetes 叢集 Azure Arc 上線角色的服務主體 (最小) 、內建 參與者 角色或內建 擁有 者角色。
  • 美國東部、東南亞或西歐 Azure 區域中的 Azure 資源群組,在註冊前提供,位於上述訂用帳戶上。
  • 至少下列其中一項
    • 2-4 節點 Azure Stack HCI 叢集
    • WindowsServer 2019 Datacenter 容錯移轉叢集

    注意

    我們建議您將2-4 節點 Azure Stack HCI 叢集中。 如果您沒有上述任何一項,請依照 Azure Stack HCI 註冊頁面上的指示進行。

安裝 Azure PowerShell 和 AksHci PowerShell 模組

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

關閉所有開啟的 PowerShell 視窗。 刪除路徑中的 AksHci、AksHci. day2.ps1、Kva、Moc 和 MSK8sDownloadAgent 的任何現有目錄, %systemdrive%\program files\windowspowershell\modules 然後安裝下列 Azure PowerShell 模組。

Install-Module -Name Az.Accounts -Repository PSGallery -RequiredVersion 2.2.4
Install-Module -Name Az.Resources -Repository PSGallery -RequiredVersion 3.2.0
Install-Module -Name AzureAD -Repository PSGallery -RequiredVersion 2.0.2.128
Install-Module -Name AksHci -Repository PSGallery
Import-Module Az.Accounts
Import-Module Az.Resources
Import-Module AzureAD
Import-Module AksHci

關閉所有 PowerShell 視窗 ,然後重新開啟新的系統管理會話,以檢查您是否擁有最新版本的 PowerShell 模組。

Get-Command -Module AksHci

若要查看 AksHci PowerShell 命令的完整清單,請參閱 AksHci powershell

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

在註冊程式之前,您必須先在 Azure 中啟用適當的資源提供者,以 Azure Stack HCI 註冊 AKS。 若要這樣做,請執行下列 PowerShell 命令。

若要登入 Azure,請執行連線-disconnect-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

若要驗證註冊程式,請執行下列 PowerShell 命令:

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

步驟1:準備您的機器 (的) 以進行部署

在每個實體節點上執行檢查,以查看是否滿足在 Azure Stack HCI 上安裝 Azure Kubernetes Service 的所有需求。 以系統管理員身分開啟 PowerShell,然後執行下列 Initialize AksHciNode 命令。

Initialize-AksHciNode

步驟2:建立虛擬網路

若要取得可用交換器的名稱,請執行下列命令。 請確定 SwitchType 您 VM 交換器的是「外部」。

Get-VMSwitch

範例輸出:

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

若要為部署中要使用的節點建立虛擬網路,請使用 AksHciNetworkSetting PowerShell 命令來建立環境變數。 稍後會使用此設定來設定使用靜態 IP 的部署。 如果您想要使用 DHCP 設定 AKS 部署,請造訪 新的-AksHciNetworkSetting 以取得範例。 您也可以查看某些 網路節點概念

#static IP
$vnet = New-AksHciNetworkSetting -name myvnet -vSwitchName "extSwitch" -macPoolName myMacPool -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

注意

您必須為您的環境自訂此範例命令所提供的值。

步驟3:設定您的部署

使用 AksHciConfig 命令設定 Azure Kubernetes Service 主機的設定。 您必須指定 imageDirworkingDircloudConfigLocation 參數。 如果您想要重設設定詳細資料,請使用新的參數再次執行命令。

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

Set-AksHciConfig -imageDir c:\clusterstorage\volume1\Images -workingDir c:\ClusterStorage\Volume1\ImageStore -cloudConfigLocation c:\clusterstorage\volume1\Config -vnet $vnet -cloudservicecidr "172.16.10.10/16"

注意

您必須為您的環境自訂此範例命令所提供的值。

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

使用您的訂用帳戶和資源組名來執行下列 AksHciRegistration PowerShell 命令,以登入 Azure。 您必須擁有 Azure 訂用帳戶,以及美國東部、東南亞或西歐 Azure 區域的現有 Azure 資源群組,才能繼續進行。

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

步驟5:開始新的部署

設定您的部署之後,您必須加以啟動。 這會將 Azure Kubernetes Service 安裝在 Azure Stack HCI 代理程式/服務和 Azure Kubernetes Service 主機上。 若要開始部署,請執行下列命令。

Install-AksHci

步驟6:建立 Kubernetes 叢集

安裝 Azure Kubernetes Service 主機之後,您就可以開始部署 Kubernetes 叢集。 以系統管理員身分開啟 PowerShell,然後執行下列 AksHciCluster 命令。 此範例命令會建立一個新的 Kubernetes 叢集,其中包含一個名為 linuxnodepool 的 Linux 節點集區,節點計數為1。 若要閱讀有關節點集區的詳細資訊,請造訪 Azure Stack HCI 上的使用節點集區 AKS。

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

檢查您已部署的叢集

若要取得已部署的 Kubernetes 叢集清單,請執行下列 AksHciCluster PowerShell 命令。

Get-AksHciCluster

輸出

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

注意

如果您使用中的新參數集 New-AksHciCluster 來部署叢集,然後執行 Get-AksHciCluster 以取得叢集資訊,則 WindowsNodeCount 會傳回輸出中的欄位和 LinuxNodeCount 0 。 若要取得每個節點集區中正確的節點數目,請使用 Get-AksHciNodePool 具有指定叢集名稱的命令。

若要取得叢集中的節點集區清單,請執行下列 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

執行AksHciArcConnection命令,以將您的叢集連線啟用 Arc 的 Kubernetes。 下列範例會使用您在命令中傳遞的訂用帳戶和資源群組詳細資料,將 Azure Stack HCI 叢集上的 AKS 連接到 Arc Set-AksHciRegistration

Connect-AzAccount
Enable-AksHciArcConnection -name mycluster

注意

如果您在安裝過程中遇到問題或錯誤訊息,請參閱 安裝已知問題和錯誤 以取得詳細資訊。

調整 Kubernetes 叢集

如果您需要將叢集相應增加或減少,您可以使用AksHciCluster命令來變更控制平面節點的數目,也可以使用AksHciNodePool命令變更節點集區中的 Linux 或 Windows 背景工作節點的數目。

若要調整控制平面節點,請執行下列命令。

Set-AksHciCluster –name mycluster -controlPlaneNodeCount 3

若要調整節點集區中的背景工作節點,請執行下列命令。

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

使用 kubectl 存取您的叢集

若要使用 kubectl 存取 Kubernetes 叢集,請執行 AksHciCredential PowerShell 命令。 這會使用指定叢集的 kubeconfig 檔做為 kubectl 的預設 kubeconfig 檔。 您也可以使用 kubectl 來 部署使用 Helm 的應用程式

Get-AksHciCredential -name mycluster

刪除 Kubernetes 叢集

如果您需要刪除 Kubernetes 叢集,請執行下列命令。

Remove-AksHciCluster -name mycluster

注意

查看 Hyper-v 管理員中的現有 Vm,以確定您的叢集已刪除。 如果未刪除,您可以手動刪除 Vm。 然後,執行命令 Restart-Service wssdagent 。 這應該在容錯移轉叢集中的每個節點上完成。

取得記錄

若要從您所有的 pod 取得記錄,請執行 AksHciLogs 命令。 此命令會 akshcilogs.zip 在您的工作目錄中建立稱為「壓縮的輸出」資料夾。 執行 akshcilogs.zip 下列命令後,資料夾的完整路徑將會是輸出。

Get-AksHciLogs

在本快速入門中,您已瞭解如何使用 PowerShell 設定 Azure Kubernetes Service 主機,以及在 Azure Stack HCI 叢集上建立 AKS。 您也已瞭解如何使用 PowerShell 來調整 Kubernetes 叢集,以及如何使用來存取叢集 kubectl

下一步