additional_karpenter_nodepools_config
Description
The additional_karpenter_nodepools_config parameter creates custom Karpenter NodePools beyond the built-in workload and build pools. Each entry in the JSON array produces its own NodePool + EC2NodeClass pair with the same infrastructure settings (subnet discovery, security groups, IAM role) as the workload pool.
Use this for dedicated GPU pools, tenant isolation, specialized instance requirements, or batch processing pools.
Default Value
The default value is empty (no custom NodePools).
Setting the Parameter
Using a JSON string:
$ convox rack params set additional_karpenter_nodepools_config='[{"name":"gpu","instance_families":"g5,g6","capacity_types":"on-demand","cpu_limit":64,"memory_limit_gb":256,"taints":"nvidia.com/gpu=true:NoSchedule","disk":200}]' -r rackName
Setting parameters... OK
Target Services to the GPU pool using nodeSelectorLabels and scale.gpu in convox.yml:
services:
ml-worker:
build: .
scale:
gpu:
count: 1
vendor: nvidia
nodeSelectorLabels:
convox.io/nodepool: gpu
Using a JSON file:
$ convox rack params set additional_karpenter_nodepools_config=/path/to/nodepools.json -r rackName
Setting parameters... OK
Additional Information
- Input formats: Raw JSON string, base64-encoded JSON, or a
.jsonfile path. - Every custom pool automatically gets a
convox.io/nodepool={name}label. Target Services to a custom pool usingnodeSelectorLabelsinconvox.yml. - Pool name validation: Lowercase alphanumeric with dashes, max 63 chars. Reserved names:
workload,build,default,system. Duplicate names are rejected. - Pool isolation: Set
"dedicated": trueon a pool entry to automatically add adedicated-node={name}:NoScheduletaint. Convox auto-injects the matching toleration for Services targeting the pool vianodeSelectorLabels. This is the simplest way to isolate a pool without manual taint configuration. - For pools with custom taints beyond
dedicated, see Using Taints to Protect Nodes for how tolerations are handled (GPU taints are auto-tolerated viascale.gpu;convox.ymldoes not have atolerationsfield). - See the Karpenter feature page for the full per-pool field reference and examples.
See Also
- Karpenter for the full Karpenter configuration reference
- karpenter_config for overriding the workload NodePool
- additional_node_groups_config for custom EKS managed node groups
- Workload Placement for node targeting with
nodeSelectorLabels