技术基础 | 有关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监控图表的细节。
完成准备步骤之后,假设是在你的本机环境,你可以在你的浏览器中打开http://grafana.localhost:8080/
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用户社区中来。