快速入门:使用 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 进行设置。
注意
- 如果有预安排的群集服务对象和 DNS 记录,请参阅使用 PowerShell 部署具有预安排群集服务对象和 DNS 记录的 AKS 主机。
- 如果你拥有代理服务器,请参见使用 PowerShell 和代理服务器设置 AKS 主机,并部署工作负载群集。
准备阶段
请安装 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 命令。 必须指定 imageDir
、workingDir
和 cloudConfigLocation
参数。 如果要重置配置详细信息,请使用新参数再次运行该命令。
使用以下命令配置部署。
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
访问群集。