簡體   English   中英

使用 Stateful set 存儲 Cassandra 數據

[英]Storing the Cassandra data using Stateful set

我一直在閱讀有關在 kubernetes 上推送數據庫的方法。 最初,我將數據附加到 docker 映像並部署了servicedeployment文件。 但問題是當容器/pod 重新啟動時,數據會丟失。 然后,我遇到了持久數量聲明的概念。 我發現( https://www.magalix.com/blog/kubernetes-and-database )和( https://kubernetes.io/docs/tutorials/stateful-application/cassandra/ )非常有用。 我對他們有幾個問題:

PVC:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pv-claim
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi

光伏:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-pv-volume
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 20Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data"
  1. PVC如何從集群中的PV獲取存儲? 如果我使用 Amazon 雲運行我的服務,那么相同的步驟是什么(如果有)。

PVC 將消耗您提供的 PV 資源。 Kubernetes 文檔中有關於Persistent Volumes的更詳細解釋,包括的生命周期和 PV 聲明。

順便提一下,如果您還沒有意識到,有幾個 Cassandra 操作符隨時可用,這使您可以更輕松地在 Kubernetes 上部署集群,包括Instaclustr的 CassKop和 DataStax 的cass-operator

DataStax cass-operator 允許您部署 DSE 集群或 Apache Cassandra 集群。 您可以在此處官方文檔站點上找到更多信息 如果您有任何問題,也可以通過https://community.datastax.com直接聯系 cass-operator 的作者。 干杯!

持久卷

PV是集群中的一塊存儲,由管理員配置或使用Storage Classes dynamically provisioned 持久卷聲明PVC是用戶的存儲請求。 它類似於 Pod。 Pod 消耗節點資源, PVCs消耗PV資源。

如果要綁定PVPVC您可以在兩種Provisioning方式之間進行選擇:

  • 靜止的

集群管理員創建了許多PVs 它們攜帶真實存儲的詳細信息,可供集群用戶使用。 它們存在於 Kubernetes API 中,可供使用。

  • 動態的

當管理員創建的靜態PVs都不匹配用戶的PersistentVolumeClaim ,集群可能會嘗試專門為PVC動態配置卷。 此供應基於StorageClasses: PVC必須請求storage class ,並且管理員必須已創建並配置該類才能進行動態供應。 請求類 "" 的聲明有效地為自己禁用動態配置。

簡而言之,如果您使用Static配置,則您需要為每個PVC創建PV ,因為它們是 1:1 的邊界關系。

您可以在此線程中找到更多有用的詳細信息。

當您使用支持動態卷配置的雲環境(亞馬遜)時,您可以只使用PVC Dynamic Provisioning將創建具有PVC要求的PV

當您使用Statefulset並且需要確保每個 pod 都有自己的PV ,您可以像文檔示例中那樣使用VolumeClaimTemplate

關於主要問題:

PVC如何從集群中的PV獲取存儲? 如果我使用 Amazon 雲運行我的服務,那么相同的步驟是什么(如果有)。

  • 如果要使用靜態配置,則需要為每個 Pod 創建PVPVC

  • 由於大多數雲提供商支持Dynamic Provisioning您只需創建PVC ,Cloud Provisioner 將自動創建具有PVC要求的PV 此外,在statefulset為 pod 創建PVPVC的最常見方法是使用VolumeClaimTemplate ,您可以在其中指定storageclassstorage和更多其他參數:

     volumeClaimTemplates: - metadata: name: cassandra-data spec: accessModes: [ "ReadWriteOnce" ] storageClassName: fast resources: requests: storage: 1Gi

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM