教程:在 Azure Stack HCI 和 Windows Server 上的 Azure Kubernetes 服务中部署工作负载群集

Kubernetes 为容器化应用程序提供一个分布式平台。 在本教程中的第三部分(共七部分)中,会在 Azure Stack HCI 和 Windows Server 上的 AKS 中部署一个 Azure Stack HCI 和 Windows Server 上的 Azure Kubernetes 服务 (AKS) 群集。 将了解如何执行以下操作:

  • 在 Azure Stack HCI 上部署 AKS 群集
  • 安装 Kubernetes CLI (kubectl)
  • 配置 kubectl,以便连接到工作负载群集

在后面的教程中,Azure 投票应用程序将部署到群集,并进行缩放和更新。

开始之前

在以前的教程中,已创建容器映像并上传到 Azure 容器注册表实例。 如果尚未完成这些步骤,请先阅读教程 1 - 创建容器映像

本教程使用 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 Kubernetes 服务主机

首先,必须配置你的注册设置。

Set-AksHciRegistration -subscription mysubscription -resourceGroupName myresourcegroup

必须根据你的 Azure 订阅和资源组名称自定义这些值。

然后,运行以下命令以确保满足每个物理节点上的所有要求,以便安装 Azure Stack HCI 上的 Azure Kubernetes 服务。

Initialize-AksHciNode

接下来,我们将创建一个虚拟网络。 你需要获取可用外部交换机的名称:

Get-VMSwitch

示例输出:

Name        SwitchType    NetAdapterInterfaceDescription
----        ----------    ------------------------------
extSwitch   External      Mellanox ConnectX-3 Pro Ethernet Adapter

运行以下命令,创建具有静态 IP 的虚拟网络。

$vnet = New-AksHciNetworkSetting -name myvnet -vSwitchName "extSwitch" -macPoolName myMacPool -k8sNodeIpPoolStart "172.16.10.0" -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

然后,使用以下命令配置你的部署。

Set-AksHciConfig -imageDir c:\clusterstorage\volume1\Images -cloudConfigLocation c:\clusterstorage\volume1\Config -vnet $vnet -cloudservicecidr "172.16.10.10/16" 

现在,你已准备好在 Azure Stack HCI 和 Windows Server 主机上安装 AKS。

Install-AksHCi

创建 Kubernetes 群集

使用命令 New-AksHciCluster 创建 Kubernetes 群集。 以下示例创建名为 mycluster 的群集,其中有一个名为 linuxnodepool 的 Linux 节点池,节点数为 1 。

New-AksHciCluster -name mycluster -nodePoolName linuxnodepool -nodeCount 1

若要验证部署是否成功,请运行以下命令。

Get-AksHcicluster -name mycluster

输出:

ProvisioningState     : provisioned
KubernetesVersion     : v1.20.7
NodePools             : linuxnodepool
WindowsNodeCount      : 0
LinuxNodeCount        : 0
ControlPlaneNodeCount : 1
Name                  : mycluster

注意

如果使用 New-AksHciCluster 中的新参数集部署群集,然后运行 Get-AksHciCluster 来获取群集信息,则输出中的字段 WindowsNodeCountLinuxNodeCount 将返回 0。 要获取每个节点池中的准确节点数,请使用带有指定群集名称的命令 Get-AksHciNodePool

要获取群集中的节点池列表,请运行以下 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

安装 Kubernetes CLI

若要从本地计算机连接到 Kubernetes 群集,请使用 kubectl(Kubernetes 命令行客户端)。

使用 kubectl 连接到群集

若要配置 kubectl 以连接到你的 Kubernetes 群集,请使用 Get-AksHciCredential 命令。 以下示例获取名为 mycluster 的群集的凭据。

Get-AksHciCredential -name mycluster

若要验证与群集的连接,请运行 kubectl get nodes 命令以返回群集节点列表:

kubectl get nodes

输出:

NAME              STATUS   ROLES                  AGE     VERSION
moc-lbs6got5dqo   Ready    <none>                 6d20h   v1.20.7
moc-lel7tzxdt30   Ready    control-plane,master   6d20h   v1.20.7

后续步骤

本教程在 AKS 中部署了一个 Kubernetes 群集并将 kubectl 配置为连接到该群集。 你已了解如何执行以下操作:

  • 在 Azure Stack HCI 上部署 AKS 群集
  • 安装 Kubernetes CLI (kubectl)
  • 配置 kubectl,以便连接到 AKS 群集

请继续学习下一教程,了解如何将应用程序部署到群集。