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. - For pools with taints, see Using Taints to Protect Nodes for how tolerations are handled (GPU taints are auto-tolerated via
scale.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