This guide is intended for readers that are familiar with using Kubernetes and understand the purpose of an operator. Additional deployment methods are available in the Deploy SingleStore DB guide.
In this tutorial, you will deploy a cluster in a Kubernetes environment using a Kubernetes operator. This operator allows you to easily resize clusters, replace failing nodes, and upgrade to newer versions of SingleStore DB seamlessly. And like other Kubernetes operators, you can use it to deploy clusters easily in many different environments and platforms using Red Hat OpenShift.
The MemSQL Operator is also certified to run on the various Red Hat OpenShift platforms, so it will work natively with the OpenShift UI portal and other OpenShift management tools. It can also be downloaded directly from Docker Hub when referenced in the MemSQL Operator deployment file. The official Docker Hub page for MemSQL (now SingleStore) is hub.docker.com/u/memsql.
A four-node cluster is the minimal recommended cluster size for showcasing SingleStore DB as a distributed, highly-available database; however, you can use the procedures in this tutorial to scale out to additional nodes for increased performance over large data sets or to handle higher concurrency loads. Refer to Distributed Architecture to learn more about SingleStore DB’s design principles and topology concepts.
This tutorial assumes you have a basic knowledge of containers and Kubernetes concepts such as Objects, Pods, PersistentVolumes, and so on. In addition, some of the use cases for operators are mentioned in this tutorial, but you should read the CoreOS documentation for a more in-depth explanation of what they are and why they are useful.
Follow these instructions to install
kubectl on the host used to control and manage your cluster.
Cluster deployments must be on hosts that satisfy SingleStore’s hardware and software requirements. Specifically, the following requirements must be met on all hosts:
- Red Hat OpenShift Container Platform 4.x+
- Kubernetes versions 1.12 through 1.19
- Physical or virtual machines with the following:
- At least four CPU cores and eight GB of RAM per machine (8 vCPU and 32 GB of RAM is recommended for leaf nodes to align with license unit calculations)
- Running Linux kernel 2.6.32 or later
- Each SingleStore DB Pod needs to be able to communicate with other SingleStore DB Pods in the same cluster over port 3306
- The Kubernetes worker nodes/host systems must meet the specified system requirements as outlined in our System Requirements documentation.
Refer to Set System Requirements for more information on how to configure hosts with a Kubernetes DaemonSet.
Consideration should be given to future expansion needs. We recommend ensuring that
allowVolumeExpansion is set to
true to enable future storage size increases. Refer to the Kubernetes documentation for more information.
Docker Container Repository (Optional)
If your container registry is internal and you cannot access Docker Hub, you can pre-load the following images into your local container repository.