Kubernetes clusters

Add worker nodes

Adds one or more worker nodes to an existing Managed Kubernetes cluster without a full cluster-update request. The rest of the cluster (other nodes, autoscaling groups) is left untouched.

The cluster must be in "ACTIVE" status. The operation is asynchronous: the method returns 202 with the cluster payload where the new nodes appear in a transitional status ("PROVISIONING", then "JOINING"). Poll a node via GET /v1/kubernetes/{kubernetesId}/nodes/{nodeId} or the cluster GET until it reaches the "ACTIVE" status. To select hardware configurations for worker nodes, use the /v1/kubernetes-configs endpoint.

Optional Kubernetes labels and taints are applied to the node after it joins the cluster.

post/v1/kubernetes/{kubernetesId}/nodes

Request

  • Base URL
    https://api.emma.ms/external
  • Auth
    HTTP bearer

Path parameters

kubernetesIdinteger required

ID of the Kubernetes cluster

Request body

Example request

{
  "nodes": [
    {
      "name": "worker-extra",
      "dataCenterId": "gcp-europe-west4-a",
      "vCpuType": "shared",
      "vCpu": 2,
      "ramGb": 4,
      "volumeType": "ssd",
      "volumeGb": 16,
      "acceleratorTypeId": "7bf9d828-e3e8-496f-9901-9045640bb287",
      "accelerators": 1,
      "instanceType": "on_demand",
      "labels": [
        {
          "key": "emma.ms/pool",
          "value": "batch"
        }
      ],
      "taints": [
        {
          "key": "dedicated",
          "value": "batch",
          "effect": "NoSchedule"
        }
      ]
    }
  ]
}

Response

Request accepted; the nodes are being provisioned

idinteger required

Kubernetes cluster ID

createdAtstring date-time required

Cluster creation date and time

createdByIdinteger required

ID of the user who created the cluster

createdByNamestring required

Name of the user who created the cluster

modifiedAtstring date-time required

Cluster last modification date and time

modifiedByNamestring required

Name of the user who last modified the cluster

modifiedByIdinteger required

ID of the user who last modified the cluster

namestring required

Cluster name

versionstring required

Kubernetes version

deploymentLocationstring required

Deployment location

k8sConnectionType'direct_connect' | 'internet_connect' required

Kubernetes connection type

domainNamestring nullable

Cluster domain name

statusstring required

Cluster status

controlPlaneStatus'CREATING' | 'ACTIVE' | 'UPDATING' | 'DEGRADED' | 'UNHEALTHY' | 'FAILED' | 'DESTRUCTION' required

Control plane status

Example response

{
  "id": 108379,
  "createdAt": "2026-03-16T07:54:14.066",
  "createdById": 2394,
  "createdByName": "Automation User",
  "modifiedAt": "2026-03-16T08:09:34.354",
  "modifiedByName": "Automation User",
  "modifiedById": 2427,
  "name": "default-k8s-managed-cluster-name",
  "version": "1.35",
  "deploymentLocation": "eu",
  "k8sConnectionType": "direct_connect",
  "domainName": null,
  "status": "ENV_DEPLOYMENT",
  "controlPlaneStatus": "CREATING",
  "cost": {
    "unit": "MONTHS",
    "currency": "EUR",
    "price": 77.4160050040314
  },
  "nodeGroups": [
    {
      "name": "autonodegroup",
      "nodes": [
        {
          "id": 108406,
          "createdAt": "2026-03-16T09:21:45.235",
          "name": "pfpuyr-autonodegroup",
          "status": "DRAFT",
          "instanceType": "on_demand",
          "nodeStatus": "ACTIVE",
          "provider": {
            "id": 78,
            "name": "GCP"
          },
          "location": {
            "id": 77,
            "name": "St. Ghislain",
            "country": "Belgium",
            "continent": "Europe",
            "region": "EMEA",
            "latitude": 50.44816,
            "longitude": 3.81886
          },
          "dataCenter": {
            "id": "gcp-europe-west1-b",
            "name": "europe-west1-b",
            "providerName": "GCP",
            "providerId": 78,
            "locationId": 77,
            "locationName": "St. Ghislain"
          },
          "os": {
            "id": 48,
            "family": "Linux",
            "type": "Ubuntu",
            "architecture": "x86-64",
            "version": "24.04"
          },
          "cloudNetworkType": "multi-cloud",
          "vCpuType": "shared",
          "vCpu": 2,
          "ramGb": 4,
          "disks": [
            {
              "id": 108407,
              "name": "volume-bz0b1n",
              "sizeGb": 16,
              "typeId": 2,
              "type": "ssd",
              "isBootable": true
            }
          ],
          "networks": null,
          "cost": {
            "unit": "MONTHS",
            "currency": "EUR",
            "price": 38.708004
          },
          "securityGroup": null,
          "accelerator": null,
          "localDisks": null
        }
      ],
      "status": "CREATING",
      "scalingPolicy": "ENABLED"
    },
    {
      "name": "Nodes",
      "nodes": [
        {
          "id": 108380,
          "createdAt": "2026-03-16T07:54:14.085",
          "name": "lsydyf-node",
          "status": "DRAFT",
          "instanceType": "on_demand",
          "nodeStatus": "ACTIVE",
          "provider": {
            "id": 78,
            "name": "GCP"
          },
          "location": {
            "id": 77,
            "name": "St. Ghislain",
            "country": "Belgium",
            "continent": "Europe",
            "region": "EMEA",
            "latitude": 50.44816,
            "longitude": 3.81886
          },
          "dataCenter": {
            "id": "gcp-europe-west1-b",
            "name": "europe-west1-b",
            "providerName": "GCP",
            "providerId": 78,
            "locationId": 77,
            "locationName": "St. Ghislain"
          },
          "os": {
            "id": 48,
            "family": "Linux",
            "type": "Ubuntu",
            "architecture": "x86-64",
            "version": "24.04"
          },
          "cloudNetworkType": "multi-cloud",
          "vCpuType": "shared",
          "vCpu": 2,
          "ramGb": 4,
          "disks": [
            {
              "id": 108381,
              "name": "volume-kivy61",
              "sizeGb": 16,
              "typeId": 2,
              "type": "ssd",
              "isBootable": true
            }
          ],
          "networks": null,
          "cost": {
            "unit": "MONTHS",
            "currency": "EUR",
            "price": 28257
          },
          "securityGroup": null,
          "accelerator": null,
          "localDisks": null
        }
      ],
      "status": "ACTIVE",
      "scalingPolicy": "SCALE_UP_ONLY"
    }
  ],
  "autoscalingConfigs": [
    {
      "groupName": "autonodegroup",
      "dataCenterId": "gcp-europe-west1-b",
      "minimumNodes": 1,
      "maximumNodes": 2,
      "targetNodes": 1,
      "minimumVCpus": 1,
      "maximumVCpus": null,
      "targetVCpus": null,
      "nodeGroupPriceLimit": 50,
      "useOnDemandInstancesInsteadOfSpots": true,
      "spotPercent": 50,
      "spotMarkup": 0,
      "userLabels": [
        {
          "key": "workload",
          "value": "batch"
        }
      ],
      "configurationPriorities": [
        {
          "vCpuType": "shared",
          "vCpu": 2,
          "ramGb": 4,
          "volumeGb": 16,
          "volumeType": "ssd",
          "priority": "high"
        }
      ],
      "limitsNotice": null
    }
  ]
}

Changes

No recorded changes to this operation across all 1 revision of this API.