Who does what
| Job | Karpenter | Coral |
|---|---|---|
Pod CPU and memory requests | Uses them to pick machines, but doesn’t change them. | Rebalances them to real use, once you switch on “Automatically optimize”. |
Adding nodes | Launches machines that fit the pods’ requests. | Never adds nodes for demand. |
Removing spare nodes | Consolidates the pools it is set to consolidate. | Leaves those pools to Karpenter. 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. |
Keeping a marked pod or node | Honours karpenter.sh/do-not-disrupt. | Honours it on pods and nodes: a marked pod is never moved and keeps its node, and a marked node is kept. |
How they work together
Coral rebalances each pod’s CPU and memory requests to real use, once you switch on “Automatically optimize”.
With smaller requests, Karpenter can run fewer or smaller nodes in the pools it consolidates.
In other pools, Coral empties spare nodes one at a time, and your autoscaler removes them.
When a rebalance moves work to cheaper machines, Coral creates fixed-size NodePools, and Karpenter launches the new 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 Karpenter
- Your NodePools and node classes. Coral changes only the NodePools it creates for rebalancing.
- Adding capacity. Scale-up stays with Karpenter. In a surge, it can pick bigger machines again.
- Consolidation. Pools that Karpenter already consolidates are left to it.
- When a spare node goes. Outside a rebalance, Coral hands an empty node to Karpenter, and Karpenter’s own settings decide when it goes.
Set up
- Karpenter already runs on the cluster. Connect leaves it as it is. It sets up only what every EKS connect sets up, listed on Coral for EKS.
- The cluster has no node autoscaler. Connect sets up Karpenter with your approval, or you run
zoorikctl cluster preparelater. It lists every cloud change and asks before it makes one, and--dry-runchanges nothing. - What it sets up. In AWS: IAM roles, an SQS queue with EventBridge rules, discovery tags, an access entry and Pod Identity. In the cluster: Karpenter, its node classes and a default NodePool.
- What you need for that. Helm, and the AWS rights for SQS, EventBridge and cluster updates, besides the IAM rights every EKS connect needs.
- Clusters that use only aws-auth. If connect or
zoorikctl cluster prepareinstalls Karpenter, it switches authentication to API_AND_CONFIG_MAP, and that can’t be undone.
Questions
Do I need Coral if I already run Karpenter?
They do different jobs. Karpenter chooses and removes machines from pod requests, but doesn’t change the requests. Coral rebalances requests to real use, so the same Karpenter can run fewer or smaller nodes.
What does a rebalance need on EKS?
Karpenter, Node optimization switched on, and the permission to remove nodes, which connect asks for. With only the Cluster Autoscaler, Coral removes nodes but never changes their size.
What happens in a surge after Coral moves work to smaller machines?
Coral never adds capacity for demand. Your HPA adds pods, the pending pods trigger Karpenter, and Karpenter can pick bigger machines.
Does Coral respect karpenter.sh/do-not-disrupt?
karpenter.sh/do-not-disrupt?Yes. A pod with it is never moved and its node is kept, and a node with it is kept. The safe-to-evict and do-not-disrupt annotations explained shows which tool reads which marker.
What stays if I disconnect?
Karpenter stays, if connect set it up. So do Coral’s zoorik-base node class and its rebalancing NodePools.
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.
- KEDA vs Karpenter: pods, nodes and the requests in between: what each one scales, and where Coral fits.
- Coral works with AKS node auto provisioning: the same story on AKS, where NAP runs Karpenter for you.
- Coral works with KEDA: KEDA sets the pod count, and Coral each pod’s size.