在 Azure Stack HCI 和 Windows Server 上设置Azure Kubernetes 服务主机,并使用 PowerShell 部署工作负荷群集
适用于:Azure Stack HCI 或 Windows Server Datacenter
本快速入门指导你设置 Azure Kubernetes 服务 (AKS) 主机。 使用 PowerShell 在 Azure Stack HCI 和 Windows Server 上创建 Kubernetes 群集。 若要改用 Windows Admin Center,请参阅使用 Windows Admin Center 进行设置。
注意
- 如果有预安排的群集服务对象和 DNS 记录,请参阅使用 PowerShell 部署具有预安排群集服务对象和 DNS 记录的 AKS 主机。
- 如果你拥有代理服务器,请参见使用 PowerShell 和代理服务器设置 AKS 主机,并部署工作负载群集。
- 不支持在设置 Arc VM 后在 Azure Stack HCI 上安装 AKS。 有关详细信息,请参阅 Arc VM 的已知问题。 如果要在 Azure Stack HCI 上安装 AKS,则必须卸载 Arc 资源网桥,然后在 Azure Stack HCI 上安装 AKS。 清理并安装 AKS 后,可以再次部署新的 Arc 资源网桥,但它不会记住之前创建的 VM 实体。
开始之前
请安装 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
必须再次关闭所有现有的 PowerShell 窗口,确保已加载的模块已刷新。 在关闭所有打开的 PowerShell 窗口之前,不要继续执行下一步。
通过在 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 中为 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 Stack HCI 和 Windows Server 群集中的所有节点上运行以下 Initialize-AksHciNode 命令:
Initialize-AksHciNode
步骤 2:创建虚拟网络
在 Azure Stack HCI 和 Windows Server 群集中的任何一个节点上运行以下命令。
要获取可用交换机的名称,请运行以下命令。 确保 SwitchType
VM 交换机的 为“External”:
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 Stack HCI 和 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 Stack HCI 上的 AKS 和 Windows Server。
步骤 5:启动新部署
在 Azure Stack HCI 或 Windows Server 群集中的任何一个节点上运行以下命令。
配置部署后,必须启动部署才能安装 AKS 代理/服务和 AKS 主机。 若要开始部署,请运行以下命令:
提示
若要在安装过程中查看其他状态详细信息,请在继续之前设置 $VerbosePreference = "Continue"
。
Install-AksHci
警告
在安装 AKS 主机期间,会在注册期间设置的资源组中创建 Kubernetes - Azure Arc 资源类型。 请勿删除此资源,因为它表示 AKS 主机。 可以通过查看资源的分布字段的值是否为 aks_management
来识别该资源。 如果删除此资源,则会导致部署策略外。
步骤 6:创建 Kubernetes 群集
安装 AKS 主机后,可以部署 Kubernetes 群集。 以管理员身份打开 PowerShell 并运行以下 New-AksHciCluster 命令。 此示例命令创建一个新的 Kubernetes 群集,其中包含一个名为 linuxnodepool
的 Linux 节点池,节点计数为 1。
有关节点池的详细信息,请参阅 在 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 Stack HCI 和 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
访问群集。
后续步骤
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈