教程:在已启用 Arc 的 AKS 上部署工作负载群集

适用于:Azure Stack HCI 22H2 上的 AKS、Windows Server 上的 AKS

Kubernetes 为容器化应用程序提供一个分布式平台。

在本教程的第三部分(共 7 部分)中,Kubernetes 群集部署在 Azure Stack HCI 上的 AKS 上。 将了解如何执行以下操作:

  • 在 Azure Stack HCI 上部署 AKS 群集
  • 安装 Kubernetes CLI (kubectl)
  • 配置 kubectl,以便连接到工作负载群集

在后面的教程中,Azure 投票应用程序将部署到群集,并进行缩放和更新。

开始之前

在以前的教程中,已创建容器映像并上传到 Azure 容器注册表实例。 如果尚未完成这些步骤,请先阅读教程 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 服务主机

首先,配置注册设置。

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 群集,其中包含一个名为 的 linuxnodepoolLinux 节点池,该池的节点计数为 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 以获取群集信息,则输出中的 字段 WindowsNodeCountLinuxNodeCount 将返回 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 群集,请使用 kubectl(Kubernetes 命令行客户端)。

使用 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

后续步骤

本教程在 AKS 中部署了一个 Kubernetes 群集并将 kubectl 配置为连接到该群集。 你已了解如何执行以下操作:

  • 在 Azure Stack HCI 上部署 AKS 群集
  • 安装 Kubernetes CLI (kubectl)
  • 配置 kubectl,以便连接到 AKS 群集

请继续学习下一教程,了解如何将应用程序部署到群集。