The Couchbase on Kubernetes tutorial documents how to deploy Couchbase on Kubernetes. The following diagram provides a high level overview of the Couchbase on Kubernetes architecture.
The following components will be deployed to a Kubernetes cluster with minimal CPU and memory allocations to control cost:
- Couchbase community-4.5.1
The following features exist with this infrastructure:
- Use of official Couchbase Docker Image
- Clusterized Couchbase of 3 instances
- Automatic Self-healing of failing Pods
- Automatic Self-healing of failing Nodes
- Couchbase connectivity from outside of the Kubernetes
- No automatic Clustering: Clustering process is done manually at first startup.
- No automatic Scaling: Scaling of new instances needs generation of new deployments and services.
Couchbase can be installed either directly on the OS, or using Docker containers to prepare the cluster. There are existing solutions of clustering Couchbase using Docker containers, but they lack some of the features that containers can bring such as self-healing in case of pod or node failure.
This tutorial is designed so that the entire flow of clustering can be seen as step-by-step process.
The architecture is a static cluster of 3 instances of Couchbase, using the official docker image of Couchbase. The cluster is also designed so that it can be accessed by a service that resides outside of the Kubernetes cluster.
It is designed as a tutorial guideline, not for production usage.
Kubernetes can ease the deployment and management of Couchbase by leveraging some of Kubernetes advanced features including:
In this tutorial we haven't used support for Stateful Applications or Dynamic Storage Provision, that could enable automatic Scaling:
- Prerequisites
- Install Client Tools
- Provision The Kubernetes Infrastructure
- Provision The Couchbase Infrastructure
Run the clean-up
bash script to remove all compute resources created by this tutorial:
bash clean-up
A big shout-out to Kelsey Hightower, this tutorial is inspired by the nomad-on-kubernetes repo.