本教程使用 Azure 门户部署 Azure Kubernetes 服务 (AKS) 群集。 部署 AKS 群集后,可以使用 Helm 图表在 Azure 容器实例上部署虚拟节点。
先决条件
本教程假定已安装以下工具:
- Azure CLI
- kubectl (版本 1.30+)
- Helm
- Git
登录到 Azure
登录到 Azure 门户 (https://portal.azure.cn)
如果没有 Azure 订阅,请在开始前创建一个试用版订阅。
为 AKS 群集创建虚拟网络
在 Azure 门户主页上,选择“创建资源”。
选择 “网络>虚拟网络”。
在 “基本信息 ”页上,选择订阅并输入以下值:
- 资源组:“新建”>
- 虚拟网络名称:
myvirtualnetwork - 地区:
China East 2
在 “IP 地址 ”页上,配置以下地址空间和子网:
- 10.0.0.0/16:
default子网,大小为 /24 - 10.1.0.0/16:
aks大小为/16的子网 - 10.2.0.0/16:
cg大小为/16的子网- 子网
cg必须具有到Microsoft.ContainerInstance/containerGroups的子网委派。 - 如果虚拟节点中运行的 Pod 需要出站网络, 则必须 设置 NAT 网关并将
cg子网配置为使用它。 请参阅 为容器组的出站流量配置 NAT 网关以获取静态 IP 地址 以了解此设置的说明。
- 子网
将其他所有设置保留为默认设置,然后选择“查看 + 创建”。
验证完成后,会显示虚拟网络设置的摘要。 选择“ 创建 ”以提交虚拟网络部署请求。
当部署启动时,会显示一个通知,指示正在进行部署。 部署虚拟网络时会显示另一条通知。
创建 AKS 群集
在 Azure 门户主页上,选择“创建资源”。
选择容器>Azure Kubernetes 服务(AKS)。
在 “基本信息 ”页上,选择用于创建虚拟网络的同一订阅,并输入以下值:
- 资源组:
virtualnodesresourcegroup - 群集预设配置:
Dev/Test - Kubernetes 群集名称:
virtualnodescluster - 地区:
China East 2 - 以任意版本开始的 Kubernetes 版本:
1.30.- 例如1.30.9 - 自动升级:
Enabled with patch
在“节点池”页上,为agentpool节点池选择任何具有至少 4 个 vCPU 和 16 GB RAM 的 VM SKU。 这些节点将用于托管虚拟节点基础结构。 请勿选择 Enable virtual nodes - 这指的是 AKS 的上一个 虚拟节点 产品/服务。
在 “网络 ”页上,输入以下值:
- 网络配置:
Azure CNI Node Subnet - 自带您的 Azure 虚拟网络:
Enabled - 虚拟网络:
myvirtualnetwork - 群集子网:
aks - Kubernetes 服务地址范围:
10.4.0.0/16 - Kubernetes DNS 服务 IP 地址:
10.4.0.10 - 网络策略:
Calico
将其他所有设置保留为默认设置,然后选择“查看 + 创建”。
验证完成后,会显示 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 容器组注入到在此资源组中创建的虚拟网络中。
使用 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
将第一个 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),我们有 最佳做法和建议。