Hello Ben Ritchie,
Welcome to the Microsoft Q&A and thank you for posting your questions here.
I understand that you cannot create v7 VM's via NAP on AKS.
The problem is that NAP cannot create v7 VMs because the NodePool constraints are too restrictive and/or the SKU is unavailable, and NAP does not guarantee provisioning of a specific SKU. To fix the issue, follow the below steps in order:
Step 1:
Ensure your NodePool allows broad SKU families, NOT a single SKU.
requirements:
- key: "node.kubernetes.io/instance-type"
operator: In
values:
- Standard_D*
- Standard_E*
Because: https://blog.aks.azure.com
- NAP needs flexibility to choose available SKUs
- Over-restriction = failure
Step 2:
Do not use your yaml values to be strictily on Standard_Dv7. The correct approach is to allow multiple generations:
v5, v6, v7 families
Step 3: Run in bash command:
az vm list-skus --location <region> --size Standard_D --all -o table
To validate region and zone availability. Confirm that SKU available and Zone supported
Step 4:
Check for compatibility:
Step 5: Run the below bash command
kubectl get nodeclaims
kubectl describe nodeclaim <name>
To inspect NodeClaims and look for:
- "insufficient capacity"
- "no instance types match constraints"
Step 6:
Avoid bad config or over-constraining of resources that can be similar to the below:
cpu: "64"
memory: "256Gi"
instance-type: only v7
Relax requirements and allow multiple SKUs. From AKS engineering:
- Use broad SKU families and avoid strict constraints to allow NAP to handle capacity dynamically.
I hope this is helpful! Do not hesitate to let me know if you have any other questions or clarifications.
Please don't forget to close up the thread here by upvoting and accept it as an answer if it is helpful.