An Azure service that provides serverless Kubernetes, an integrated continuous integration and continuous delivery experience, and enterprise-grade security and governance.
Hello
Thank you for sharing the detailed logs and configuration — that really helped narrow this down.
From what you’ve described, the issue is happening because of a mismatch between your AKS cluster networking and what the self-hosted setup of karpenter-provider-azure expects during node provisioning.
Your cluster is currently configured with Azure CNI in standard (non-overlay) mode along with Azure network policy and Azure dataplane. However, as per the official karpenter-provider-azure documentation, the self-hosted installation expects the cluster to be created using Azure CNI in overlay mode along with the Cilium dataplane enabled.
This requirement is part of the documented cluster setup for self-hosted deployments in the installation guide
https://github.com/Azure/karpenter-provider-azure/blob/main/README.md
Because your cluster is not configured with overlay mode or Cilium dataplane, the nodes provisioned by self-hosted Karpenter are unable to initialize the CNI plugin correctly. This results in the error “NetworkPluginNotReady: cni plugin not initialized,” which indicates that the Kubernetes node failed to initialize the container networking stack.
This also explains why things work when you enable Node Auto Provisioning (NAP) in Azure Kubernetes Service. In that case, Azure handles the node provisioning and networking configuration internally, so everything is aligned automatically and the nodes come up in a Ready state.
To answer your question directly — yes, even though you are using Azure CNI, not enabling overlay mode and Cilium dataplane is very likely the reason for this behavior in the self-hosted scenario.
At this point, you have two practical options. The simplest is to continue using NAP since it is already working correctly in your environment. If you specifically want to use self-hosted Karpenter, then the cluster networking needs to be aligned to Azure CNI overlay with Cilium so that it matches the expected configuration.
You can refer to the following documentation for more details:
Overview of Azure CNI Overlay networking in Azure Kubernetes Service (AKS)
Configure Azure CNI Powered by Cilium in Azure Kubernetes Service (AKS)
Troubleshoot node auto-provisioning (NAP) in Azure Kubernetes Service (AKS)
Hope this helps! Please let me know if you have any queries.