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

适用于:Azure 本地或 Windows Server Datacenter

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

注意

开始之前

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

请安装 AksHci PowerShell 模块

在 Azure 本地群集或 Windows Server 群集中的所有节点上执行以下步骤:

注意

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

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

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

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

  2. 通过在 Azure 本地或 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 中为 Arc 注册启用的 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:准备计算机进行部署

在每个物理节点上运行检查,以查看是否满足通过 Arc 启用的 AKS 安装的所有要求。 以管理员身份打开 PowerShell,并在 Azure 本地和 Windows Server 群集中的所有节点上运行以下 Initialize-AksHciNode 命令:

Initialize-AksHciNode

步骤 2:创建虚拟网络

在 Azure 本地群集和 Windows Server 群集中的任何一个节点上运行以下命令。

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

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:配置部署

在 Azure 本地群集和 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,以便使用服务主体进行计费。 有关如何使用服务主体的详细信息,请参阅 使用服务主体在 Azure 本地和 Windows Server 上注册 AKS。

步骤 5:启动新部署

在 Azure 本地或 Windows Server 群集中的任何一个节点上运行以下命令。

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

提示

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

Install-AksHci

警告

在安装 AKS 主机期间, 会在注册期间设置的资源组中创建 Kubernetes - Azure Arc 资源类型。 请勿删除此资源,因为它表示 AKS 主机。 可以通过查看资源的分布字段的值是否为 aks_management 来识别该资源。 如果删除此资源,则会导致策略外部署。

步骤 6:创建 Kubernetes 群集

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

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

注意

在 Azure 本地和 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

后续步骤