技術基礎 | 有關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監控圖表的細節。
完成準備步驟之後,假設是在你的本機環境,你可以在你的瀏覽器中開啟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使用者社群中來。