2.2. Configuring the Cluster

Documentation

VoltDB Home » Documentation » VoltDB Kubernetes Administrator's Guide

2.2. Configuring the Cluster

Many of the configuration options that are performed through hardware configuration, system commands or environment variables on traditional server platforms are now available through Helm properties. Most of these settings are listed in Section B.3, “Kubernetes Cluster Startup Options”.

Hardware Settings

Hardware settings, such as the number of processors and memory size, are defined as Kubernetes image resources through the Helm cluster.clusterSpec.resources property. Under resources, you can specify any of the YAML properties Kubernetes expects when configuring pods within a container. For example:

cluster:
  clusterSpec:
    resources:
      requests:
        cpu: 500m
        memory: 1000Mi
      limits:
        cpu: 500m
        memory: 1000Mi
System Settings

System settings that control process limits that are normally defined through environment variables can be set with the cluster.clusterSpec.env properties. For example, the following YAML increases the Java maximum heap size and disables the collection of JVM statistics:

cluster:
  clusterSpec:
    env:
      VOLTDB_HEAPMAX: 3072
      VOLTDB_OPTS: -XX:+PerfDisableSharedMem

Note

There are no Volt database or cluster properties specific to the server hardware architecture. However, when running Volt Active Data on ARM64 processors, your Kubernetes host provider may define certain Kubernetes attributes, such as taints, specific to ARM for which your Helm chart must make allowances. In this case, you can use the tolerations properties associated with the individual Volt services — including cluster.clusterSpec.tolerations, operator.tolerations, and vmc.tolerations — to provide the necessary accommodations.

One system setting that is not configurable through Kubernetes or Helm is whether the base platform has Transparent Huge Pages (THP) enabled or not. This is dependent of the memory management settings on the actual base hardware on which Kubernetes is hosted. Having THP enabled can cause problems with memory-intensive applications like VoltDB and it is strongly recommended that THP be disabled before starting your cluster. (See the section on Transparent Huge Pages in the VoltDB Administrator's Guide for an explanation of why this is an issue.)

If you are not managing the Kubernetes environment yourself or cannot get your provider to modify their environment, you will need to override VoltDB's warning about THP on startup by setting the cluster.clusterSpec.additionalArgs property to include the VoltDB start argument to disable the check for THP. For example:

cluster:
  clusterSpec:
    additionalStartArgs: 
      - "--ignore=thp"