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 Deploy ScyllaDB Before you deploy Set up dedicated node pools

Caution

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

Set up dedicated node pools¶

ScyllaDB requires dedicated Kubernetes nodes to guarantee predictable performance. These nodes should not run any other workloads.

Why dedicate nodes to ScyllaDB¶

ScyllaDB is designed to consume all available CPU, memory, and I/O on its host. Sharing nodes with other workloads leads to:

  • Resource contention — noisy neighbours competing for CPU cycles and memory bandwidth cause unpredictable latency.

  • CPU pinning failures — the kubelet’s static CPU manager policy can only assign exclusive cores when the node is not overcommitted.

  • Incorrect performance tuning — NodeConfig tunes IRQ affinity, clocksource, and sysctls at the host level, affecting all Pods on the node.

Requirements¶

Dedicated ScyllaDB nodes must have:

  • Local NVMe storage — ScyllaDB stores data on local SSDs for maximum I/O performance. Use instance types with directly attached NVMe drives.

  • Sufficient CPU and memory — see the ScyllaDB system requirements for minimum and recommended specifications. Plan for at least 2 CPUs reserved for the OS, kubelet, and DaemonSets.

  • xfsprogs installed — NodeConfig formats local disks with XFS. The xfsprogs package must be available on the node OS image. Most managed Kubernetes distributions include it by default, but custom or minimal images may not.

Recommended instance types¶

Use n2-highmem or z3-highmem families with local SSDs. See GCE recommendations.

Use storage-optimized instances from the i family (e.g., i3en, i4i, i8g). See AWS recommendations.

Use DenseIO shapes. See OCI recommendations.

Instance type recommendations depend on the underlying cloud provider. Use the same instance families as the corresponding platform (e.g., i family on AWS for ROSA, n2-highmem on GCP for OSD). Configure node pools using MachineSets or MachinePools depending on your OpenShift variant.

Label the nodes¶

Apply the ScyllaDB node label so that Pod affinity rules can target these nodes:

kubectl label nodes <node-name> scylla.scylladb.com/node-type=scylla

When using managed Kubernetes services, apply the label at node pool creation time to avoid manual labeling:

gcloud container node-pools create flag:

--node-labels 'scylla.scylladb.com/node-type=scylla'

See the GKE cluster setup guide for a complete example.

eksctl create cluster configuration:

labels:
  scylla.scylladb.com/node-type: scylla

See the EKS cluster setup guide for a complete example.

oci ce node-pool create flag:

--initial-node-labels '[{"key": "scylla.scylladb.com/node-type", "value": "scylla"}]'

See the OKE cluster setup guide for a complete example.

Configure labels on your node pool using MachineSets or MachinePools depending on your OpenShift variant.

metadata:
  labels:
    scylla.scylladb.com/node-type: scylla

Taint the nodes¶

Apply a taint to prevent non-ScyllaDB workloads from being scheduled on the dedicated nodes:

kubectl taint nodes -l 'scylla.scylladb.com/node-type=scylla' \
  scylla-operator.scylladb.com/dedicated=scyllaclusters:NoSchedule --overwrite

The ScyllaCluster manifest must include a matching toleration, and the NodeConfig placement must tolerate the same taint. The reference deployments include both.

Note

The label scylla.scylladb.com/node-type: scylla and taint scylla-operator.scylladb.com/dedicated=scyllaclusters:NoSchedule are conventions used throughout the documentation and examples. You may use different values as long as you adjust all selectors, tolerations, and NodeConfig placements accordingly.

Verify the setup¶

# Check that nodes have the label
kubectl get nodes -l scylla.scylladb.com/node-type=scylla

# Verify the taint
kubectl get nodes -l scylla.scylladb.com/node-type=scylla \
  -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.spec.taints}{"\n"}{end}'

# After deploying, confirm ScyllaDB Pods run only on dedicated nodes
kubectl get pods -l scylla/cluster=scylladb -o wide

Platform-specific guides¶

For end-to-end node pool creation on a specific platform, see the platform-specific cluster setup guides.

Was this page helpful?

PREVIOUS
Before you deploy
NEXT
Configure CPU pinning
  • Create an issue
  • Edit this page

On this page

  • Set up dedicated node pools
    • Why dedicate nodes to ScyllaDB
    • Requirements
      • Recommended instance types
    • Label the nodes
    • Taint the nodes
    • Verify the setup
    • Platform-specific guides
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