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 .json file path.
  • Every custom pool automatically gets a convox.io/nodepool={name} label. Target Services to a custom pool using nodeSelectorLabels in convox.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.yml does not have a tolerations field).
  • See the Karpenter feature page for the full per-pool field reference and examples.

See Also