在现有VNet内创建AKS群集资源

时间:2023-02-06 18:01:21

近几年,云原生的概念火的一塌糊涂,很多企业也都在尝试以云原生的方式来构建他们的应用。我们遇到比较多的就是将应用容器化部署在托管的Azure AKS群集中。一般情况下,客户在部署AKS群集时,不希望对现有的网络架构做出调整。所以很多没有硬性业务要求的客户选择使用Kubenet的网络架构进行群集部署。

默认情况下,我们使用kubenet网络架构部署AKS群集时,系统会自动帮我们创建一个虚拟网络用于放置群集的工作节点,这种情况下如果想将现有业务系统网络和AKS群集网络打通,就需要通过配置VNet Peering等方式来实现。虽然很简单,但是依旧会有客户提出能否把Work Node部署在现有的Subnet,答案肯定是可以的。若想将AKS群集部署到现有的虚拟网络,我们只需要配置AKS SP对目标虚拟网络的访问权限,然后在部署群集时指定网络即可。如此以来就可以省去打通网络的步骤。下面我们就一起来看下如何进行配置

创建AKS群集使用的SP资源:

az ad sp create-for-rbac -n GavinAKS --skip-assignment

在现有VNet内创建AKS群集资源

配置SP对目标虚拟网络的访问权限:

az role assignment create --assignee ed2ec311-d474-4e24-a096-9fb37f89ba66 --scope /subscriptions/d5560b5a-3bc6-4b29-ae3f-0e081e5aed2c/resourceGroups/GavinWu/providers/Microsoft.Network/virtualNetworks/Gavin_LabVNet --role "Network Contributor"

在现有VNet内创建AKS群集资源

添加aks-preview的cli扩展,添加以后可以指定AKS群集放置的资源组:

az extension add --name aks-preview

在现有VNet内创建AKS群集资源

配置好以后,运行如下命令创建AKS群集,这样就可以将群集创建在已有的虚拟网络内了:

az aks create -g GavinWu --name LabAKS --node-vm-size Standard_DS2_v2 --node-count 1 --nodepool-name lablinpool01 --network-plugin kubenet --vnet-subnet-id "/subscriptions/d5560b5a-3bc6-4b29-ae3f-0e081e5aed2c/resourceGroups/GavinWu/providers/Microsoft.Network/virtualNetworks/Gavin_LabVNet/subnets/Sub_AKS" --service-principal "ed2ec311-d474-4e24-a096-9fb37f89ba66" --client-secret "TyW.VUbO6HGBYH8hxwPtt4N-lkg3NMmN8z" --node-resource-group GavinLabPool  --generate-ssh-keys

在现有VNet内创建AKS群集资源