KubeadaptDocsBack to site
Sign inStart free
DocsAPI ReferenceCLI
  • Introduction
  • Getting Started
  • Capabilities
    • Connect a cluster
      • AWS
      • GCP
      • Azure
      • On-premises
    • Right-size your workloads
    • Monitor GPU workloads
    • Trace cost to a team
    • Plan a safe spot migration
    • Clean up abandoned workloads
    • Invite teammates and set roles
    • Configure SAML SSO
    • Mint an API key
    • Rotate an API key
Docs homev1How To GuidesIntegrationsAzure

How-to Guides

Azure cloud pricing

How Kubeadapt prices Azure clusters. Pay-as-you-go and Spot VMs work without setup; Reservation and Savings Plan attribution is on the roadmap.


You installed the agent on an AKS cluster and the dashboard fills in node cost from the first snapshot. For Azure today that's the entire integration — there's no Azure-side connection to make. Kubeadapt reads the public Azure Retail Prices API, identifies Spot VMs from cluster node labels, and attributes cost without any credentials in your Azure tenant.

What isn't reflected yet: Reserved VM Instances and Azure Savings Plan discounts. The cluster shows pay-as-you-go prices even if your finance team has committed to a 1- or 3-year reservation on the underlying VM families.


What works today

Pricing typeSetup requiredHow it worksStatus
Pay-as-you-go (on-demand)NoneFetched from the Azure Retail Prices API on a scheduleSupported
Spot VMsNoneReal-time spot prices per region and VM sizeSupported
Reserved VM Instances——Planned
Azure Savings Plans——Planned

How it works

Kubeadapt fetches public pricing from the Azure Retail Prices API on a regular schedule and caches it. No Azure AD app registration, no service principal, no subscription read-role required — public pricing is read on Kubeadapt's side, not from your tenant.

What Kubeadapt reads from inside the cluster:

  • VM size — from node.kubernetes.io/instance-type (e.g. Standard_D4s_v5)
  • Region — from topology.kubernetes.io/region (e.g. eastus)
  • Capacity type — Spot vs. regular inferred from the kubernetes.azure.com/scalesetpriority=spot label that AKS applies to spot node pools

Standard AKS node pools set these labels automatically. For self-managed Kubernetes on Azure VMs, ensure your kubelet or cluster autoscaler applies the well-known topology labels.


When you'd want a cloud-account integration

You wouldn't, today. Unlike AWS, where the Cost Explorer API exposes Reservation and Savings Plan utilization that Kubeadapt can pull, Azure Reservation attribution requires reading Cost Management exports and reconciling reservation coverage against running VMs. That work is on the roadmap; track it on the feedback portal.

In the meantime, if you have material RIs or Savings Plans in place, your real Azure invoice will be lower than what Kubeadapt's Cost Explorer projects. Treat Kubeadapt numbers as pay-as-you-go-equivalent until commitment attribution ships.


Troubleshooting

Spot nodes show pay-as-you-go prices. Check the Spot label:

bash
kubectl get nodes -L kubernetes.azure.com/scalesetpriority

If the column is empty on nodes that you know live in a Spot scale set, the AKS node pool wasn't created with --priority Spot, or the underlying VMs were provisioned outside AKS. Recreate the node pool with the Spot priority, or set the label manually on legacy nodes.

Some nodes show $0 cost. The VM size isn't matching anything in the retail price catalog. Two common cases:

  • The VM size string in instance-type has a casing or suffix mismatch (e.g. standard_d4s_v5 rather than Standard_D4s_v5). Some clusters set lowercase labels; the catalog uses canonical Azure naming. Re-label or upgrade kubelet.
  • New VM series that haven't propagated to the catalog yet — wait for the next pricing refresh, then re-check. If it persists for more than a day, contact support with the exact instance-type value.

Cluster shows region as "unknown". The topology.kubernetes.io/region label is missing. AKS sets this automatically; if it's missing, the cluster was likely set up before well-known labels became standard, or kubelet was started without --cloud-provider=azure. Re-label nodes or upgrade the node pool.


Next steps

  • Connect a cluster — the index for all four providers
  • AWS integration — the contrast case, where commitment attribution does ship today
  • Configuration overview — the Helm chart and agent values

Related

  • Connect a cluster
  • AWS Integration
  • Configuration Overview
PreviousGCP cloud pricingHow-to GuidesNextOn-premises pricingHow-to Guides

On this page

  • What works today
  • How it works
  • When you'd want a cloud-account integration
  • Troubleshooting
  • Next steps
Edit this page
Kubeadapt

Kubernetes FinOps platform. Cost visibility, rightsizing, and capacity planning that pays for itself in 30 days.

Product

  • Cost Monitoring
  • Cost Attribution
  • Workload Rightsizing
  • Recommendations
  • Smart Alerting
  • Best Practices
  • Network Cross-AZ

Resources

  • Documentation
  • Status Page
  • Feature Requests

Company

  • About Us
  • Security
  • Careers
  • Contact

© 2026 Kubeadapt. All rights reserved.

PrivacyTermsSecurity