Azure AKS虚拟节点池产生意外VM费用相关问题咨询
核心逻辑澄清
你提到的名称格式为aks-control-xxx-vmss的VMSS资源,本质是AKS集群默认创建的系统节点池资源,并非虚拟节点(基于ACI)的配套资源,其计费和虚拟节点的ACI计费本身就是完全独立的两类计费项:VMSS按实例运行时长全额计费,ACI按每个实例的实际CPU/内存使用时长单独计费。
你当前的计费感知问题核心是把系统节点池的VM费用误认为是虚拟节点的附加费用,AKS的托管控制平面本身不收费,你提到的B2s规格可查看到运行系统容器的节点,就是这个VMSS对应的系统worker节点。
问题逐个解答
1、是否可以不使用VMSS,直接运行Azure Container Instances?
可以,分两种场景:
- 无需Kubernetes编排能力的场景:直接单独创建ACI实例即可,全程不需要AKS集群,也不会产生任何VMSS相关费用,仅按ACI实例的实际使用量计费
- 需要保留AKS编排能力的场景:可创建无常规节点池的Serverless AKS集群,仅启用虚拟节点能力,所有工作负载都调度到ACI提供的虚拟节点上,集群不会创建任何VMSS资源,也不会产生相关费用
2、如果必须使用VMSS,是否有方法可以让该VM被集群识别,从而可在上面部署容器,充分利用该资源?
该VM对应的节点本身就已经被AKS集群纳管,默认仅运行系统组件是因为节点默认配置了CriticalAddonsOnly=true:NoSchedule污点,禁止普通用户工作负载调度,你可以通过两种方式利用该资源:
- 给需要调度到该节点的工作负载添加对应污点的容忍规则,示例配置参考:
tolerations: - key: "CriticalAddonsOnly" operator: "Equal" value: "true" effect: "NoSchedule"
- 直接修改系统节点池配置,允许用户工作负载调度,执行对应Azure CLI命令即可:
az aks nodepool update --cluster-name <你的集群名> --resource-group <你的资源组名> --name <系统节点池名> --mode User
修改后该节点池会转为用户节点池,可正常调度所有类型的工作负载。
3、是否是我操作过程中存在配置错误?
不属于操作配置错误,属于对AKS资源构成和计费逻辑的认知偏差:
- 只要你创建的是带常规节点池的AKS集群,无论是否启用虚拟节点,都会默认生成系统节点池VMSS并按运行时长收费
- 虚拟节点的ACI实例计费和常规节点池的VM计费互相独立,没有关联,不存在"ACI共享VM资源抵扣VM费用"的规则
成本优化建议
- 若长期不需要使用常规VM节点,可直接将现有集群迁移到无节点池的Serverless AKS,彻底消除VMSS相关费用
- 若保留现有VMSS节点,可将资源占用稳定、延迟敏感的工作负载调度到VM节点上,仅将突发、峰值的弹性工作负载调度到虚拟节点的ACI上,最大化资源利用率降低整体成本
- 核对账单时可在Azure成本管理中按资源类型筛选,拆分VMSS和ACI的费用明细,若确实存在虚拟节点额外生成VMSS费用的异常情况,可将成本明细截图附在微软工单中加快处理进度
内容的提问来源于stack exchange,提问作者Lenny D
相关产品推荐
相关产品推荐

