技术基础 | 有关K8ssandra的那些事儿

 如果你对K8ssandra还感到比较陌生,这篇FAQ正是为你准备的

无论你是在哪儿看到的这篇文章(无论Github还是官方文档),你都可以向我们提出新的问题或对文章中提到的问题做出修正。作为一个开源项目,K8ssandra的用户社区是很欢迎各式各样的贡献的。


01 什么是K8ssandra?

K8ssandra是一个开源项目,这意味着社区中的每个人都可以使用、改进和享受这个项目。K8ssandra是运行在Kubernetes上的云原生的Apache Cassandra®发行版本。

与Cassandra一起包括在K8ssandra里的,还有一整套能使运维任务更加简单和自动化的工具,比如监测指标、反熵修复服务(anti-entropy services)以及备份恢复工具等。所有这些组件都会在K8ssandra安装过程中一同被安装并连接在一起,这样你的团队就不用再做那些冗杂的组件装配工作了。

 

02 好,那我应该怎么读“K8ssandra”?

你怎样读其实都可以,不过你可以考虑这种读法:“Kate” + “Sandra”。

 

03 K8ssandra包括了什么呢?

从一个纯组件的层面来看,K8ssandra将以下工具集成打包在了一起:

  • Apache Cassandra 3.11.7
  • 用于Apache Cassandra的Kubernetes Operator (cass-operator)
  • Reaper,也被称作Repair Web Interface
  • 用于备份恢复的Medusa
  • 集成了Prometheus的指标收集器(Metrics Collector),并通过预配置的Grafana监控图表提供可视化功能
  • 通过像是Traefik这样的Ingress解决方案给出的针对你的Kubernetes环境的连接模板

下面的示例图可以帮助你更好地理解:

除了以上这些组件,我们必须强调K8ssandra实际上是一个Cassandra+Kubernetes这两个用户社区的体验的集合。它将大家所需的一切打包,并让所有人自由使用。

 

04 我应该从何开始并如何安装K8ssandra?

这非常容易!你有几种选择可以安装K8ssandra,不过我们建议使用Helm命令行。

helm repo add k8ssandra https://helm.k8ssandra.io/
helm repo add traefik https://helm.traefik.io/traefik
helm repo update
helm install k8ssandra-tools k8ssandra/k8ssandra
helm install k8ssandra-cluster-a k8ssandra/k8ssandra-cluster

想要查看更多选择?请点击这里了解如何快速开始使用K8ssandra:

 

05 k8ssandra和k8ssandra-cluster实际上到底安装了什么东西?

参考前面的问题中提到的Helm命令行:

  • k8ssandra安装了用于Apache Cassandra的Kubernetes Operator (cass-operator),和Prometheus Operator。
  • k8ssandra-cluster安装了K8ssandra技术栈的实例:用于修复的reaper、用于备份恢复的medusa、Grafana Operator以及其它的实例。

安装了这些之后,所有的Kubernetes的pod都处于Ready(准备好)的状态,通过kubectl get pods你可以看到类似的输出:

NAME                                                              READY   STATUS      RESTARTS   AGE
cass-operator-65956c4f6d-f25nl                                    1/1     Running     0          10m
grafana-deployment-8467d8bc9d-czsg5                               1/1     Running     0          6m23s
k8ssandra-cluster-a-grafana-operator-k8ssandra-5bcb746b8d-4nlhz   1/1     Running     0          6m20s
k8ssandra-cluster-a-reaper-k8ssandra-6cf5b87b8f-vxrwj             1/1     Running     6          6m20s
k8ssandra-cluster-a-reaper-k8ssandra-schema-pjmv8                 0/1     Completed   5          6m20s
k8ssandra-cluster-a-reaper-operator-k8ssandra-55dc486998-f4r46    1/1     Running     2          6m20s
k8ssandra-dc1-default-sts-0                                       2/2     Running     0          10m
k8ssandra-tools-kube-prome-operator-6d57f758dd-7zd92              1/1     Running     0          10m
prometheus-k8ssandra-cluster-a-prometheus-k8ssandra-0             2/2     Running     1          10m

 

06 k8ssandra和k8ssandra-cluster需要被安装在某个特定的命名空间(namespace)中吗?

这两个chart都可以被安装在任意命名空间,不仅如此,它们还可以被安装在不同的命名空间。下面的示例代码展示了这点:

# Install k8ssandra-tool in the k8ssandra namespace
$ helm install k8ssandra-tools k8ssandra/k8ssandra -n k8ssandra --create-namespace

# Install k8ssandra in the k8ssandra-dev namespace
$ helm install dev-cluster k8ssandra/k8ssandra-cluster -n k8ssandra-dev --create-namespace

 

07 我可以安装多个k8ssandra的发行版本吗?

由于k8ssandra chart所安装的各种对象目前都是基于kubernetes集群范围所配置的,所以你应该只能安装一个版本。

 

08 我可以安装多个k8ssandra-cluster的发行版本吗?

可以,你可以安装多个k8ssandra-cluster的发行版本。因为grafana-operator的一个已知的issue,每一个发行版本应该被安装在不同的命名空间下。

 

09 什么是cass-operator?

用于Apache Cassandra的Kubernetes Operator——即cass-operator——是联结Kubernetes和Cassandra的最关键的组件。

在过去的两年多,社区一直把主要的精力首先放在Cassandra的operators上。cass-operator在Kubernetes的控制平面和Cassandra集群的实际操作之间提供一个转换层。

最近,Apache Cassandra项目对使用同一种operator达成了一致——这个operator就是cass-operator。Orange公司开发的CassKop operator中有一些非常好的贡献,这些都将会被合并到DataStax的operator中,而最终的版本会被合并到Apache项目中。

这是实际生产中的知识经验又转化成代码的最佳例子。对cass-operator有所贡献的社区成员每天都在Kubernetes上大量运行着Cassandra。

 

10 K8ssandra通过cass-operator安装和管理的是什么版本的Cassandra?

目前是Apache Cassandra 3.11.7。

 

11 什么是Reaper?

Reaper是在Cassandra集群中用于管理反熵修复(anti-entropy repair)重要的维护任务的工具。我们也将Reaper叫做Repair Web Interface(修复功能的网络交互界面)。Reaper最初是由Spotify构建的,之后由The Last Pickle接手维护。

如果你要在一群Cassandra DBA中坐下来和他们谈论他们所做的事,他们很可能谈很多的就是运行修复功能。这是运维中非常重要的部分,因为它让数据保持一致性,即使是出现像是节点故障或网络分裂(network partition)这样的不可避免的问题。

在K8ssandra中,Reaper是自动运行的。由于Reaper是为网站可靠性工程师们(SREs)建构的,它包括了一组很好的预制监测指标,以便工程师们验证一切都运行良好。

 

12 什么是Medusa?

Medusa为Cassandra的数据提供备份恢复功能。这个项目最初也是由Spotify发起的。Medusa不仅帮助协调备份恢复任务,还会管理数据的存储位置。

Medusa的初始版本会将备份数据存储在像是AWS S3 buckets这样云对象数据存储(cloud object storage)中,更多的配置选项也已经在开发中。K8ssandra提供了这个备份恢复功能,帮助你在不可避免的现实问题发生之时能够找回Cassandra数据。

 

13 我如何能从Kubernetes集群之外的环境中访问Kubernetes集群上运行的资源?

K8ssandra提供预配置的Traefik Ingress集成。

Traefik是一个现代的反向代理和负载均衡器,它能简化微服务的部署过程。Traefik与你已有的基础架构组件相集成,并且能自动且动态地进行自我配置。Traefik负责进阶的ingress部署,包括含有SNI的TCP和UDP的mTLS。

Operator通过Kubernetes Ingress对象或更具体的自定义资源的定义(Custom Resource Definitions)来定义去往下游系统的流量路由的规则。K8ssandra支持部署IngressRoute对象,用于监测指标、修复和Cassandra交互界面。欲了解更多信息,请搜索Traefik相关信息。

 

14 我如何才能监控Kubernetes + Cassandra集群的健康状况?

配置Traefik从而暴露出K8ssandra的监控交互界面。

文档中的Topics→Ingress→Traefik→Monitoring章节提供了开启Traefik Ingress的详细步骤,而Topics→Accessing Services→Monitoring UI章节则提供了关于使用K8ssandra提供的预配置Grafana监控图表的细节。

完成准备步骤之后,假设是在你的本机环境,你可以在你的浏览器中打开

 

15 用于Grafana监控图表的登录信息是什么?

Grafana默认配置中,用户名是admin,密码是secret

文档中的Topics→Accessing Services→Monitoring UI章节的Grafana credentials小节有更多详细信息。

 

16 我可以用K8ssandra完成哪些生成(provisioning)任务?

集群的动态扩容或缩容。文档中的Topics→Provision a Cluster章节提供了更多的相关信息。

 

17 你能演示一下使用K8ssandra的步骤和示例命令吗?

好的——下图中你可以看到这些信息:


 

18 我怎么才能为K8ssandra的文档做贡献?

点击下方查看文档,其中Contribution Guidelines章节提供了更多的相关信息。


下一步

点击下方查看文档,并积极参与到K8ssandra用户社区中来。

posted @ 2020-12-12 20:52  DataStax  阅读(317)  评论(0编辑  收藏  举报