教程:在 AKS 混合上部署工作负载群集
适用于:Azure Stack HCI 上的 AKS、Windows Server 上的 AKS
Kubernetes 为容器化应用程序提供一个分布式平台。
在本教程的第 3 部分(共 7 部分)中,Azure Kubernetes 服务 (AKS) 群集部署在 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
必须再次关闭所有现有的 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 Kubernetes 服务主机
首先,必须配置你的注册设置。
Set-AksHciRegistration -subscription mysubscription -resourceGroupName myresourcegroup
必须根据你的 Azure 订阅和资源组名称自定义这些值。
然后,运行以下命令,确保满足每个物理节点上的所有要求,以安装 Azure Stack HCI 上的 AKS。
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"
现在,你已准备好安装 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
以获取群集信息,则输出中的 字段 WindowsNodeCount
和 LinuxNodeCount
将返回 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 群集
请继续学习下一教程,了解如何将应用程序部署到群集。