An Azure service that provides serverless Kubernetes, an integrated continuous integration and continuous delivery experience, and enterprise-grade security and governance.
Hello Ompal Singh
Your understanding of the limitations is correct for the AKS-managed Cluster Autoscaler, but there is another supported option worth considering.
Microsoft currently documents:
-
nodeTaints- persistent AKS-managed taints. They are not suitable for Istio to remove dynamically. -
nodeInitializationTaints- designed for exactly this purpose, but still marked Preview. - Managed Cluster Autoscaler does not expose arbitrary
--startup-taintor kubelet--register-with-taintsconfiguration through the supported AKS settings.
Microsoft's AKS initialization taints documentation and AKS GitHub feature request #3464 confirm the preview status.
However, AKS Node Auto-Provisioning (NAP), which uses managed Karpenter, supports startupTaints. NAP is generally available and is a supported alternative to the traditional Cluster Autoscaler.
Microsoft explicitly documents that NAP applies startup taints to provisioned nodes without requiring application pods to tolerate them.
For example, add the following to your NAP NodePool under spec.template.spec:
startupTaints:
- key: cni.istio.io/not-ready
effect: NoSchedule
This provides the intended behavior:
Karpenter creates the node with the startup taint.
Regular workloads cannot schedule while the taint is present.
Istio's untaint controller removes it when the Istio CNI agent reports ready.
Karpenter does not treat the startup taint as a permanent scheduling restriction.
Microsoft: Configure NAP NodePools and Karpenter startup taints.
If migration to NAP is acceptable, test this approach with scale-from-zero, autoscaling, and node replacement. Ensure Istio's CNI components tolerate the startup taint and that all workload-eligible NodePools enforce the same protection.
If you must retain the traditional AKS-managed Cluster Autoscaler one additional supportability distinction: Microsoft's AKS Istio add-on documentation still lists ambient mode as unsupported by the managed Istio add-on. The NAP solution therefore does not imply Microsoft support for the complete self-managed Istio ambient configuration.
For your security-sensitive scenario, I would favor GA NAP with startupTaints, subject to validating the complete Istio readiness and traffic-enforcement behavior in your environment.