---
title: High Availability
url: https://docs.vultr.com/products/compute/kubernetes/features/high-availability
description: A feature that ensures continuous operation of Kubernetes clusters by eliminating single points of failure.
publish_date: 2024-09-23T20:20:42.608408Z
last_updated: 2026-05-26T19:00:46.710841Z
---

# How to Enable High Availability for Vultr Kubernetes Engine Cluster

High availability is a key feature of Vultr Kubernetes Engine (VKE) cluster that ensures your cluster remains resilient and operational, even in the event of unexpected failures. By enabling high availability, your VKE cluster is distributed across multiple nodes and regions, reducing the risk of downtime and ensuring continuous availability of your applications. This feature integrates seamlessly with Vultr’s global cloud infrastructure, providing reliable performance and redundancy.

Follow this guide to enable High Availability for your Vultr Kubernetes Engine cluster using the Vultr Console, API, CLI, or Terraform.

=== "Vultr Console"

    1. Navigate to **Products** and click **Kubernetes**.
    1. Click **Add Cluster**.
    1. Enter a **Cluster Name**.
    1. Select the target version from the **Kubernetes Version** drop-down.
    1. Select **Enable High Availability** to configure multiple nodes for your cluster.
    1. Choose the **Node Pool Type**.
    1. Click the **Node Pool Plan** drop-down and select the desired node plan.
    1. Provide a **Label**, and select the **Number of Nodes**.
    1. Choose a **Vultr Location** for your cluster.
    1. Click **Deploy Now** to launch your cluster.

=== "Vultr API"

    1. Send a `GET` request to the [**List Regions** endpoint](https://www.vultr.com/api/#tag/region/operation/list-regions) and note your target Vultr region ID.

        ```console
        $ curl "https://api.vultr.com/v2/regions" \
            -X GET \
            -H "Authorization: Bearer ${VULTR_API_KEY}"
        ```

    1. Send a `GET` request to the [**List available plans in region** endpoint](https://www.vultr.com/api/#tag/region/operation/list-available-plans-region) to view all available instance plans in your chosen region and note the target node pool plan.

        ```console
        $ curl "https://api.vultr.com/v2/regions/{region-id}/availability" \
            -X GET \
            -H "Authorization: Bearer ${VULTR_API_KEY}"
        ```

    1. Send a `GET` request to the [**Get Kubernetes Versions** endpoint](https://www.vultr.com/api/#tag/kubernetes/operation/get-kubernetes-versions) and note your target Kubernetes version to use.

        ```console
        $ curl "https://api.vultr.com/v2/kubernetes/versions" \
            -X GET \
            -H "Authorization: Bearer ${VULTR_API_KEY}"
        ```

    1. Send a `POST` request to the [**Create Kubernetes Cluster** endpoint](https://www.vultr.com/api/#tag/kubernetes/operation/create-kubernetes-cluster) to create a VKE cluster with high availability. Post-creation, note the cluster's ID.

        ```console
        $ curl "https://api.vultr.com/v2/kubernetes/clusters" \
            -X POST \
            -H "Authorization: Bearer ${VULTR_API_KEY}" \
            -H "Content-Type: application/json" \
            --data '{
                "label": "{cluster-name}",
                "region": "{region-id}",
                "version": "{kubernetes-version}",
                "ha_controlplanes": true,
                "node_pools": [
                    {
                        "node_quantity": {number-of-nodes},
                        "label": "{node-label}",
                        "plan": "{node-plan}"
                    }
                ]
            }'
        ```

    1. Send a `GET` request to the [**Get Kubernetes Cluster** endpoint](https://www.vultr.com/api/#tag/kubernetes/operation/get-kubernetes-clusters) to get the details of the target VKE cluster.

        ```console
        $ curl "https://api.vultr.com/v2/kubernetes/clusters/{cluster-id}" \
            -X GET \
            -H "Authorization: Bearer ${VULTR_API_KEY}"
        ```

=== "Vultr CLI"

    1. List all Vultr regions and note your target region ID.
     
        ```console
        $ vultr-cli regions list
        ```

    1. List all available instance plans in your target region and note the target node pool plan.

        ```console
        $ vultr-cli regions availability <region-id>
        ```

    1. List all available Kubernetes versions and note your target version to use.

        ```console
        $ vultr-cli kubernetes versions
        ```

    1. Create a VKE cluster with `--high-avail` flag and note the target cluster's ID.

        ```console
        $ vultr-cli kubernetes create --label "<cluster-name>" --region "<region-id>" --version "<kubernetes-version>" --high-avail true --node-pools "quantity:<number-of-nodes>,plan:<node-plan>,label:<node-label>"
        ```

    1. Get the deatils of the target VKE cluster.

        ```console
        $ vultr-cli kubernetes get <cluster-id>
        ```

=== "Terraform"

    1. Open your Terraform configuration for the existing VKE cluster.

    1. Enable HA control planes by setting `ha_controlplanes = true`.

        ```terraform
        resource "vultr_kubernetes" "vke" {
            # ...existing fields (label, region, version, node_pools)
            ha_controlplanes = true
        }
        ```

    1. Apply the configuration and observe the following output:

        ```
        Apply complete! Resources: 0 added, 1 changed, 0 destroyed.
        ```
