使用 PowerShell 在 Windows Server 上设置 Azure Kubernetes 服务主机并部署工作负荷群集

适用于:Windows Server Datacenter

本快速入门指导你设置 Azure Kubernetes 服务 (AKS) 主机。 可以使用 PowerShell 在 Windows Server 上创建 Kubernetes 群集。 要改为使用 Windows Admin Center,请参阅使用 Windows Admin Center 进行设置

注意

准备阶段

  • 确保满足系统要求中的所有前提条件。
  • 使用 Azure 帐户注册 AKS 主机,以便计费。 有关详细信息,请参阅 Azure 要求

安装 AksHci PowerShell 模块

在 Windows Server 群集的所有节点上执行这些步骤:

注意

如果使用远程 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

步骤 2:创建虚拟网络

在 Windows Server 群集中的任意一个节点上运行以下命令。

要获取可用交换机的名称,请运行以下命令。 确保 VM 交换机的 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

注意

必须根据自己的环境自定义本示例命令中显示的值。

步骤 3:配置部署

在 Windows Server 群集中的任意节点上运行以下命令。

要为 AKS 主机创建配置设置,请使用 Set-AksHciConfig 命令。 必须指定 imageDirworkingDircloudConfigLocation 参数。 如果要重置配置详细信息,请使用新参数重新运行该命令。

使用以下命令配置部署:

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

注意

必须根据自己的环境自定义本示例命令中显示的值。

步骤 4:登录 Azure 并配置注册设置

选项 1:如果你有“所有者”权限,请使用你的 Microsoft Entra 帐户

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

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

选项 2:使用 Azure 服务主体

如果无法访问自己是所有者的订阅,则可以使用服务主体将 AKS 主机注册到 Azure,以便计费。 有关如何使用服务主体的详细信息,请参阅使用服务主体在 Windows Server 上注册 AKS

步骤 5:开始新部署

在 Windows Server 群集的任意节点上运行以下命令。

在配置部署后,必须启动部署以安装 AKS 代理和服务以及 AKS 主机。 要开始部署,请运行以下命令:

提示

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

Install-AksHci

警告

在安装 AKS 主机时,会在注册时设置的资源组中创建 Kubernetes - Azure Arc 资源类型。 不要删除此资源,因为它代表你的 AKS 主机。 可以通过检查资源的分发字段是否有 aks_management 值来识别该资源。 如果删除此资源,则会导致部署超出策略范围。

步骤 6:创建 Kubernetes 群集

在安装 AKS 主机后,可以部署 Kubernetes 群集。 以管理员身份打开 PowerShell 并运行以下 New-AksHciCluster 命令。 此示例命令创建了一个新的 Kubernetes 群集,其中包含一个名为 linuxnodepool、节点数为 1 的 Linux 节点池。

有关节点池的更多信息,请参阅在 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

注意

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

扩展 Kubernetes 群集

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

要扩展控制平面节点,请运行以下命令:

Set-AksHciCluster -name mycluster -controlPlaneNodeCount 3

要扩展节点池中的工作器节点,请运行以下命令:

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

注意

在 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

注意

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

获取日志

要获取所有 pod 的日志,请运行 Get-AksHciLogs 命令。 此命令会在工作目录下创建一个名为 akshcilogs.zip 的压缩输出文件夹。 akshcilogs.zip 文件夹的完整路径是运行以下命令后的输出结果:

Get-AksHciLogs

在此快速入门中,你学习了如何使用 PowerShell 来设置 AKS 主机和创建 Kubernetes 群集。 你还学习了如何使用 PowerShell 来扩展 Kubernetes 群集,以及如何使用 kubectl 访问群集。

后续步骤