Redis Cluster on Kubernetes
After setting up my Kubernetes cluster in my previous blog post, I decided to deploy a Redis cluster on it. It is surprisingly simple to do.
First we need to create a
ConfigMap with the following:
This configuration will run Redis clustered and with persistence turned on using AOF (see Redis Persistence for more info).
Place the above content in a file called
redis-config-map.yaml and create it on the cluster:
$ kubectl create -f redis-config-map.yaml
To run a Redis cluster on Kubernetes we will use a StatefulSet. Create a file called
redis-sts.yaml with the following:
What will happen here is that on 6 nodes of the cluster we will run a Redis instance. These instances will each use a separate clustered block storage device to store their AOF.
Go ahead and create the stateful sets as follows:
$ kubectl create -f redis-sts.yaml
With the stateful sets now created, let’s define the service we need. Create a file called
Redis-service.yaml with the following in it:
- port: 6379
- port: 16379
Create the service:
$ kubectl create -f redis-service.yaml
With the service created, we can now activate the Redis cluster:
Note that, to collect the
ClusterIP of each Redis instance, you must have
jq installed (see here).
Congratulations! You now have a Redis cluster up and running on your Kubernetes installation.