Installation On Kubernetes
To install BanyanDB on Kubernetes, you can use our Helm chart, which simplifies the deployment process. You can find detailed installation instructions in our official documentation.
This step-by-step guide assumes you have a basic understanding of Kubernetes and Helm, the package manager for Kubernetes. If you’re new to Helm, you might want to familiarize yourself with Helm basics before proceeding.
Prerequisites
Before we begin, ensure you have the following:
- A Kubernetes Cluster: You can use Minikube for a local setup, or any cloud provider like AWS, GCP, or Azure that supports Kubernetes.
- Helm 3: Ensure Helm 3 is installed and configured on your machine. You can download it from Helm’s official website.
Step 1: Configure Helm to Use OCI
Since the BanyanDB Helm chart is hosted as an OCI chart in Docker Hub, you need to ensure your Helm is configured to handle OCI artifacts.
helm registry login registry-1.docker.io
You will be prompted to enter your Docker Hub username and password. This step is necessary to pull Helm charts from Docker Hub.
Step 2: Install BanyanDB Using Helm
- Create a namespace for BanyanDB:
kubectl create ns sw
Standalone Mode
- This command installs the BanyanDB Helm chart with the specified version and image tag in the
sw
namespace instandalone mode
. You can customize the installation by setting additional values in the--set
flag.
helm install banyandb \
oci://registry-1.docker.io/apache/skywalking-banyandb-helm \
--version 0.3.0 \
--set image.tag=0.7.0 \
--set standalone.enabled=true \
--set cluster.enabled=false \
--set etcd.enabled=false \
--set storage.enabled=true \
-n sw
- Wait for the installation to complete. You can check the status of the pods using the following command:
kubectl get pod -n sw -w
NAME READY STATUS RESTARTS AGE
banyandb-0 1/1 Running 0 71s
- You can check the storage using the following command:
kubectl get pvc -n sw
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE
data-banyandb-0 Bound pvc-a15e18bf-0423-4ff7-8a09-c68686c3c880 50Gi RWO standard <unset> 2m12s
meta-banyandb-0 Bound pvc-548cfe75-8438-4fe2-bce5-66cd7fda4ffc 5Gi RWO standard <unset> 2m12s
The default storage set the stream
and measure
data to the same PVC data-banyandb
and the meta
data to the PVC meta-banyandb
.
- You can check the services using the following command:
kubectl get svc -n sw
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
banyandb-grpc ClusterIP 10.96.217.34 <none> 17912/TCP 12m
banyandb-http LoadBalancer 10.96.90.175 <pending> 17913:30325/TCP 12m
The BanyanDB server would be listening on the 0.0.0.0:17912
to access gRPC requests. if no errors occurred.
At the same time, the BanyanDB server would be listening on the 0.0.0.0:17913
to access HTTP requests. if no errors occurred. The HTTP server is used for CLI and Web UI.
Cluster Mode
- This command installs the BanyanDB Helm chart with the specified version and image tag in the
sw
namespace incluster mode
. You can customize the other additional values in the--set
flag.
helm install banyandb \
oci://registry-1.docker.io/apache/skywalking-banyandb-helm \
--version 0.3.0 \
--set image.tag=0.7.0 \
--set standalone.enabled=false \
--set cluster.enabled=true \
--set etcd.enabled=true \
--set storage.enabled=true \
--set storage.persistentVolumeClaims[0].mountTargets[0]=stream \
--set storage.persistentVolumeClaims[0].claimName=stream-data\
--set storage.persistentVolumeClaims[0].size=10Gi\
--set storage.persistentVolumeClaims[0].accessModes[0]=ReadWriteOnce\
--set persistentVolumeClaims[0].volumeMode=Filesystem\
--set storage.persistentVolumeClaims[1].mountTargets[0]=measure \
--set storage.persistentVolumeClaims[1].claimName=measure-data\
--set storage.persistentVolumeClaims[1].size=10Gi\
--set storage.persistentVolumeClaims[1].accessModes[0]=ReadWriteOnce\
--set persistentVolumeClaims[1].volumeMode=Filesystem\
-n sw
- Wait for the installation to complete. You can check the status of the pods using the following command:
kubectl get pod -n sw -w
NAME READY STATUS RESTARTS AGE
banyandb-0 1/1 Running 3 (6m38s ago) 7m7s
banyandb-1 1/1 Running 0 5m6s
banyandb-2 1/1 Running 0 4m6s
banyandb-885bc59d4-669lh 1/1 Running 3 (6m35s ago) 7m7s
banyandb-885bc59d4-dd4j7 1/1 Running 3 (6m36s ago) 7m7s
banyandb-etcd-0 1/1 Running 0 7m7s
In cluster model the default cluster.liaison.replicas
is 2, and the default cluster.data.replicas
is 3. The default etcd.replicas
is 1.
- You can check the storage using the following command:
kubectl get pvc -n sw
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE
data-banyandb-etcd-0 Bound pvc-b0139dc4-01ed-423d-8f00-13376ecad015 8Gi RWO standard <unset> 13m
measure-data-banyandb-0 Bound pvc-471758b8-1dc9-4508-85cb-34f2e53ee4a0 10Gi RWO standard <unset> 13m
measure-data-banyandb-1 Bound pvc-a95f7196-b55c-4030-a99a-96476716c3f4 10Gi RWO standard <unset> 11m
measure-data-banyandb-2 Bound pvc-29983adc-ee40-45b5-944c-49379a13384c 10Gi RWO standard <unset> 10m
stream-data-banyandb-0 Bound pvc-60f2f332-cc07-4a3d-aad7-6c7866cfb739 10Gi RWO standard <unset> 13m
stream-data-banyandb-1 Bound pvc-66dad00a-2c16-45b3-8d0a-dbf939d479ac 10Gi RWO standard <unset> 11m
stream-data-banyandb-2 Bound pvc-bfdfde2d-7e78-4e9f-b781-949963e729f3 10Gi RWO standard <unset> 10m
The command creates the PVCs for the stream
and measure
data in the different PVCs. You can customize them by setting the storage.persistentVolumeClaims
in the --set
flag.
In the cluster model, BanyanDB leverage the etcd
to manage the metadata.
- You can check the services using the following command:
kubectl get svc -n sw
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
banyandb-etcd ClusterIP 10.96.33.132 <none> 2379/TCP,2380/TCP 5m
banyandb-etcd-headless ClusterIP None <none> 2379/TCP,2380/TCP 5m
banyandb-grpc ClusterIP 10.96.152.152 <none> 17912/TCP 5m
banyandb-http LoadBalancer 10.96.137.29 <pending> 17913:30899/TCP 5m
The BanyanDB server would be listening on the 0.0.0.0:17912
to access gRPC requests. if no errors occurred.
At the same time, the BanyanDB server would be listening on the 0.0.0.0:17913
to access HTTP requests. if no errors occurred. The HTTP server is used for CLI and Web UI.
Uninstall
- Uninstall BanyanDB using the following command:
helm uninstall banyandb -n sw
- If you want to delete the PVCs, you can use the following command: Note: This will delete all data stored in BanyanDB.
kubectl delete pvc --all -n sw