快速入门:使用 PowerShell 在 Azure Stack HCI 和 Windows Server 上设置 Azure Kubernetes 服务主机并部署工作负载群集

适用于:Azure Stack HCI 或 Windows Server Datacenter

在本快速入门中,了解 Azure Kubernetes 服务 (AKS) 主机的设置。 你将使用 PowerShell 创建 Azure Stack HCI 和 Windows Server 上的 AKS 群集。 若要改用 Windows Admin Center,请参阅使用 Windows Admin Center 进行设置

注意

准备阶段

  • 请确保已满足系统要求页上的所有先决条件。
  • 使用 Azure 帐户注册 AKS 主机以进行计费。 有关详细信息,请访问 Azure 要求

请安装 AksHci PowerShell 模块

在 Azure Stack HCI 群集或 Windows Server 群集的所有节点上

如果你使用的是远程 PowerShell,则必须使用 CredSSP。

关闭所有打开的 PowerShell 窗口,以管理员身份打开新的 PowerShell 会话,然后在 Azure Stack HCI 或 Windows Server 群集中的所有节点上运行以下命令:

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

必须再次关闭所有现有的 PowerShell 窗口,确保已加载的模块已刷新。 在关闭所有打开的 PowerShell 窗口之前,请勿继续执行下一步。

通过在 Azure Stack HCI 或 Windows Server 群集中的所有节点上运行以下命令来安装 AKS-HCI PowerShell 模块:

Install-Module -Name AksHci -Repository PSGallery
Exit

必须再次关闭所有现有的 PowerShell 窗口,确保已加载的模块已刷新。 在关闭所有打开的 PowerShell 窗口之前,请勿继续执行下一步。

可以使用帮助程序脚本删除旧的 AKS-HCI PowerShell 模块,以避免 AKS 部署中出现任何与 PowerShell 版本相关的问题。

验证你的安装

Get-Command -Module AksHci

若要查看 AksHci PowerShell 命令的完整列表,请参阅 AksHCI PowerShell

将资源提供程序注册到订阅

开始注册过程前,需要为 Azure Stack HCI 和 Windows Server 上的 AKS 注册在 Azure 中启用适当的资源提供程序。 为此,可运行以下 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

若要验证注册过程,请运行以下 PowerShell 命令:

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

步骤 1:准备要部署的计算机

在每个物理节点上运行检查,以查看所有要求是否都已得到满足,以便安装 Azure Stack HCI 和 Windows Server 上的 AKS。 以管理员身份打开 PowerShell 并运行以下 Initialize-AksHciNode 命令。 在 Windows Server 上的 Azure Stack HCI 群集中的所有节点上运行以下命令。

Initialize-AksHciNode

步骤 2:创建虚拟网络

在 Windows Server 上的 Azure Stack HCI 群集中的任何一个节点上运行步骤 2 中的以下命令。

要获取可用交换机的名称,请运行以下命令。 确保 VM 交换机的 SwitchType 为“外部”。

Get-VMSwitch

示例输出:

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

若要为你的部署中的节点创建要使用的虚拟网络,请使用 New-AksHciNetworkSetting PowerShell 命令创建一个环境变量。 稍后将使用该变量来配置使用静态 IP 的部署。 如果要为你的 AKS 部署配置 DHCP,请访问 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

注意

需要为你的环境自定义此示例命令中给定的值。

步骤 3:配置部署

在 Windows Server 上的 Azure Stack HCI 群集中的任何一个节点上运行步骤 3 中的以下命令。

若要为 AKS 主机创建配置设置,请使用 Set-AksHciConfig 命令。 必须指定 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 并配置注册设置

选项 1:如果具有“所有者”权限,则使用 Azure AD 帐户

使用订阅和资源组名称运行以下 Set-AksHciRegistration PowerShell 命令以登录到 Azure。 必须在澳大利亚东部、美国东部、东南亚或西欧 Azure 区域拥有 Azure 订阅和现有 Azure 资源组才能继续。

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

选项 2:使用 Azure 服务主体

如果你不能访问你是“所有者”的订阅,则可使用服务主体将 AKS 主机注册到 Azure,以便进行计费。 若要详细了解如何使用服务主体,请访问使用服务主体注册 Azure Stack HCI 和 Windows Server 上的 AKS

步骤 5:启动新部署

在 Azure Stack HCI 或 Windows Server 群集中的任何一个节点上运行步骤 5 中的以下命令。

配置部署后,必须启动它,才能安装 Azure Stack HCI 和 Windows Server 上的 AKS 代理/服务和 AKS 主机。 若要开始部署,请运行以下命令。

提示

若要在安装过程中查看其他状态详细信息,请设置 $VerbosePreference = "Continue",然后再继续。

Install-AksHci

警告

安装 Azure Kuberenetes 服务主机过程中,在注册期间设置的资源组中会创建“Kubernetes - Azure Arc”资源类型。 请勿删除此资源,因为该资源表示 Azure Kuberenetes 服务主机。 可以通过查看资源的分布字段的值是否为 aks_management 来识别该资源。 删除该资源将导致部署不符合策略。

步骤 6:创建 Kubernetes 群集

安装 AKS 主机之后,便准备好部署 Kubernetes 群集。 以管理员身份打开 PowerShell 并运行以下 New-AksHciCluster 命令。 此示例命令将创建一个新的 Kubernetes 群集,该群集有一个名为 linuxnodepool 的 Linux 节点池,节点数为 1。 若要了解有关节点池的更多信息,请访问在 Azure Stack HCI 和 Windows Server 上的 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 命令中传递的订阅和资源组详细信息,将 Azure Stack HCI 和 Windows Server 上的 AKS 群集连接到 Arc。

Connect-AzAccount
Enable-AksHciArcConnection -name mycluster

注意

如果在安装过程中遇到问题或错误消息,请参阅已知安装问题和错误以了解详细信息。

缩放 Kubernetes 群集

如果需要纵向扩展或缩减群集,可使用 Set-AksHciCluster 命令更改控制平面节点数,也可使用 Set-AksHciNodePool 命令更改节点池中 Linux 或 Windows 工作器节点数。

若要缩放控制平面节点,请运行以下命令。

Set-AksHciCluster -name mycluster -controlPlaneNodeCount 3

若要缩放节点池中的工作器节点,请运行以下命令。

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

注意

在 Azure Stack HCI 和 Windows Server 上的 AKS 早期版本中,Set-AksHciCluster 命令还用于缩放工作器节点。 Azure Stack HCI 和 Windows Server 上的 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

注意

通过查看 Hyper-V 管理器中的现有 VM,确保已删除群集。 如果未删除,你可以手动删除 VM。 然后运行命令 Restart-Service wssdagent。 应在故障转移群集中的每个节点上执行此操作。

获取日志

若要从所有 Pod 获取日志,请运行 Get-AksHciLogs 命令。 此命令会在工作目录中创建名为 akshcilogs.zip 的输出压缩文件夹。 akshcilogs.zip 文件夹的完整路径将是运行以下命令之后的输出。

Get-AksHciLogs

本快速入门介绍了如何使用 PowerShell 设置 AKS 主机并创建 Azure Stack HCI 和 Windows Server 上的 AKS 群集。 还介绍了如何使用 PowerShell 来缩放 Kubernetes 群集以及如何通过 kubectl 访问群集。

后续步骤