教學課程:在Arc啟用的 AKS 上部署工作負載叢集

適用於:Azure Stack HCI 22H2 上的 AKS、Windows Server 上的 AKS

Kubernetes 會提供容器化應用程式的分散式平台。

在本教學課程中,Kubernetes 叢集的第三部分會部署在 Azure Stack HCI 上的 AKS 上。 您將學習如何:

  • 在 Azure Stack HCI 上部署 AKS 叢集
  • 安裝 Kubernetes CLI (kubectl)
  • 設定 kubectl 以連線至工作負載叢集

在之後的教學課程中,Azure Vote 應用程式會部署至叢集、進行調整並加以更新。

開始之前

在先前的教學課程中,已建立容器映像並上傳到 Azure Container Registry 執行個體。 如果您尚未完成這些步驟,請從教學課程 1 - 建立容器映像開始。

本教學課程會使用 AksHci PowerShell 模組。

在 Azure Stack HCI 叢集或 Windows Server 叢集的所有節點上遵循下列步驟:

注意

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

  1. 關閉所有開啟的 PowerShell 視窗、以系統管理員身分開啟新的 PowerShell 會話,然後在 Azure Stack HCI 或 Windows Server 叢集中的所有節點上執行下列命令:

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

    您必須再次關閉所有現有的 PowerShell 視窗,以確保重新整理已載入的模組。 在您關閉所有開啟的 PowerShell 視窗之前,請勿繼續進行下一個步驟。

  2. 請在 Azure Stack HCI 或 Windows Server 叢集的所有節點上執行下列命令,以安裝 AKS-HCI 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 Kubernetes Service 主機

首先,設定註冊設定。

Set-AksHciRegistration -subscription mysubscription -resourceGroupName myresourcegroup

您必須根據 Azure 訂用帳戶和資源群組名稱來自訂這些值。

然後,執行下列命令,以確保符合每個實體節點上的所有需求,以在 Azure Stack HCI 上安裝 AKS:

Initialize-AksHciNode

接下來,建立虛擬網路。 您將需要可用外部參數的名稱:

Get-VMSwitch

範例輸出:

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

執行下列命令以建立具有靜態 IP 的虛擬網路:

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

然後,使用下列命令來設定部署。

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

現在,您已準備好安裝 AKS 主機:

Install-AksHCi

建立 Kubernetes 叢集

使用 New-AksHciCluster 命令建立 Kubernetes 叢集。 下列範例會建立名為 的 mycluster 叢集,其具有一 linuxnodepool個名為的Linux節點計數為1:

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

若要確認部署是否成功,請執行下列命令。

Get-AksHcicluster -name mycluster
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 搭配指定的叢集名稱。

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

安裝 Kubernetes CLI

若要從本機計算機連線到 Kubernetes 叢集,請使用 Kubernetes 命令行用戶端 kubectl

使用 kubectl 連線至叢集

若要設定 kubectl 以連線到 Kubernetes 叢集,請使用 Get-AksHciCredential 命令。 下列範例會取得名為 mycluster之叢集的認證:

Get-AksHciCredential -name mycluster

若要驗證叢集的連線,請執行 kubectl get nodes 命令以傳回叢集節點的清單:

kubectl get nodes
NAME              STATUS   ROLES                  AGE     VERSION
moc-lbs6got5dqo   Ready    <none>                 6d20h   v1.20.7
moc-lel7tzxdt30   Ready    control-plane,master   6d20h   v1.20.7

後續步驟

在本教學課程中,Kubernetes 叢集已部署在 AKS 中,且您已設定 kubectl 加以連線。 您已了解如何︰

  • 在 Azure Stack HCI 上部署 AKS 叢集
  • 安裝 Kubernetes CLI (kubectl)
  • 設定 kubectl 以連線至您的 AKS 叢集

繼續進行下一個教學課程,以了解如何將應用程式部署至叢集。