ScyllaDB University Live | Free Virtual Training Event
Learn more
ScyllaDB Documentation Logo Documentation
  • Deployments
    • Cloud
    • Server
  • Tools
    • ScyllaDB Manager
    • ScyllaDB Monitoring Stack
    • ScyllaDB Operator
  • Drivers
    • CQL Drivers
    • DynamoDB Drivers
    • Supported Driver Versions
  • Resources
    • ScyllaDB University
    • Community Forum
    • Tutorials
Install
Search Ask AI
ScyllaDB Docs ScyllaDB Operator Install Operator Provision infrastructure Set up an EKS cluster for ScyllaDB

Caution

You're viewing documentation for an unstable version of ScyllaDB Operator. Switch to the latest stable version.

Set up an EKS cluster for ScyllaDB¶

This guide provisions an Amazon Elastic Kubernetes Service (EKS) cluster suitable for running ScyllaDB. At the end, you will have:

  • An EKS cluster with an infrastructure node group.

  • A dedicated ScyllaDB node group with local NVMe SSDs, static CPU manager policy, and ScyllaDB labels and taints.

Tip

All the steps in this guide are also available as a single executable script: examples/eks/setup-eks-cluster.sh. Set AWS_REGION, then run the script to provision everything in one go.

Prerequisites¶

  • An AWS account with permissions to create EKS clusters, EC2 instances, and VPC resources.

  • The eksctl CLI installed.

  • kubectl installed.

  • AWS credentials configured (aws configure or environment variables).

  • Sufficient quota for i4i.2xlarge instances in your target region. See ScyllaDB cloud instance recommendations for AWS for recommended instance types and system requirements for minimum specifications.

Set environment variables¶

The rest of the guide refers to the variables defined here.

Set your AWS region — this has no default and must be provided:

export AWS_REGION="<your-region>"  # e.g. eu-central-1

The remaining variables have sensible defaults and can be copied as-is. Override any value before running if needed:

# Cluster name.
export EKS_CLUSTER_NAME="${EKS_CLUSTER_NAME:-scylladb-demo}"

# Availability zones — one per ScyllaDB rack.
export EKS_AZ_1="${EKS_AZ_1:-${AWS_REGION}a}"
export EKS_AZ_2="${EKS_AZ_2:-${AWS_REGION}b}"
export EKS_AZ_3="${EKS_AZ_3:-${AWS_REGION}c}"

# Dedicated ScyllaDB node group. i4i.2xlarge provides 8 vCPU, 64 GiB RAM, and 1x1875 GB NVMe.
# See https://docs.scylladb.com/manual/stable/getting-started/cloud-instance-recommendations.html#amazon-web-services-aws
export SCYLLA_INSTANCE_TYPE="${SCYLLA_INSTANCE_TYPE:-i4i.2xlarge}"
export SCYLLA_NODE_COUNT="${SCYLLA_NODE_COUNT:-3}"

# Infrastructure node group.
export INFRA_INSTANCE_TYPE="${INFRA_INSTANCE_TYPE:-i3.large}"
export INFRA_NODE_COUNT="${INFRA_NODE_COUNT:-1}"

Create a temporary directory¶

Create a temporary directory for configuration files used in this guide:

TMPDIR="$(mktemp -d)"
trap 'rm -rf "${TMPDIR}"' EXIT

Create the eksctl cluster configuration¶

eksctl uses a declarative ClusterConfig to define the cluster and its node groups. Generate the configuration file:

cat > "${TMPDIR}/clusterconfig.eksctl.yaml" <<EOF
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
  name: ${EKS_CLUSTER_NAME}
  region: ${AWS_REGION}
availabilityZones:
- ${EKS_AZ_1}
- ${EKS_AZ_2}
- ${EKS_AZ_3}
nodeGroups:
- name: scylla-pool
  instanceType: ${SCYLLA_INSTANCE_TYPE}
  desiredCapacity: ${SCYLLA_NODE_COUNT}
  amiFamily: AmazonLinux2023
  labels:
    scylla.scylladb.com/node-type: scylla
  taints:
    scylla-operator.scylladb.com/dedicated: "scyllaclusters:NoSchedule"
  kubeletExtraConfig:
    cpuManagerPolicy: static
  availabilityZones:
  - ${EKS_AZ_1}
  - ${EKS_AZ_2}
  - ${EKS_AZ_3}
- name: infra-pool
  instanceType: ${INFRA_INSTANCE_TYPE}
  desiredCapacity: ${INFRA_NODE_COUNT}
  amiFamily: AmazonLinux2023
  labels:
    scylla.scylladb.com/node-type: infra
EOF

The ScyllaDB node group uses i4i.2xlarge instances (8 vCPU, 64 GiB RAM, 1x1875 GB NVMe SSD) with:

  • cpuManagerPolicy: static for CPU pinning.

  • ScyllaDB labels and taints so only ScyllaDB pods are scheduled on these nodes.

  • Nodes spread across 3 availability zones for fault tolerance.

Create the EKS cluster¶

eksctl create cluster -f="${TMPDIR}/clusterconfig.eksctl.yaml"

Note

Cluster creation typically takes 15–20 minutes. eksctl automatically configures kubectl to use the new cluster.

Verify connectivity and node readiness:

kubectl get nodes -L scylla.scylladb.com/node-type

Example expected output:

NAME                                              STATUS   ROLES    AGE   VERSION   NODE-TYPE
ip-192-168-xx-xx.eu-central-1.compute.internal    Ready    <none>   10m   v1.32.1   scylla
ip-192-168-xx-xx.eu-central-1.compute.internal    Ready    <none>   10m   v1.32.1   scylla
ip-192-168-xx-xx.eu-central-1.compute.internal    Ready    <none>   10m   v1.32.1   scylla
ip-192-168-xx-xx.eu-central-1.compute.internal    Ready    <none>   10m   v1.32.1   infra

Clean up¶

Delete the EKS cluster and all associated resources:

eksctl delete cluster --name="${EKS_CLUSTER_NAME}" --region="${AWS_REGION}" --force --disable-nodegroup-eviction

Next steps¶

  • Follow the Reference deployment: EKS for a complete ScyllaDB deployment on this cluster.

Was this page helpful?

PREVIOUS
Set up a GKE cluster for ScyllaDB
NEXT
Set up an OKE cluster for ScyllaDB
  • Create an issue
  • Edit this page

On this page

  • Set up an EKS cluster for ScyllaDB
    • Prerequisites
    • Set environment variables
    • Create a temporary directory
    • Create the eksctl cluster configuration
    • Create the EKS cluster
    • Clean up
    • Next steps
ScyllaDB Operator
Search Ask AI
  • master
    • master
    • v1.21
    • v1.20
    • v1.19
    • v1.18
  • Get Started
    • What Is ScyllaDB Operator?
    • ScyllaDB Concepts on Kubernetes
  • Install Operator
    • Provision infrastructure
      • Set up a GKE cluster for ScyllaDB
      • Set up an EKS cluster for ScyllaDB
      • Set up an OKE cluster for ScyllaDB
      • Set up an OpenShift cluster for ScyllaDB
    • Install with GitOps
    • Install with Helm
    • Install on OpenShift
  • Deploy ScyllaDB
    • Before you deploy
      • Set up dedicated node pools
      • Configure CPU pinning
      • Configure nodes
      • Configure ScyllaDB Operator
    • Deploy your first cluster
    • Reference deployments
      • Reference deployment: GKE
      • Reference deployment: EKS
      • Reference deployment: OKE
      • Reference deployment: OpenShift
    • Install ScyllaDB Manager
    • Set up networking
      • Configure external access
      • IPv6 networking
        • Getting started with IPv6 networking
        • Configure dual-stack networking
        • Configure IPv6-only networking
        • Migrate clusters to IPv6
        • Troubleshoot IPv6 networking issues
        • IPv6 networking concepts
    • Set up monitoring
      • Set up ScyllaDB Monitoring
      • Set up ScyllaDB Monitoring on OpenShift
      • Expose Grafana
    • Production checklist
  • Connect Your App
    • Connect via CQL
    • Alternator (DynamoDB API)
    • Discovery endpoint
  • Understand
    • Storage
    • Tuning
    • ScyllaDB Manager
    • Networking
    • ScyllaDB Monitoring overview
    • Bootstrap synchronisation
    • Automatic data cleanup
    • Sidecar and pod anatomy
    • Ignition
    • Pod disruption budgets
    • Security
    • StatefulSets and racks
  • Operate
    • Scale, add, remove racks
    • Replace nodes
    • Expand storage volumes
    • Use maintenance mode
    • Back up and restore
    • Restore from backup
    • Perform a rolling restart
    • Migrate a rack to a new node pool
    • Pass additional ScyllaDB arguments
    • Configure precomputed IO properties
  • Upgrade
    • Upgrading ScyllaDB Operator
    • Upgrading ScyllaDB clusters
  • Troubleshoot
    • Investigate pod restarts
    • Change log level on a live cluster
    • Recover from a failed node replace
    • Troubleshoot performance
    • Collect debugging information
      • Collect data with must-gather
      • must-gather contents
      • Query system tables for debugging
    • Collect core dumps
  • Reference
    • API Reference
      • scylla.scylladb.com
        • NodeConfig (scylla.scylladb.com/v1alpha1)
        • RemoteKubernetesCluster (scylla.scylladb.com/v1alpha1)
        • RemoteOwner (scylla.scylladb.com/v1alpha1)
        • ScyllaCluster (scylla.scylladb.com/v1)
        • ScyllaDBCluster (scylla.scylladb.com/v1alpha1)
        • ScyllaDBDatacenterNodesStatusReport (scylla.scylladb.com/v1alpha1)
        • ScyllaDBDatacenter (scylla.scylladb.com/v1alpha1)
        • ScyllaDBManagerClusterRegistration (scylla.scylladb.com/v1alpha1)
        • ScyllaDBManagerTask (scylla.scylladb.com/v1alpha1)
        • ScyllaDBMonitoring (scylla.scylladb.com/v1alpha1)
        • ScyllaOperatorConfig (scylla.scylladb.com/v1alpha1)
    • Feature gates
    • IPv6 configuration reference
    • Releases
    • Known issues
    • Conditions reference
    • nodetool alternatives
  • Contributing to ScyllaDB Operator
Docs Tutorials University Contact Us About Us
© 2026, ScyllaDB. All rights reserved. | Terms of Service | Privacy Policy | ScyllaDB, and ScyllaDB Cloud, are registered trademarks of ScyllaDB, Inc.
Last updated on 22 May 2026.
Powered by Sphinx 9.1.0 & ScyllaDB Theme 1.9.2