在 Azure 本地和 Windows Server 上设置Azure Kubernetes 服务主机,并使用 PowerShell 部署工作负荷群集
适用于:Azure 本地或 Windows Server Datacenter
本快速入门将指导你设置 Azure Kubernetes 服务 (AKS) 主机。 使用 PowerShell 在 Azure 本地和 Windows Server 上创建 Kubernetes 群集。 若要改用 Windows Admin Center,请参阅使用 Windows Admin Center 进行设置。
注意
- 如果有预安排的群集服务对象和 DNS 记录,请参阅使用 PowerShell 部署具有预安排群集服务对象和 DNS 记录的 AKS 主机。
- 如果你拥有代理服务器,请参见使用 PowerShell 和代理服务器设置 AKS 主机,并部署工作负载群集。
- 不支持在设置 Arc VM 后在 Azure 本地安装 AKS。 有关详细信息,请参阅 Arc VM 的已知问题。 如果要在 Azure 本地上安装 AKS,则必须卸载 Arc 资源桥,然后在 Azure 本地安装 AKS。 清理并安装 AKS 后,可以再次部署新的 Arc 资源桥,但不会记住之前创建的 VM 实体。
开始之前
请安装 AksHci PowerShell 模块
在 Azure 本地群集或 Windows Server 群集中的所有节点上执行以下步骤:
注意
如果使用远程 PowerShell,则必须使用 CredSSP。
关闭所有打开的 PowerShell 窗口,以管理员身份打开新的 PowerShell 会话,并在 Azure 本地或 Windows Server 群集中的所有节点上运行以下命令:
Install-PackageProvider -Name NuGet -Force Install-Module -Name PowershellGet -Force -Confirm:$false
必须再次关闭所有现有的 PowerShell 窗口,确保已加载的模块已刷新。 在关闭所有打开的 PowerShell 窗口之前,请不要继续执行下一步。
通过在 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 命令。 必须指定 imageDir
、workingDir
和 cloudConfigLocation
参数。 如果要重置配置详细信息,请使用新参数再次运行该命令。
使用以下命令配置部署:
$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
。