• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

关于java:K8ssandra入门详细记录在Linux上部署K8ssandra到Kubernetes

java 搞代码 4年前 (2022-01-27) 29次浏览 已收录 0个评论
文章目录[隐藏]

1 什么是K8ssandra

Cassandra是一款十分优良的开源的分布式NoSQL数据库,被许多优良的大公司采纳,具备高可用、弹性扩大、性能好等特点。

正应Cassandra的劣势,咱们常常须要在云上服务应用,则须要部署Cassandra到K8s上,这就有了K8ssandra。K8ssandra不仅帮忙咱们能够疾速牢靠地在Kubernetes上部署Cassandra,同时提供了许多组件,如监控、备份、同步、拜访等。而这些都是一个Production-Ready的产品不可或缺的。

K8ssandra的组件架构图如下:

  • Cass-operator:保障整个集群失常运行;
  • Reaper:保障一致性的同步工具;
  • Medusa:数据备份工具,反对S3、GCP Cloud Storage等;
  • Stargate:对数据拜访提供API;
  • Prometheus+Grafana:云原生的罕用监控组件。

2 装置K8ssandra

2.1 装置Kubenetes

如何在Ubuntu上通过Minikube疾速启动一个Kubernetes,在文章《服务网格Istio入门-具体记录Kubernetes装置Istio并应用》曾经有具体的介绍,这里不再赘述。为了更好的兼容性,咱们指定了Kubernetes的版本,命令如下:

<code class="bash">minikube start --driver=none --kubernetes-version=v1.19.13

因为要用到PVC,咱们创立一个StorageClass:

<code class="bash">$ kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/master/deploy/local-path-storage.yaml

2.2 装置helm3

咱们须要应用Helm来部署K8ssandra,下载Helm3如下:

<code class="bash"># 下载安装包
curl -LO https://get.helm.sh/helm-v3.7.0-linux-amd64.tar.gz
# 解压
tar -zxvf helm-v3.7.0-linux-amd64.tar.gz
# 挪动到bin目录
mv linux-amd64/helm /usr/local/bin/helm

增加Helm的仓库:

<code class="bash">helm repo add k8ssandra https://helm.k8ssandra.io/stable

$ helm repo list
NAME            URL                             
k8ssandra       https://helm.k8ssandra.io/stable
traefik         https://helm.traefik.io/traefik 

查找一下K8ssandra相干的包:

<code class="bash">$ helm search repo k8ssandra
NAME                            CHART VERSION   APP VERSION     DESCRIPTION                                       
k8ssandra/k8ssandra             1.3.1                           Provisions and configures an instance of the en...
k8ssandra/k8ssandra-common      0.28.4                          Helper library containing functions used by man...
k8ssandra/k8ssandra-operator    0.31.0          1.0.0           Kubernetes operator which handles the provision...
k8ssandra/backup                0.26.0                          Creates a CassandraBackup custom resource insta...
k8ssandra/cass-operator         0.31.0          1.8.0           Kubernetes operator which handles the provision...
k8ssandra/medusa-operator       0.30.1          0.1.0           Installs and configures the Medusa Operator for...
k8ssandra/reaper-operator       0.32.1          0.1.0           Configures and installs the Reaper Operator for...
k8ssandra/restore               0.27.1                          Creates a CassandraRestore custom resource inst...                       

咱们装置k8ssandra/k8ssandra就能够了。

2.3 用Helm装置K8ssandra

Helm是一个Chart+Value的治理形式,咱们筹备一个yaml文件(k8ssandra-values.yaml)来放一些变量:

<code class="yaml">cassandra:
  version: "4.0.0"
  cassandraLibDirVolume:
    storageClass: local-path
    size: 5Gi
  allowMultipleNodesPerWorker: true
  heap:
    size: 1G
    newGenSize: 1G
  resources:
    requests:
      cpu: 1000m
      memory: 2Gi
    limits:
      cpu: 1000m
      memory: 2Gi
  datacenters:
  - name: dc1
    size: 1
    racks:
    - name: default 
kube-prometheus-stack:
  grafana:
    adminUser: admin
    adminPassword: admin123 
stargate:
  enabled: true
  replicas: 1
  heapMB: 256
  cpuReqMillicores: 200
  cpuLimMillicores: 1000

装置K8ssandra:

<code class="bash">$ helm install -f k8ssandra-values.yaml k8ssandra k8ssandra/k8ssandra
NAME: k8ssandra
LAST DEPLOYED: Thu Sep 30 21:20:49 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1

做一些必要的查看如下:

<code class="bash">$ helm list
NAME            NAMESPACE       REVISION        UPDATED                                 STATUS          CHART           APP VERSION
k8ssandra       default         1               2021-09-30 21:20:49.409672869 +0800 CST deployed        k8ssandra-1.3.1            

$ kubectl get cassandradatacenters
NAME   AGE
dc1    4m34s

$ kubectl describe CassandraDataCenter dc1 | grep "Cassandra Operator Progress:"
  Cassandra Operator Progress:  Ready

检查一下Pod和Service:

获取K8ssandra超级用户的用户名和明码

<code class="bash">$ kubectl get secret k8ssandra-superuser -o jsonpath="{.data.username}" | base64 --decode ; echo
k8ssandra-superuser

$ kubectl get secret k8ssandra-superuser -o jsonpath="{.data.password}" | base64 --decode ; echo
TNE5xOk45C1aQsj29qxw

2.4 减少节点

咱们为了高可用和容量,创立更多的Cassandra Node,间接批改k8ssandra-values.yaml如下:

<code class="bash">cassandra:
  version: "4.0.0"
  cassandraLibDirVolume:
    storageClass: local-path
    size: 5Gi
  allowMultipleNodesPerWorker: true
  heap:
    size: 1G
    newGenSize: 1G
  resources:
    requests:
      cpu: 1000m
      memory: 2Gi
    limits:
      cpu: 1000m
      memory: 2Gi
  datacenters:
  - name: dc1
    size: 3
    racks:
    - name: racks1
    - name: racks2
    - name: racks3
kube-prometheus-stack:
  grafana:
    adminUser: admin
    adminPassword: admin123 
stargate:
  enabled: true
  replicas: 1
  heapMB: 256
  cpuReqMillicores: 200
  cpuLimMillicores: 1000

批改完之后,降级配置:

<code class="bash">$ helm upgrade -f k8ssandra-values.yaml k8ssandra k8ssandra/k8ssandra
Release "k8ssandra" has been upgraded. Happy Helming!
NAME: k8ssandra
LAST DEPLOYED: Fri Oct  1 00:40:08 2021
NAMESPACE: default
STATUS: deployed
REVISION: 2

查看Kubernetes的相干资源:

3 查看监控

咱们对外裸露Grafana服务来看看:

<code class="bash">kubectl expose deployment k8ssandra-grafana --type=NodePort --name=grafana-out

找到对应的NodePort的端口30348,拜访:http://外网IP:30348

账号:admin/admin123

界面如下,提供良好的监控界面:

4 总结

K8ssandra真是一个不错的开源我的项目,后续再介绍如何在开发中通过K8ssandra应用Cassandra吧。

代码请查看:https://github.com/LarryDpk/p…


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:关于java:K8ssandra入门详细记录在Linux上部署K8ssandra到Kubernetes

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址