# Nodepool


<style>
  span[class^="pill-"] {
    color: white;
    padding: 2px 12px;
    border-radius: 12px;
    font-size: 0.6em;
    vertical-align: middle;
    margin-right: 12px;
    font-family: sans-serif;
    font-weight: bold;
    display: inline-block;
    line-height: 1;
  }
  span.pill-GET { background-color: #61affe; }
  span.pill-POST { background-color: #49cc90; }
  span.pill-PUT { background-color: #fca130; }
  span.pill-DELETE { background-color: #f93e3e; }
  span.pill-PATCH { background-color: #50e3c2; }
  span[class^="pill-"]:after {
    content: attr(data-label);
    font-size: 0.9rem;
  }
</style>

Nodepools are groups of compute instances managed by SKS, serving as worker nodes in your Kubernetes cluster.

[Read more](https://community.exoscale.com/documentation/sks/)

## <span data-label="POST" class="pill-POST"></span>create-sks-nodepool

Create a new SKS Nodepool

```
POST /sks-cluster/{id}/nodepool
```

### Path parameters

| Name | In | Description |
| --- | --- | --- |
| `id` | `path` | Must be a valid UUID. |

### Request body

Content-Type: `application/json`

| Property | Type | Required | Description |
| --- | --- | --- | --- |
| `disk-size` | integer | **yes** | Nodepool instances disk size in GiB<br/><br/>Min: `20`. Max: `51200`. |
| `instance-type` | [Instance type reference](/reference/api/_schemas/instance-type-ref/) | **yes** | Nodepool instances type |
| `name` | string | **yes** | Nodepool name, lowercase only<br/><br/>Min length: `1`. Max length: `255`. |
| `size` | integer | **yes** | Number of instances<br/><br/>Min: `0`. |
| `addons` | array[string] | no | Nodepool addons |
| `anti-affinity-groups` | array of [Anti-affinity group reference](/reference/api/_schemas/anti-affinity-group-ref/) | no | Nodepool Anti-affinity Groups |
| `deploy-target` | [Deploy target reference](/reference/api/_schemas/deploy-target-ref/) | no | Nodepool Deploy Target |
| `description` | string | no | Nodepool description<br/><br/>Max length: `255`. |
| `instance-prefix` | string | no | Prefix to apply to instances names (default: pool), lowercase only<br/><br/>Min length: `1`. Max length: `30`. |
| `kubelet-image-gc` | [Kubelet image GC options](/reference/api/_schemas/kubelet-image-gc/) | no | Kubelet image GC options |
| `labels` | object | no | Nodepool labels |
| `nvidia-mig-profiles` | [Nvidia MIG Profiles enabled](/reference/api/_schemas/nvidia-mig-profiles/) | no | Nvidia MIG Profiles |
| `private-networks` | array of [Private network reference](/reference/api/_schemas/private-network-ref/) | no | Nodepool Private Networks |
| `public-ip-assignment` | string | no | Configures public IP assignment of the Instances with:  * IPv4 (`inet4`) addressing only (default); * both IPv4 and IPv6 (`dual`) addressing.<br/><br/>Allowed values: `inet4`, `dual`. |
| `security-groups` | array of [Security group reference](/reference/api/_schemas/security-group-ref/) | no | Nodepool Security Groups |
| `taints` | object | no | Nodepool taints |

<details>
<summary>Example</summary>

```json
{
  "addons": [
    "storage-lvm"
  ],
  "anti-affinity-groups": [
    {
      "id": "string"
    }
  ],
  "deploy-target": {
    "id": "string"
  },
  "description": "string",
  "disk-size": 0,
  "instance-prefix": "string",
  "instance-type": {
    "id": "string"
  },
  "kubelet-image-gc": {
    "high-threshold": 0,
    "low-threshold": 0,
    "min-age": "string"
  },
  "labels": {},
  "name": "string",
  "nvidia-mig-profiles": {
    "a30.24gb": "2g.12gb",
    "rtxpro6000.96gb": "1g.24gb-me"
  },
  "private-networks": [
    {
      "id": "string"
    }
  ],
  "public-ip-assignment": "inet4",
  "security-groups": [
    {
      "id": "string"
    }
  ],
  "size": 0,
  "taints": {}
}
```
</details>


### Responses

Status: `200` - 200

Content-Type: `application/json`

| Property | Type | Description |
| --- | --- | --- |
| `id` | string | Operation ID<br/><br/>Must be a valid UUID. |
| `message` | string | Operation message |
| `reason` | string | Operation failure reason<br/><br/>Allowed values: `incorrect`, `unknown`, `unavailable`, `forbidden`, `busy`, `fault`, `partial`, `not-found`, `interrupted`, `unsupported`, `conflict`. |
| `reference` | [Reference](/reference/api/_schemas/operation/#reference) | Related resource reference |
| `state` | string | Operation status<br/><br/>Allowed values: `failure`, `pending`, `success`, `timeout`. |

<details>
<summary>Example output</summary>

```json
{
  "id": "string",
  "message": "string",
  "reason": "incorrect",
  "reference": {
    "command": "string",
    "id": "string",
    "link": "string"
  },
  "state": "failure"
}
```
</details>


SDK reference for `create-sks-nodepool`: [golang](https://pkg.go.dev/github.com/exoscale/egoscale/v3#Client.CreateSKSNodepool) | [Python](https://exoscale.github.io/python-exoscale/v2.html#exoscale.api.v2.Client.create_sks_nodepool) | [Java](https://exoscale.github.io/exoscale-sdk-java/com/exoscale/sdk/api/ExoscaleApi.html#createSksNodepool(java.util.UUID,com.exoscale.sdk.model.CreateSksNodepoolRequest))

[CLI](https://community.exoscale.com/tools/command-line-interface/): `exo api create-sks-nodepool`

## <span data-label="GET" class="pill-GET"></span>get-sks-nodepool

Retrieve SKS Nodepool details

```
GET /sks-cluster/{id}/nodepool/{sks-nodepool-id}
```

### Path parameters

| Name | In | Description |
| --- | --- | --- |
| `id` | `path` | Must be a valid UUID. |
| `sks-nodepool-id` | `path` | Must be a valid UUID. |

### Responses

Status: `200` - 200

Content-Type: `application/json`

| Property | Type | Description |
| --- | --- | --- |
| `addons` | array[string] | Nodepool addons |
| `anti-affinity-groups` | array of [Anti-affinity group reference](/reference/api/_schemas/anti-affinity-group-ref/) | Nodepool Anti-affinity Groups |
| `created-at` | string | Nodepool creation date<br/><br/>ISO 8601 date-time. |
| `deploy-target` | [Deploy target reference](/reference/api/_schemas/deploy-target-ref/) | Instance Pool Deploy Target |
| `description` | string | Nodepool description<br/><br/>Max length: `255`. |
| `disk-size` | integer | Nodepool instances disk size in GiB<br/><br/>Min: `20`. Max: `51200`. |
| `id` | string | Nodepool ID<br/><br/>Must be a valid UUID. |
| `instance-pool` | [Target Instance Pool](/reference/api/_schemas/instance-pool-ref/) | Instance Pool managed by the Nodepool |
| `instance-prefix` | string | The instances created by the Nodepool will be prefixed with this value (default: pool)<br/><br/>Min length: `1`. Max length: `30`. |
| `instance-type` | [Instance type reference](/reference/api/_schemas/instance-type-ref/) | Nodepool Instances type |
| `kubelet-image-gc` | [Kubelet image GC options](/reference/api/_schemas/kubelet-image-gc/) | Kubelet image GC options |
| `labels` | object | Nodepool labels |
| `name` | string | Nodepool name<br/><br/>Min length: `1`. Max length: `255`. |
| `nvidia-mig-profiles` | [Nvidia MIG Profiles enabled](/reference/api/_schemas/nvidia-mig-profiles/) | Nvidia MIG Profiles |
| `private-networks` | array of [Private network reference](/reference/api/_schemas/private-network-ref/) | Nodepool Private Networks |
| `public-ip-assignment` | string | Nodepool public IP assignment of the Instances:  * IPv4 (`inet4`) addressing only; * IPv4 and IPv6 (`dual`) addressing.<br/><br/>Allowed values: `inet4`, `dual`. |
| `security-groups` | array of [Security group reference](/reference/api/_schemas/security-group-ref/) | Nodepool Security Groups |
| `size` | integer | Number of instances<br/><br/>Min: `0`. |
| `state` | string | Nodepool state<br/><br/>Allowed values: `renewing-token`, `creating`, `deleting`, `running`, `scaling`, `updating`, `error`. |
| `taints` | object | Nodepool taints |
| `template` | [Template reference](/reference/api/_schemas/template-ref/) | Nodepool Instance template |
| `version` | string | Nodepool version |

<details>
<summary>Example output</summary>

```json
{
  "addons": [
    "storage-lvm"
  ],
  "anti-affinity-groups": [
    {
      "id": "string"
    }
  ],
  "created-at": "2024-01-01T12:00:00Z",
  "deploy-target": {
    "id": "string"
  },
  "description": "string",
  "disk-size": 0,
  "id": "string",
  "instance-pool": {
    "id": "string"
  },
  "instance-prefix": "string",
  "instance-type": {
    "id": "string"
  },
  "kubelet-image-gc": {
    "high-threshold": 0,
    "low-threshold": 0,
    "min-age": "string"
  },
  "labels": {},
  "name": "string",
  "nvidia-mig-profiles": {
    "a30.24gb": "2g.12gb",
    "rtxpro6000.96gb": "1g.24gb-me"
  },
  "private-networks": [
    {
      "id": "string"
    }
  ],
  "public-ip-assignment": "inet4",
  "security-groups": [
    {
      "id": "string"
    }
  ],
  "size": 0,
  "state": "renewing-token",
  "taints": {},
  "template": {
    "id": "string"
  },
  "version": "string"
}
```
</details>


SDK reference for `get-sks-nodepool`: [golang](https://pkg.go.dev/github.com/exoscale/egoscale/v3#Client.GetSKSNodepool) | [Python](https://exoscale.github.io/python-exoscale/v2.html#exoscale.api.v2.Client.get_sks_nodepool) | [Java](https://exoscale.github.io/exoscale-sdk-java/com/exoscale/sdk/api/ExoscaleApi.html#getSksNodepool(java.util.UUID,java.util.UUID))

[CLI](https://community.exoscale.com/tools/command-line-interface/): `exo api get-sks-nodepool`

## <span data-label="PUT" class="pill-PUT"></span>update-sks-nodepool

Update an SKS Nodepool

```
PUT /sks-cluster/{id}/nodepool/{sks-nodepool-id}
```

### Path parameters

| Name | In | Description |
| --- | --- | --- |
| `id` | `path` | Must be a valid UUID. |
| `sks-nodepool-id` | `path` | Must be a valid UUID. |

### Request body

Content-Type: `application/json`

| Property | Type | Required | Description |
| --- | --- | --- | --- |
| `anti-affinity-groups` | array of [Anti-affinity group reference](/reference/api/_schemas/anti-affinity-group-ref/) | no | Nodepool Anti-affinity Groups |
| `deploy-target` | [Deploy target reference](/reference/api/_schemas/deploy-target-ref/) | no | Nodepool Deploy Target |
| `description` | string | no | Nodepool description<br/><br/>Max length: `255`. |
| `disk-size` | integer | no | Nodepool instances disk size in GiB<br/><br/>Min: `20`. Max: `51200`. |
| `instance-prefix` | string | no | Prefix to apply to managed instances names (default: pool), lowercase only<br/><br/>Min length: `1`. Max length: `30`. |
| `instance-type` | [Instance type reference](/reference/api/_schemas/instance-type-ref/) | no | Nodepool instances type |
| `kubelet-image-gc` | [Kubelet image GC options](/reference/api/_schemas/kubelet-image-gc/) | no | Kubelet image GC options |
| `labels` | object | no | Nodepool labels |
| `name` | string | no | Nodepool name, lowercase only<br/><br/>Min length: `1`. Max length: `255`. |
| `nvidia-mig-profiles` | [Nvidia MIG Profiles enabled](/reference/api/_schemas/nvidia-mig-profiles/) | no | Nvidia MIG Profiles |
| `private-networks` | array of [Private network reference](/reference/api/_schemas/private-network-ref/) | no | Nodepool Private Networks |
| `public-ip-assignment` | string | no | Configures public IP assignment of the Instances with:  * IPv4 (`inet4`) addressing only; * both IPv4 and IPv6 (`dual`) addressing.<br/><br/>Allowed values: `inet4`, `dual`. |
| `security-groups` | array of [Security group reference](/reference/api/_schemas/security-group-ref/) | no | Nodepool Security Groups |
| `taints` | object | no | Nodepool taints |

<details>
<summary>Example</summary>

```json
{
  "anti-affinity-groups": [
    {
      "id": "string"
    }
  ],
  "deploy-target": {
    "id": "string"
  },
  "description": "string",
  "disk-size": 0,
  "instance-prefix": "string",
  "instance-type": {
    "id": "string"
  },
  "kubelet-image-gc": {
    "high-threshold": 0,
    "low-threshold": 0,
    "min-age": "string"
  },
  "labels": {},
  "name": "string",
  "nvidia-mig-profiles": {
    "a30.24gb": "2g.12gb",
    "rtxpro6000.96gb": "1g.24gb-me"
  },
  "private-networks": [
    {
      "id": "string"
    }
  ],
  "public-ip-assignment": "inet4",
  "security-groups": [
    {
      "id": "string"
    }
  ],
  "taints": {}
}
```
</details>


### Responses

Status: `200` - 200

Content-Type: `application/json`

| Property | Type | Description |
| --- | --- | --- |
| `id` | string | Operation ID<br/><br/>Must be a valid UUID. |
| `message` | string | Operation message |
| `reason` | string | Operation failure reason<br/><br/>Allowed values: `incorrect`, `unknown`, `unavailable`, `forbidden`, `busy`, `fault`, `partial`, `not-found`, `interrupted`, `unsupported`, `conflict`. |
| `reference` | [Reference](/reference/api/_schemas/operation/#reference) | Related resource reference |
| `state` | string | Operation status<br/><br/>Allowed values: `failure`, `pending`, `success`, `timeout`. |

<details>
<summary>Example output</summary>

```json
{
  "id": "string",
  "message": "string",
  "reason": "incorrect",
  "reference": {
    "command": "string",
    "id": "string",
    "link": "string"
  },
  "state": "failure"
}
```
</details>


SDK reference for `update-sks-nodepool`: [golang](https://pkg.go.dev/github.com/exoscale/egoscale/v3#Client.UpdateSKSNodepool) | [Python](https://exoscale.github.io/python-exoscale/v2.html#exoscale.api.v2.Client.update_sks_nodepool) | [Java](https://exoscale.github.io/exoscale-sdk-java/com/exoscale/sdk/api/ExoscaleApi.html#updateSksNodepool(java.util.UUID,java.util.UUID,com.exoscale.sdk.model.UpdateSksNodepoolRequest))

[CLI](https://community.exoscale.com/tools/command-line-interface/): `exo api update-sks-nodepool`

## <span data-label="PUT" class="pill-PUT"></span>scale-sks-nodepool

Scale a SKS Nodepool

```
PUT /sks-cluster/{id}/nodepool/{sks-nodepool-id}:scale
```

### Path parameters

| Name | In | Description |
| --- | --- | --- |
| `id` | `path` | Must be a valid UUID. |
| `sks-nodepool-id` | `path` | Must be a valid UUID. |

### Request body

Content-Type: `application/json`

| Property | Type | Required | Description |
| --- | --- | --- | --- |
| `size` | integer | **yes** | Number of instances<br/><br/>Min: `0`. |

<details>
<summary>Example</summary>

```json
{
  "size": 0
}
```
</details>


### Responses

Status: `200` - 200

Content-Type: `application/json`

| Property | Type | Description |
| --- | --- | --- |
| `id` | string | Operation ID<br/><br/>Must be a valid UUID. |
| `message` | string | Operation message |
| `reason` | string | Operation failure reason<br/><br/>Allowed values: `incorrect`, `unknown`, `unavailable`, `forbidden`, `busy`, `fault`, `partial`, `not-found`, `interrupted`, `unsupported`, `conflict`. |
| `reference` | [Reference](/reference/api/_schemas/operation/#reference) | Related resource reference |
| `state` | string | Operation status<br/><br/>Allowed values: `failure`, `pending`, `success`, `timeout`. |

<details>
<summary>Example output</summary>

```json
{
  "id": "string",
  "message": "string",
  "reason": "incorrect",
  "reference": {
    "command": "string",
    "id": "string",
    "link": "string"
  },
  "state": "failure"
}
```
</details>


SDK reference for `scale-sks-nodepool`: [golang](https://pkg.go.dev/github.com/exoscale/egoscale/v3#Client.ScaleSKSNodepool) | [Python](https://exoscale.github.io/python-exoscale/v2.html#exoscale.api.v2.Client.scale_sks_nodepool) | [Java](https://exoscale.github.io/exoscale-sdk-java/com/exoscale/sdk/api/ExoscaleApi.html#scaleSksNodepool(java.util.UUID,java.util.UUID,com.exoscale.sdk.model.ScaleSksNodepoolRequest))

[CLI](https://community.exoscale.com/tools/command-line-interface/): `exo api scale-sks-nodepool`

## <span data-label="DELETE" class="pill-DELETE"></span>delete-sks-nodepool

Delete an SKS Nodepool

```
DELETE /sks-cluster/{id}/nodepool/{sks-nodepool-id}
```

### Path parameters

| Name | In | Description |
| --- | --- | --- |
| `id` | `path` | Must be a valid UUID. |
| `sks-nodepool-id` | `path` | Must be a valid UUID. |

### Responses

Status: `200` - 200

Content-Type: `application/json`

| Property | Type | Description |
| --- | --- | --- |
| `id` | string | Operation ID<br/><br/>Must be a valid UUID. |
| `message` | string | Operation message |
| `reason` | string | Operation failure reason<br/><br/>Allowed values: `incorrect`, `unknown`, `unavailable`, `forbidden`, `busy`, `fault`, `partial`, `not-found`, `interrupted`, `unsupported`, `conflict`. |
| `reference` | [Reference](/reference/api/_schemas/operation/#reference) | Related resource reference |
| `state` | string | Operation status<br/><br/>Allowed values: `failure`, `pending`, `success`, `timeout`. |

<details>
<summary>Example output</summary>

```json
{
  "id": "string",
  "message": "string",
  "reason": "incorrect",
  "reference": {
    "command": "string",
    "id": "string",
    "link": "string"
  },
  "state": "failure"
}
```
</details>


SDK reference for `delete-sks-nodepool`: [golang](https://pkg.go.dev/github.com/exoscale/egoscale/v3#Client.DeleteSKSNodepool) | [Python](https://exoscale.github.io/python-exoscale/v2.html#exoscale.api.v2.Client.delete_sks_nodepool) | [Java](https://exoscale.github.io/exoscale-sdk-java/com/exoscale/sdk/api/ExoscaleApi.html#deleteSksNodepool(java.util.UUID,java.util.UUID))

[CLI](https://community.exoscale.com/tools/command-line-interface/): `exo api delete-sks-nodepool`


---

## Other Operations

## <span data-label="PUT" class="pill-PUT"></span>evict-sks-nodepool-members

Evict Nodepool members

```
PUT /sks-cluster/{id}/nodepool/{sks-nodepool-id}:evict
```

This operation evicts the specified Compute instances member from the Nodepool, shrinking it to `&lt;current nodepool size&gt; - &lt;# evicted members&gt;`.

### Path parameters

| Name | In | Description |
| --- | --- | --- |
| `id` | `path` | Must be a valid UUID. |
| `sks-nodepool-id` | `path` | Must be a valid UUID. |

### Request body

Content-Type: `application/json`

| Property | Type | Required | Description |
| --- | --- | --- | --- |
| `instances` | array[string] | no |  |

<details>
<summary>Example</summary>

```json
{
  "instances": [
    "string"
  ]
}
```
</details>


### Responses

Status: `200` - 200

Content-Type: `application/json`

| Property | Type | Description |
| --- | --- | --- |
| `id` | string | Operation ID<br/><br/>Must be a valid UUID. |
| `message` | string | Operation message |
| `reason` | string | Operation failure reason<br/><br/>Allowed values: `incorrect`, `unknown`, `unavailable`, `forbidden`, `busy`, `fault`, `partial`, `not-found`, `interrupted`, `unsupported`, `conflict`. |
| `reference` | [Reference](/reference/api/_schemas/operation/#reference) | Related resource reference |
| `state` | string | Operation status<br/><br/>Allowed values: `failure`, `pending`, `success`, `timeout`. |

<details>
<summary>Example output</summary>

```json
{
  "id": "string",
  "message": "string",
  "reason": "incorrect",
  "reference": {
    "command": "string",
    "id": "string",
    "link": "string"
  },
  "state": "failure"
}
```
</details>


SDK reference for `evict-sks-nodepool-members`: [golang](https://pkg.go.dev/github.com/exoscale/egoscale/v3#Client.EvictSKSNodepoolMembers) | [Python](https://exoscale.github.io/python-exoscale/v2.html#exoscale.api.v2.Client.evict_sks_nodepool_members) | [Java](https://exoscale.github.io/exoscale-sdk-java/com/exoscale/sdk/api/ExoscaleApi.html#evictSksNodepoolMembers(java.util.UUID,java.util.UUID,com.exoscale.sdk.model.EvictSksNodepoolMembersRequest))

[CLI](https://community.exoscale.com/tools/command-line-interface/): `exo api evict-sks-nodepool-members`


