Who does what
| Job | NAP | Coral |
|---|---|---|
Pod CPU and memory requests | Reads them to choose machines. It doesn’t change them. | Rebalances each container’s CPU and memory requests to real use. |
Adding nodes | Launches machines chosen to fit pending pods. | Never adds nodes for demand. |
Removing spare nodes | Consolidates the pools it is set to consolidate. | Leaves those pools to NAP. In other pools, it empties spare nodes for your autoscaler to remove. |
Moving work to cheaper machines | Launches the new machines. | Plans the move, creates fixed-size NodePools for it, then drains and removes the old nodes. |
How they work together
When you switch on “Automatically optimize”, Coral rebalances each container’s requests to what it really uses.
With smaller requests, NAP can run fewer or smaller nodes in the pools it consolidates.
To move work to cheaper machines, you choose the nodes to replace, and Coral’s plan compares the cost before and after.
When a rebalance runs, Coral creates fixed-size NodePools, and NAP launches the cheaper machines in them.
Coral then drains and removes the old nodes one by one, and the new NodePools stay after the run.
What Coral leaves to NAP
- Adding nodes. Scale-up belongs to NAP, and in a surge it can pick bigger machines.
- Consolidating its pools. Pools NAP already consolidates are left to it.
- Launching machines. Coral never creates machines itself, even in a rebalance.
- Your NodePools and node classes. Coral changes only the NodePools it creates for rebalancing.
Set up
- A cluster with no autoscaler. Connect turns on NAP and adds Coral’s node class
zoorik-base. It lists every cloud change and asks before it makes one. - Azure CNI. NAP needs Azure CNI networking, not kubenet. On kubenet with no autoscaler, nothing adds nodes until you set one up.
- A cluster with the Cluster Autoscaler. Connect leaves the Cluster Autoscaler in place and doesn’t turn on NAP. It sets up only what every AKS connect sets up, listed on Coral for AKS.
- Workload identity. For the permission to remove nodes, connect turns on workload identity and the OIDC issuer if they are off. The OIDC issuer can’t be turned off again.
- Setting up NAP later. If you decline the cloud changes at connect,
zoorikctl cluster preparesets up NAP when you are ready.
Questions
Do I need Coral if I run NAP?
They do different jobs. NAP chooses and removes machines from pod requests, but doesn’t change the requests. Coral rebalances them to real use, so NAP can run fewer or smaller nodes.
Is NAP the same as Karpenter?
NAP runs Karpenter for you on AKS. Coral treats both the same way: it leaves them to consolidate their own pools, and either one launches the machines a rebalance needs.
My AKS cluster runs the Cluster Autoscaler. Will connect turn on NAP?
No. Connect turns on NAP only on a cluster with no autoscaler. Coral still rebalances requests and removes nodes, but moving work to cheaper machines needs NAP or Karpenter.
What does rebalancing need on AKS?
NAP or Karpenter, Node optimization switched on, and the permission to remove nodes. Coral picks the cheaper machines, and NAP launches them.
What stays if I disconnect?
The NAP that connect set up stays, and so do Coral’s zoorik-base node class and its rebalancing NodePools. Workload identity and the OIDC issuer stay too.
Read more
- Coral product guide: Rebalancing: what a rebalance needs, and how it runs.
- Coral FAQ: Do I need Coral with Karpenter or NAP?: the short answer, with more on autoscalers.
- HPA vs VPA vs Cluster Autoscaler: what each one scales: pods, requests and nodes, plus Karpenter.
- Coral works with Cluster Autoscaler: Coral empties spare nodes, and the Cluster Autoscaler removes them.
- Coral works with Karpenter: the same story on EKS, with Karpenter itself.