Cloud provider agnostic management
Managing storage layer for any stateful application on Kubernetes is hard.
Every stateful application (like a database or search engine) requires careful administration adhering to best practices.
SearchStack attempts to make deploying and managing production grade search applications easy.
Cons: No fault tolerance
Pros: Cheap; Support for Snapshots; Simple
Cons: Slower I/O
How: Neither of EBS or PD support ReadWriteMany. In order to leverage them, we can either (1) manually attach an EBS/PD to the nodes and use HostPath with ReadWriteMany, or (2) Setup an NFS server (with Rook) backed by the EBS/PD and use this in ReadWriteMany mode. The example below demonstrates the latter.
If every node has an additional SSD attached as a block device, then we can setup a distributed filesystem using them using Ceph (with Rook). This is a very performant solution. However, production maintenance would require devops engineers to learn some ceph tools. We’ll add a guide for this solution shortly.
Master version: 1.13.6-gke-5
Createbutton to bootstrap this cluster.
kubectlon your laptop. Do an OAuth based login for your gcloud CLI.
Setup kubectl config using your project ID:
$ gcloud container clusters get-credentials my-search-stack --zone us-central1-a --project <project-id>
Create a Persistent Disk:
$ gcloud compute disks create solr-pd --zone us-central1-a --size=200GB
Check all nodes are ready:
$ kubectl get nodes
$ git clone https://github.com/searchstackio/searchstack
$ cd searchstack
$ kubectl apply -f rook-nfs-gcloud.yml
$ kubectl apply -f zk.yml -f solr.yml
Wait until all the pods are Running:
$ kubectl get pods --all-namespaces
If you see all your pods running, congratulations! You can check your Solr admin UI using a proxy:
$kubectl port-forward pod/solr-0 8983:8983
Open http://localhost:8983/solr on your browser.