1. 程式人生 > 實用技巧 >技術基礎 | 有關K8ssandra的那些事兒

技術基礎 | 有關K8ssandra的那些事兒

如果你對K8ssandra還感到比較陌生,這篇FAQ正是為你準備的

無論你是在哪兒看到的這篇文章(無論Github還是官方文件),你都可以向我們提出新的問題或對文章中提到的問題做出修正。作為一個開源專案,K8ssandra的使用者社群是很歡迎各式各樣的貢獻的。


01什麼是K8ssandra?

K8ssandra是一個開源專案,這意味著社群中的每個人都可以使用、改進和享受這個專案。K8ssandra是執行在Kubernetes上的雲原生的Apache Cassandra®發行版本。

與Cassandra一起包括在K8ssandra裡的,還有一整套能使運維任務更加簡單和自動化的工具,比如監測指標、反熵修復服務(anti-entropy services)以及備份恢復工具等。所有這些元件都會在K8ssandra安裝過程中一同被安裝並連線在一起,這樣你的團隊就不用再做那些冗雜的元件裝配工作了。

02好,那我應該怎麼讀“K8ssandra”?

你怎樣讀其實都可以,不過你可以考慮這種讀法:“Kate” + “Sandra”。

03K8ssandra包括了什麼呢?

從一個純元件的層面來看,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:

05k8ssandra和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

06k8ssandra和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。

10K8ssandra通過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使用者社群中來。