Skip to content
OpenRelay is in early access, and the /v1 API is stable. New capabilities ship in the changelog.
API ReferenceComputeKubernetes

Scale a node pool

Sets the pool's node count and answers 202 with the pool. Scaling down removes nodes and whatever runs on them, draining each one first. A cluster that is creating, deleting or failed answers 409 INVALID_CLUSTER_STATE; a failed cluster has no control plane to join. A legacy API key needs clusters:write.

Required permission

Requires the kubernetes.write permission. See Permissions for the roles and API key permissions that include it.

Command line

The orl CLI wraps this endpoint:

orl kube node-pool scale <id> <pool-id> --count <count>
POST
/v1/kubernetes/clusters/{id}/node-pools/{poolId}/scale

Authorization

apiKey
headerAuthorizationBearer <token>

OpenRelay API key. Send it as Authorization: Bearer or_… (legacy vl_… keys still work).

Path Parameters

id*string
poolId*string

Request Body

application/json
  1. body
count*integer

The pool's new node count. Delete the pool to remove every node.

Range1 <= value <= 100
expectedCount?integer

Optional count the caller reviewed. If the current count differs, answers 409 CONCURRENT_UPDATE without scaling. The comparison and write are atomic.

Range1 <= value <= 100

Response Body

Scaling started

application/json
  1. response

A set of identical whole-host nodes in one cluster.

id*string
clusterId*string
name*string
sku*

What every node in a pool is: exactly one of gpuModelId or cpuSku. Nodes are whole hosts, so a GPU node is a host of that model with every GPU passed through to it, and a CPU node is a whole CPU host. A cluster mixes SKUs through several pools.

Properties1 <= properties <= 1
count*integer

Nodes the pool holds once it converges.

readyCount*integer

Nodes that joined the cluster and are Ready.

status*string
Value in"creating""ready""scaling""deleting""failed"
createdAt*string
Example Request
curl -X POST 'https://api.openrelay.inc/v1/kubernetes/clusters/string/node-pools/string/scale' \  -H 'Content-Type: application/json' \  -d '{  "count": 1}'
Example Response
{  "id": "string",  "clusterId": "string",  "name": "string",  "sku": {    "gpuModelId": "string"  },  "count": 0,  "readyCount": 0,  "status": "creating",  "createdAt": "string"}