> For the complete documentation index, see [llms.txt](https://docs.ionos.com/cloud/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ionos.com/cloud/containers/managed-kubernetes/how-tos/management-of-node-pools.md).

# Manage Node Pools

A node pool is a group of nodes within a Managed Kubernetes cluster that share the same configuration, including server type, CPU, RAM, and storage settings. Node pools allow you to scale compute resources independently and tailor hardware configurations to specific workloads within a cluster.

This guide covers how to create a node pool and rebuild a failed node using the [<mark style="color:blue;">DCD</mark>](https://docs.ionos.com/cloud/support/general-information/glossary-of-terms#data-center-designer-dcd).

## Create a node pool

{% hint style="info" %}
**Prerequisite:** Only contract owners, administrators, and users having **Create Kubernetes Clusters** permission can create node pools. Other user types have **read-only** access.
{% endhint %}

{% hint style="warning" %}
**Important:** Node pools remain read-only during maintenance and deployment and cannot be updated at this time.
{% endhint %}

To create a node pool, follow these steps:

{% stepper %}
{% step %}

### Navigate to the cluster settings

1. In the **DCD**, go to **Menu** > **Containers** > **Managed Kubernetes**.
2. Select a cluster from the list and go to the **Node pools** tab.
3. Select **Add node pool**.

![Add a node pool](https://1737632334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MifAzdGvKLDTtvJP8sm%2Fuploads%2Fgit-blob-49cf89b68d0b6413dc2a3579290c970f310134fd%2Fmanaged-kubernetes-add-node-pool.png?alt=media)
{% endstep %}

{% step %}

### Configure Pool properties

In the **Create Node Pool** window, specify the following:

* **Node pool name:** Enter a name that aligns with the Kubernetes naming convention.
* **Kubernetes version:** Select an appropriate version from the drop-down list.
* **Virtual data center:** Select an option from the drop-down list. Your node pool will be included in the selected data center. If you do not have a data center, select **Create new VDC**.
* **Reserved IP address:** Select a reserved IP address from the drop-down list. If you do not have one, select **Create new reserved IP address**.
* **Node count:** Choose **Fixed** and enter the number of nodes, or select **Auto-scale** and provide a **Minimum** and **Maximum** number of total nodes (between 1 and 100).

{% hint style="info" %}
**Note:** Ensure to use the following naming convention for the node pool:

* Can be a maximum of 63 characters in length.
* Begins and ends with an alphanumeric character (`a-z0-9A-Z`).
* Must not contain spaces or any other white-space characters.
* Can contain dashes (-), underscores (\_), and dots (.) in between.
  {% endhint %}

![Configure node pool settings](https://1737632334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MifAzdGvKLDTtvJP8sm%2Fuploads%2Fgit-blob-24d983261e02ffa17d4b086bf1d183c69b5eb882%2Fmanaged-kubernetes-add-node-pools.png?alt=media)
{% endstep %}

{% step %}

### Configure Connection using private LAN

In the **Connection via private LAN** section, configure the following:

* **LAN:** Select a private LAN from the drop-down list. If you do not have an existing LAN, select **Create new LAN**, enter a **LAN name**, and select **Create LAN**. This provisions a private LAN in the node pool's virtual data center (node pools can only join private LANs). You can configure DHCP and static routes in the underlying row once the dialog closes.

![Create a private LAN](https://1737632334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MifAzdGvKLDTtvJP8sm%2Fuploads%2Fgit-blob-403becc00004ea12dfab9478fccd24eeec97fbb3%2Fmanaged-kubernetes-create-lan.png?alt=media)

* **DHCP:** Toggle to activate or deactivate DHCP for the selected LAN.
* **Routes** **(optional)**: Select **Add** to define custom routes for the LAN. Enter the **Network** using a `/24` CIDR subnet and specify the **Gateway IP** address.

![Connect using a private LAN](https://1737632334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MifAzdGvKLDTtvJP8sm%2Fuploads%2Fgit-blob-30f9630af70dcc1de453db18f733062a9fde10f5%2Fmanaged-kubernetes-connect-via-private-lan.png?alt=media)

* To attach additional LANs, select **Attach another private LAN**.
  {% endstep %}

{% step %}

### Configure Node template

{% hint style="info" %}
**Note:** Node template settings cannot be changed after the node pool is created.
{% endhint %}

In the **Node template** section, configure the following:

* **Server type:** Select either **vCPU** or **Dedicated Core** server. By default, **Dedicated Core** is selected. For more information, see [<mark style="color:blue;">vCPU Servers</mark>](/cloud/compute-services/compute-engine/vcpu-server.md) and [<mark style="color:blue;">Dedicated Core Servers</mark>](/cloud/compute-services/compute-engine/dedicated-core.md).

{% hint style="info" %}
**Note:** Regardless of whether you select **vCPU** or **Dedicated Core** servers, CPU resource allocation follows a fixed logic when provisioning resources:

**1 provisioned core (of vCPU or Dedicated Core servers) equals 2 Managed Kubernetes CPUs**.
{% endhint %}

* **Cores:** Select the number of cores.
* **RAM (GB):** Select the size of your RAM.
* **Availability zone:** Select a zone from the drop-down list.
* **Storage type:** Select a type of storage from the drop-down list: **Essential** or **Performance**. For more information, see [<mark style="color:blue;">Block Storage</mark>](/cloud/backup-and-storage/block-storage/overview.md).
* **Storage size (GB):** Select the storage size for your storage.

![Node template](https://1737632334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MifAzdGvKLDTtvJP8sm%2Fuploads%2Fgit-blob-ebf3edcef3952c19efa8272ba078c3568a5540a3%2Fmanaged-kubernetes-add-node-pools-node-template.png?alt=media)
{% endstep %}

{% step %}

### Configure Advanced settings

In the **Advanced settings** section, configure the following:

* **Labels:** Select **Add** and provide a **Key** and **Value** for each label.
* **Annotations:** Select **Add** and provide a **Key** and **Value** for each annotation.
* **Taints:** Select **Add** and provide a **Key**, **Value**, and **Effect** (for example, **NoSchedule**) for each taint.
* **Maintenance window:** Select the preferred **Day** and **Start time (UTC)** for scheduled maintenance.

![Advanced settings](https://1737632334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MifAzdGvKLDTtvJP8sm%2Fuploads%2Fgit-blob-bcacf712e2a78771b713c7d23329c661e63007f0%2Fmanaged-kubernetes-add-node-pools-advance-settings.png?alt=media)
{% endstep %}

{% step %}

### Configure the node pool

Select **Create node pool**.
{% endstep %}
{% endstepper %}

{% hint style="success" %}
**Result:** A node pool is successfully created and can be used once it reaches the **Active** state.
{% endhint %}

![Node pool created](https://1737632334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MifAzdGvKLDTtvJP8sm%2Fuploads%2Fgit-blob-bb3f992122cae0621308c3fd5ae41c3408fd7cff%2Fkubernetes-create-node-pool-success.png?alt=media)

## Rebuild a node

When a node fails or becomes unresponsive, rebuild it to create a replacement node with an identical configuration.

{% hint style="info" %}
**Prerequisite:** Before rebuilding a node, ensure it is in the **Active** state.
{% endhint %}

{% hint style="info" %}
**Note:** Avoid accessing the target data center while Managed Kubernetes is provisioning nodes, as concurrent manual interaction can cause undesirable results.
{% endhint %}

To rebuild a node, follow these steps:

1. In the **DCD**, go to **Menu** > **Containers** > **Managed Kubernetes**.
2. Select a cluster from the list and go to the **Node pools** tab.
3. Select the node pool that contains the failed node.

![Select a node](https://1737632334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MifAzdGvKLDTtvJP8sm%2Fuploads%2Fgit-blob-b82b15a9eef76c0633216e21141dde868c804875%2Fmanaged-kubernetes-delete-node-pool.png?alt=media)

4. Select **Rebuild**.

![Rebuild a node](https://1737632334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MifAzdGvKLDTtvJP8sm%2Fuploads%2Fgit-blob-8a60ca5a684b629b951b212801ae6ff4170d9633%2Fmanaged-kubernetes-rebuild-node-pool.png?alt=media)

5. Confirm your selection by selecting **OK**.

![Confirm rebuild](https://1737632334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MifAzdGvKLDTtvJP8sm%2Fuploads%2Fgit-blob-db655d821da18ffae2fd222ada7e3ffeaeb548e1%2Fmanaged-kubernetes-rebuild-node-pools-confirm.png?alt=media)

{% hint style="success" %}
**Result:**

* **Managed Kubernetes** starts a process that is based on the **Node Template**. The template creates and configures a new node. Once the status is updated to **Active**, it migrates all the pods from the faulty node to the new node.
* The status of the selected node pool changes to **Maintenance**.
* The faulty node is deleted once it is empty.
* While this operation occurs, the node pool will have an extra billable active node.
* The node pool is successfully rebuilt.
  {% endhint %}

![Rebuilding in progress](https://1737632334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MifAzdGvKLDTtvJP8sm%2Fuploads%2Fgit-blob-5d2613a3c2165d52caef99208fdc0ab830f98105%2Fmanaged-kubernetes-rebuilding-node-pool.png?alt=media)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.ionos.com/cloud/containers/managed-kubernetes/how-tos/management-of-node-pools.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
