Skip to content

Create Kubernetes Cluster

POST
/tenant_clusters/
curl --request POST \
--url 'https://api.e2enetworks.com/myaccount/api/v1/gpu/tenant_clusters/?project_id=<PROJECT_ID>&location=<LOCATION>&apikey=<API_KEY>' \
--header 'Authorization: Bearer <API_TOKEN>' \
--header 'Content-Type: application/json' \
--data '{
"name": "string",
"description": "string",
"tenant_k8s_version_id": 0,
"control_plane_replicas": 3,
"control_plane_sku_id": 0,
"control_plane_sku_item_price_id": 0,
"control_plane_committed_instance_policy": "auto_renew",
"control_plane_next_sku_item_price_id": 0,
"vpc_id": 0,
"subnet_id": 0,
"worker_pools": [
{
"name": "string",
"sku_id": 0,
"sku_item_price_id": 0,
"replicas": 0,
"committed_instance_policy": "auto_renew",
"next_sku_item_price_id": 0,
"labels": [
{
"key": "team",
"value": "ml"
}
],
"taints": [
{
"key": "dedicated",
"value": "gpu",
"effect": "NoSchedule"
}
]
}
]
}'

Creates a Kubernetes cluster whose nodes run as virtual machines in your VPC. The call returns at once with status queued; the cluster then moves through cluster_provisioning, worker_joining, and worker_joined to ready, or ends at failed. Call Get Kubernetes Cluster to follow it.

The control plane runs on a CPU plan. The cluster needs at least one worker pool, and pool names must be unique in the cluster, ignoring case. A cluster name must be unique in the project, ignoring case. Pods use 172.30.0.0/16 and Services 172.31.0.0/16 on every cluster; neither can be set.

Before anything is created, the server checks credit and free stock for every pool. A committed plan charges its whole term upfront.

Note: Get version IDs from List Kubernetes Versions. The VPC must be Active and in the same project and region.

project_id
required
integer

Project ID

active_iam
integer

Active IAM ID (To access contact person account) Find your Active IAM ID here

location
required
string
Allowed values: Delhi Chennai

Location

Media typeapplication/json
object
name
required

Cluster name, unique in the project.

string
<= 128 characters
description

Optional free text.

string
nullable
tenant_k8s_version_id
required

The id of a version from List Kubernetes Versions. It cannot be changed later.

integer
control_plane_replicas

Control plane node count. Use 3 for a cluster you depend on; 1 suits a cluster you are trying out, such as for development. It cannot be changed later.

integer
default: 3
Allowed values: 1 3
control_plane_sku_id
required

A CPU computing resource for the control plane.

integer
control_plane_sku_item_price_id
required

An hourly or committed plan of that resource, in this region.

integer
control_plane_committed_instance_policy

Required when the control plane plan is committed. What happens when the term ends.

string
Allowed values: auto_renew convert_to_hourly_billing
control_plane_next_sku_item_price_id

Required with a committed plan: the plan of the same resource to continue on, a committed plan with auto_renew or an hourly plan with convert_to_hourly_billing.

integer
nullable
vpc_id
required

An Active VPC in this project and region. It cannot be changed later.

integer
subnet_id
required

A subnet of that VPC. The nodes take their addresses from it.

integer
worker_pools
required

One entry for each worker node pool.

Array<object>
>= 1 items
object
name
required

Lowercase letters, numbers, and hyphens, starting and ending with a letter or number; unique in the cluster, ignoring case.

string
<= 128 characters
sku_id
required

The computing resource for this pool’s nodes.

integer
sku_item_price_id
required

An hourly or committed plan of that resource, in this region.

integer
replicas
required

Node count.

integer
>= 1 <= 25
committed_instance_policy

Required when the pool’s plan is committed.

string
Allowed values: auto_renew convert_to_hourly_billing
next_sku_item_price_id

Required with a committed plan: a committed plan of the same resource with auto_renew, or an hourly one with convert_to_hourly_billing.

integer
nullable
labels

Node labels for this pool. Keys must be unique.

Array<object>
<= 20 items
object
key
required

The key without the node.e2enetworks.com/ prefix, which the platform adds. Up to 63 letters, numbers, -, _, or ., starting and ending with a letter or number.

string
<= 63 characters

Example

team
value
required

Required. The same characters as the key.

string
<= 63 characters

Example

ml
taints

Node taints for this pool. Each key and effect pair must be unique.

Array<object>
<= 10 items
object
key
required

The key without the node.e2enetworks.com/ prefix, which the platform adds. Up to 63 letters, numbers, -, _, or ., starting and ending with a letter or number.

string
<= 63 characters

Example

dedicated
value

May be empty.

string
<= 63 characters

Example

gpu
effect
required

NoExecute evicts running pods that do not tolerate the taint.

string
Allowed values: NoSchedule PreferNoSchedule NoExecute

Example

NoSchedule

The cluster is queued for creation.

Media typeapplication/json
object
code
integer
data
object
id
integer
name
string
project_id
integer
region
string
status
string
Allowed values: queued cluster_provisioning worker_joining worker_joined ready failed deleting deleted
tenant_k8s_version_id
integer
tenant_k8s_version
string
node_pools
Array<object>
object
id
integer
tenant_cluster_id
integer
name
string
role
string
Allowed values: control_plane worker
status

resizing while the pool moves to a new fixed size, scaling while its autoscaler changes the node count.

string
Allowed values: queued joining ready resizing scaling failed deleting
replicas

The node count the pool is set to.

integer
ready_replicas

The pool’s nodes that are up and ready.

integer
labels
Array<object>
object
key
required

The key without the node.e2enetworks.com/ prefix, which the platform adds. Up to 63 letters, numbers, -, _, or ., starting and ending with a letter or number.

string
<= 63 characters
value
required

Required. The same characters as the key.

string
<= 63 characters
taints
Array<object>
object
key
required

The key without the node.e2enetworks.com/ prefix, which the platform adds. Up to 63 letters, numbers, -, _, or ., starting and ending with a letter or number.

string
<= 63 characters
value

May be empty.

string
<= 63 characters
effect
required

NoExecute evicts running pods that do not tolerate the taint.

string
Allowed values: NoSchedule PreferNoSchedule NoExecute
sku_details

The computing resource and pricing plan a node pool runs on.

object
specs
object
sku_id
integer
name
string
series
string
cpu
integer
memory
integer
plan
object
sku_item_price_id
integer
sku_type

hourly or committed.

string
committed_days
integer
unit_price
number
currency
string
committed_info

Set only for a pool on a committed plan.

object
updation_policy
string
Allowed values: auto_renew convert_to_hourly_billing
next_sku_item_price

The computing resource and pricing plan a node pool runs on.

object
specs
object
sku_id
integer
name
string
series
string
cpu
integer
memory
integer
plan
object
sku_item_price_id
integer
sku_type

hourly or committed.

string
committed_days
integer
unit_price
number
currency
string
end_date
string format: date-time
nullable
autoscaling

The pool’s size bounds. A min_replicas lower than max_replicas means the pool is autoscaled; equal values are a fixed size.

object
min_replicas
integer
max_replicas
integer
created_at
string format: date-time
updated_at
string format: date-time
created_at
string format: date-time
errors
object
message
string

Example

{
"code": 201,
"data": {
"id": 103,
"name": "tir-k8s-prod",
"project_id": 18773,
"region": "Delhi",
"status": "queued",
"tenant_k8s_version_id": 1,
"tenant_k8s_version": "v1.31.4",
"node_pools": [
{
"id": 22,
"tenant_cluster_id": 103,
"name": "app-workers",
"role": "control_plane",
"status": "queued",
"replicas": 2,
"ready_replicas": 2,
"labels": [
{
"key": "team",
"value": "ml"
}
],
"taints": [
{
"key": "dedicated",
"value": "gpu",
"effect": "NoSchedule"
}
],
"sku_details": {
"specs": {
"sku_id": 101,
"name": "C3.8GB",
"series": "CPU",
"cpu": 4,
"memory": 8
},
"plan": {
"sku_item_price_id": 1001,
"sku_type": "hourly",
"committed_days": 0,
"unit_price": 4.5,
"currency": "INR"
}
},
"committed_info": {
"updation_policy": "auto_renew",
"next_sku_item_price": {
"specs": {
"sku_id": 101,
"name": "C3.8GB",
"series": "CPU",
"cpu": 4,
"memory": 8
},
"plan": {
"sku_item_price_id": 1001,
"sku_type": "hourly",
"committed_days": 0,
"unit_price": 4.5,
"currency": "INR"
}
},
"end_date": "2026-11-20T10:15:00Z"
},
"autoscaling": {
"min_replicas": 2,
"max_replicas": 2
},
"created_at": "2026-10-20T10:15:00Z",
"updated_at": "2026-10-20T10:42:00Z"
}
],
"created_at": "2026-10-20T10:15:00Z"
},
"errors": {},
"message": "Tenant cluster creation queued successfully"
}