VoltDB Kubernetes Administrator's Guide


VoltDB Home » Documentation » VoltDB Kubernetes Administrator's Guide

VoltDB Kubernetes Administrator's Guide


This document is published under copyright by Volt Active Data, Inc. All Rights Reserved.

The software described in this document is furnished under a license by Volt Active Data, Inc. Your rights to access and use VoltDB features are defined by the license you received when you acquired the software.

The VoltDB client libraries, for accessing VoltDB databases programmatically, are licensed separately under the MIT license.

Volt Active Data, VoltDB, and Active(N) are registered trademarks of Volt Active Data, Inc.

VoltDB software is protected by U.S. Patent Nos. 9,600,514, 9,639,571, 10,067,999, 10,176,240, and 10,268,707. Other patents pending.


This book explains how to create and manage VoltDB database clusters using Kubernetes.

Table of Contents

1. Structure of This Book
2. Related Documents
1. Introduction
1.1. Overview: Running VoltDB in Kubernetes
1.2. Setting Up Your Kubernetes Environment
1.2.1. Product Requirements
1.2.2. Configuring the Host Environment and Accounts
1.2.3. Configuring the Client
1.2.4. Granting Kubernetes Access to the Docker Repository
2. Configuring the VoltDB Database Cluster
2.1. Using Helm Properties to Configure Your Database
2.2. Configuring the Cluster
2.3. Configuring the Database
2.3.1. Configuring High Availability (K-Safety and Placement Groups)
2.3.2. Configuring Command Logging
2.3.3. Configuring Export
2.4. Configuring Logging
3. Starting and Stopping the Database
3.1. Starting the Cluster for the First Time
3.2. Stopping and Restarting the Cluster
3.3. Resizing the Cluster with Elastic Scaling
3.3.1. Increasing the Size of the Cluster
3.3.2. Decreasing the Size of the Cluster
3.3.3. Autoscaling the Cluster
3.4. Pausing and Resuming the Cluster
3.5. Starting More than One Cluster Within a Namespace
3.6. Stopping, Restarting, and Shutting Down Multiple Clusters Within a Namespace
4. Managing VoltDB Databases in Kubernetes
4.1. Managing the Cluster Using kubectl and helm
4.2. Managing the Database Using voltadmin and sqlcmd
4.2.1. Accessing the Database Interactively
4.2.2. Accessing the Database Programmatically
5. Updates and Upgrades
5.1. Updating the Database Schema
5.2. Updating the Database Configuration
5.2.1. Changing Database Properties on the Running Database
5.2.2. Changing Database Properties That Require a Restart
5.2.3. Changing Cluster Properties
5.3. Upgrading the VoltDB Software and Helm Charts
5.3.1. Updating Your Helm Repository
5.3.2. Updating the Custom Resource Definition (CRD)
5.3.3. Upgrading the VoltDB Operator and Software
5.3.4. Using In-Service Upgrade to Update the VoltDB Software
5.3.5. Updating VoltDB for XDCR Clusters
6. Monitoring VoltDB Databases in Kubernetes
6.1. Using Prometheus to Monitor VoltDB
7. Configuring Security in Kubernetes
7.1. Configuring User Accounts and Roles Within The Database
7.2. Configuring TLS/SSL
7.2.1. Configuring TLS/SSL With YAML Properties
7.2.2. Using Kubernetes Secrets to Store and Reuse TLS/SSL Information
7.2.3. Using Kubernetes cert-manager to Store TLS/SSL Certificates
7.2.4. Configuring TLS/SSL for VMC
7.3. Updating TLS/SSL Security Certificates
8. Cross Datacenter Replication in Kubernetes
8.1. Requirements for XDCR in Kubernetes
8.2. Choosing How to Establish a Network Mesh
8.3. Common XDCR Properties
8.4. Configuring XDCR in Local Namespaces
8.5. Configuring XDCR Using Load Balancers
8.5.1. Separate Load Balancers For Each Node (cluster.serviceSpec.perpod)
8.5.2. Single Load Balancer For Discovery with Virtual Networking Peering (cluster.serviceSpec.dr)
8.6. Configuring XDCR Using Node Ports for Replication
8.7. Configuring XDCR Using Network Services
9. Managing XDCR Clusters in Kubernetes
9.1. Removing a Cluster Temporarily
9.2. Removing a Cluster Permanently
9.3. Resetting XDCR When a Cluster Leaves Unexpectedly
9.4. Rejoining an XDCR Cluster That Was Previously Removed
A. Volt Diagnostics Tools
A.1. Starting and Stopping the Diagnostics Pod
A.1.1. Using the Diagnostics Pod With a Persistent Volume (PV)
A.1.2. Using the Diagnostic Tools Securely with TLS/SSL
A.2. Running the Diagnostic Tools
A.3. Diagnostic Tools
Collect (helm voltadmin collect) — Collects logs, configuration, and error files for all nodes of a VoltDB cluster.
Sqlcmd (ksqlcmd) — Executes queries and displays information about the database
B. VoltDB Helm Properties
B.1. How to Use the Properties
B.2. Top-Level Kubernetes Options
B.3. Kubernetes Cluster Startup Options
B.4. Network Options
B.5. VoltDB Database Startup Options
B.6. VoltDB Database Configuration Options
B.7. Operator Configuration Options
B.8. Metrics Configuration Options
B.9. Volt Management Center (VMC) Configuration Options

List of Figures

1.1. Kubernetes/VoltDB Architecture