1什么是K8ssandra?特征。针对Cassandra的优势,我们经常需要使用云上的服务,所以需要将Cassandra部署到K8s上,也就是K8ssandra。K8ssandra不仅帮助我们在Kubernetes上快速可靠地部署Cassandra,还提供了监控、备份、同步、访问等诸多组件,这些都是Production-Ready产品不可或缺的。K8ssandra的组件架构图如下:Cass-operator:保证整个集群的正常运行;Reaper:保证一致性的同步工具;Medusa:数据备份工具,支持S3、GCPCloudStorage等;Stargate:提供数据访问的API;Prometheus+Grafana:云原生的通用监控组件。2安装K8ssandra2.1安装Kubenetes如何在Ubuntu上通过Minikube快速启动一个Kubernetes,在《服务网格Istio入门-详细记录Kubernetes安装Istio并使用》一文中有详细介绍,这里不再赘述。为了更好的兼容性,我们指定了Kubernetes的版本。命令如下:minikubestart--driver=none--kubernetes-version=v1.19.13因为我们需要使用PVC,所以我们创建一个StorageClass:$kubectlapply-fhttps://raw.githubusercontent.com/rancher/local-path-provisioner/master/deploy/local-path-storage.yaml2.2安装helm3,我们需要使用Helm来部署K8ssandra。下载Helm3如下:#下载安装包curl-lohttps://get.helm.sh/helm-v3.7.0-linux-amd64.tar.gz#解压tar-zxvfhelm-v3.7.0-linux-amd64.tar.gz#移动到bin目录mvlinux-amd64/helm/usr/local/bin/helm添加Helm仓库:helmrepoaddk8ssandrahttps://helm.k8ssandra.io/stable$helmrepolistNAMEURLk8ssandrahttps://helm.k8ssandra.io/stabletraefikhttps://helm.traefik.io/traefik找到K8ssandra相关包:$helmsearchrepok8ssandraNAMECHARTVERSIONAPPVERSIONDESCRIPTIONk8ssandra/k8ssandra1.3.1提供并配置一个实例en...k8ssandra/k8ssandra-common0.28.4包含man使用的函数的帮助程序库...k8ssandra/k8ssandra-operator0.31.01.0.0Kubernetesoperator处理提供...k8ssandra/backup0.26.0创建CassandraBackup自定义资源insta...k8ssandra/cass-operator0.31.01.8.0处理规定的Kubernetes操作员...k8ssandra/medusa-operator0.30.10.1.0安装和配置美杜莎操作员...k8ssandra/reaper-operator0.32.10.1.0为...k8ssandra/restore配置和安装ReaperOperator0.27.1创建一个CassandraRestore自定义资源安装...我们安装k8ssandra/k8ssandra就可以了2.3用Helm安装K8ssandraHelm是Chart+Value的管理方式,我们准备一个yaml文件(k8ssandra-values.yaml)放一些变量:cassandra:version:"4.0.0"cassandraLibDirVolume:storageClass:local-pathsize:5GiallowMultipleNodesPerWorker:真实堆:大小:1GnewGenSize:1G资源:请求:cpu:1000m内存:2Gi限制:cpu:1000m内存:2Gi数据中心:-名称:dc1大小:1个机架:-名称:默认k??ube-prometheus-stack:grafana:adminUser:adminadminPassword:admin123stargate:enabled:truereplicas:1heapMB:256cpuReqMillicores:200cpuLimMillicores:1000安装K8ssandra:$helminstall-fk8ssandra-values.yamlk8ssandrak8ssandra/k8ssandraNAME:k8ssandra:Thu1Sep30:20:492021NAMESPACE:defaultSTATUS:deployedREVISION:1做一些必要的检查如下:$helmlistNAMENAMESPACEREVISIONUPDATEDSTATUSCHARTAPPVERSIONk8ssandradefault12021-09-3021:20:49.409672869+0800CST已部署k8ssandra-1.3.1$kubectlgetcassandradatacentersNAMEAGEdc14m34s$kubectldescribeCassandraDataCenterdc1|grep"CassandraOperatorProgress:"查看ReadCassandra:OperatorProgress获取K8ssandra超级用户的用户名和密码$kubectlgetsecretk8ssandra-superuser-ojsonpath="{.data.username}"|base64——解码;echok8ssandra-superuser$kubectl获取秘密k8ssandra-superuser-ojsonpath="{.data.password}"|base64——解码;echoTNE5xOk45C1aQsj29qxw2.4添加节点我们创建更多的Cassandra节点以实现高可用和容量,直接修改k8ssandra-values.yaml如下:cassandra:version:"4.0.0"cassandraLibDirVolume:storageClass:local-pathsize:5GiallowMultipleNodesPerWorker:trueheap:大小:1GnewGenSize:1G资源:请求:cpu:1000m内存:2Gi限制:cpu:1000m内存:2Gi数据中心:-名称:dc1大小:3个机架:-名称:机架1-名称:机架s2-name:racks3kube-prometheus-stack:grafana:adminUser:adminadminPassword:admin123stargate:enabled:truereplicas:1heapMB:256cpuReqMillicores:200cpuLimMillicores:1000修改后升级配置:$helmupgrade-fvaluek8ss.yamlk8ssandrak8ssandra/k8ssandraRelease"k8ssandra"已升级。HappyHelming!NAME:k8ssandraLASTDEPLOYED:FriOct100:40:082021NAMESPACE:defaultSTATUS:deployedREVISION:2查看Kubernetes的相关资源:3查看我们暴露Grafana的监控服务看一下:kubectlexposedeploymentk8ssandra-grafana--type=NodePort--name=grafana-out找到对应的NodePort端口30348,访问:http://外网IP:30348账号:admin/admin123界面如下,提供好的监控界面:4总结k8ssandra是真的一个不错的开源项目,后面会介绍在开发中如何通过K8ssandra使用Cassandra。请查看代码:https://github.com/LarryDpk/p...
