教程:在 Azure Kubernetes 服务群集中的 Azure 容器实例上部署虚拟节点

本教程使用 Azure 门户部署 Azure Kubernetes 服务 (AKS) 群集。 部署 AKS 群集后,可以使用 Helm 图表在 Azure 容器实例上部署虚拟节点。

先决条件

本教程假定已安装以下工具:

  • Azure CLI
  • kubectl (版本 1.30+)
  • Helm
  • Git

登录到 Azure

登录到 Azure 门户 (https://portal.azure.cn)

如果没有 Azure 订阅,请在开始前创建一个试用版订阅

为 AKS 群集创建虚拟网络

在 Azure 门户主页上,选择“创建资源”。

显示如何在 Azure 门户中开始创建新虚拟网络的屏幕截图。

选择 “网络>虚拟网络”。

显示如何在 Azure 门户中选择要创建的新虚拟网络的屏幕截图。

“基本信息 ”页上,选择订阅并输入以下值:

  • 资源组:“新建”>
  • 虚拟网络名称:myvirtualnetwork
  • 地区: China East 2

显示如何在 Azure 门户中配置虚拟网络创建的“基本信息”页的屏幕截图。

“IP 地址 ”页上,配置以下地址空间和子网:

  • 10.0.0.0/16:default 子网,大小为 /24
  • 10.1.0.0/16: aks 大小为/16的子网
  • 10.2.0.0/16: cg 大小为/16的子网

显示如何在 Azure 门户中配置虚拟网络创建的 IP 地址页的屏幕截图。

将其他所有设置保留为默认设置,然后选择“查看 + 创建”。

验证完成后,会显示虚拟网络设置的摘要。 选择“ 创建 ”以提交虚拟网络部署请求。

当部署启动时,会显示一个通知,指示正在进行部署。 部署虚拟网络时会显示另一条通知。

创建 AKS 群集

在 Azure 门户主页上,选择“创建资源”。

显示如何在 Azure 门户中开始创建新虚拟网络的屏幕截图。

选择容器>Azure Kubernetes 服务(AKS)。

显示如何在 Azure 门户中选择要创建的新 AKS 群集的屏幕截图。

“基本信息 ”页上,选择用于创建虚拟网络的同一订阅,并输入以下值:

  • 资源组:virtualnodesresourcegroup
  • 群集预设配置: Dev/Test
  • Kubernetes 群集名称: virtualnodescluster
  • 地区: China East 2
  • 以任意版本开始的 Kubernetes 版本:1.30. - 例如 1.30.9
  • 自动升级: Enabled with patch

显示如何在 Azure 门户中为 AKS 群集创建配置“基本信息”页的屏幕截图。

“节点池”页上,为agentpool节点池选择任何具有至少 4 个 vCPU 和 16 GB RAM 的 VM SKU。 这些节点将用于托管虚拟节点基础结构。 请勿选择 Enable virtual nodes - 这指的是 AKS 的上一个 虚拟节点 产品/服务。

显示如何在 Azure 门户中为 AKS 群集创建配置节点池页的屏幕截图。

“网络 ”页上,输入以下值:

  • 网络配置: Azure CNI Node Subnet
  • 自带您的 Azure 虚拟网络:Enabled
  • 虚拟网络:myvirtualnetwork
  • 群集子网: aks
  • Kubernetes 服务地址范围: 10.4.0.0/16
  • Kubernetes DNS 服务 IP 地址: 10.4.0.10
  • 网络策略: Calico

显示如何在 Azure 门户中为 AKS 群集创建配置网络页的屏幕截图。

将其他所有设置保留为默认设置,然后选择“查看 + 创建”。

验证完成后,会显示 AKS 群集设置的摘要。 选择“ 创建 ”以提交 AKS 群集部署请求。

当部署启动时,会显示一个通知,指示正在进行部署。 部署 AKS 群集时会显示另一条通知。

向 AKS 群集托管标识分配权限

部署 AKS 群集时,AKS 在同一订阅中创建 节点资源组 来托管群集基础结构。 默认情况下,此资源组的名称如下 MC_<resource group>_<AKS cluster>_<region>。 在本教程中,节点资源组应具有名称 MC_virtualnodesresourcegroup_virtualnodescluster_chinaeast2

在节点资源组中创建的资源之一是托管标识,名称为 virtualnodescluster_agentpool。 导航至此托管标识并选择 Azure 角色分配。 然后添加以下两个角色分配:

  • 范围:Resource group
  • 订阅:<your subscription name>
  • 资源组:MC_virtualnodesresourcegroup_virtualnodescluster_chinaeast2
  • 作用: Contributor

此角色分配允许在节点资源组中创建 ACI 容器组。

  • 范围:Resource group
  • 订阅:<your subscription name>
  • 资源组:virtualnodesresourcegroup
  • 作用: Contributor

此角色分配允许将 ACI 容器组注入到在此资源组中创建的虚拟网络中。

显示添加到 AKS 托管标识的角色分配的屏幕截图。

使用 Helm 图表在 Azure 容器实例上安装虚拟节点

使用 Azure CLI 获取所创建的 AKS 群集的配置和凭据。 这将为 AKS 群集配置 kubectl。

az login

az account set --subscription <your subscription ID>

az aks get-credentials --name virtualnodescluster --resource-group virtualnodesresourcegroup

此外,我们将在订阅上注册 ACI 资源提供程序,以便可以部署容器组。

az provider register -n Microsoft.ContainerInstance

克隆 virtualnodesOnAzureContainerInstances GitHub 存储库。 用于在 Azure 容器实例上安装虚拟节点的 Helm 图表位于 Helm/virtualnode 该文件夹中。

请使用以下命令安装 Helm 图表:

helm install virtualnode <cloned repository location>\Helm\virtualnode

在一分钟内,将在 AKS 群集中注册新的虚拟节点并处于“就绪”状态。 可以使用 kubectl 检查 AKS 群集节点的状态。

kubectl get nodes

显示 kubectl get nodes 命令的输出的屏幕截图,其中虚拟节点处于“就绪”状态。

将第一个 Pod 部署到虚拟节点

可以像任何其他 Kubernetes 节点一样与虚拟节点进行交互。 例如,下面的示例 YAML 将 Pod 部署到 AKS 群集中的虚拟节点上 - 请注意使用节点选择器和容忍来适当地放置 Pod。 可以使用 kubectl apply 部署 YAML

apiVersion: v1
kind: Pod
metadata:
  annotations:    
  name: demo-pod
spec:
  containers:
  - command:
    - /bin/bash
    - -c
    - 'counter=1; while true; do echo "Hello, World! Counter: $counter"; counter=$((counter+1)); sleep 1; done'
    image: mcr.microsoft.com/azure-cli
    name: hello-world-counter
    resources:
      limits:
        cpu: 2250m
        memory: 2256Mi
      requests:
        cpu: 100m
        memory: 128Mi
  nodeSelector:
    virtualization: virtualnode2
  tolerations:
  - effect: NoSchedule
    key: virtual-kubelet.io/provider
    operator: Exists

部署 Pod 后,可以像“普通”Kubernetes Pod 一样与它进行交互。

例如,若要查看 Pod 状态和事件(可用于查找错误!):

kubectl describe pods demo-pod

若要查看 Pod 的日志,请执行以下步骤:

kubectl logs demo-pod

若要获取 Pod 的 shell,请执行以下操作:

kubectl exec demo-pod -it -- /bin/bash

后续步骤

在本教程中,你在 Azure 门户中创建了 AKS 群集,使用 Helm 图表在 Azure 容器实例上部署了虚拟节点,并将 Pod 部署到虚拟节点上。 现在,你已基本熟悉如何在虚拟节点上运行 Kubernetes Pod,并且可以立即利用这些 Pod 上的大多数 Kubernetes 功能和构造!

如果想要利用 Pod 的专用虚拟节点功能或行为,请参阅 Pod 自定义

如果要自定义虚拟节点安装,请参阅“节点自定义”。

如果打算在虚拟节点上部署大规模工作负荷(每分钟数千个 Pod),我们有 最佳做法和建议