StorageClass 配置

Cassandra 数据库使用动态创建的永久性卷来存储数据。为使数据库正常运行,Apigee 要求您配置由固态硬盘 (SSD) 支持的 StorageClass 定义。

如果您目前没有为 Cassandra 配置 SSD,则本主题介绍如何创建使用 SSD 的新 StorageClass 并将其设为默认类。Cassandra 启动时,它将使用默认 StorageClass。

本主题中概述的 StorageClass 配置步骤仅适用于新的 Cassandra 安装。如果您已安装 Cassandra 类别,则必须停用现有集群才能配置 StorageClass 定义。不支持在安装后更改现有 Cassandra 集群的 StorageClass 定义。

Apigee 建议在两个或更多个区域中部署 Hybrid,以便停用并重新安装一个区域,同时在次要区域中保留数据。或者,您可以在停用并配置所需的 StorageClass 定义后,使用非 CSI Hybrid 备份在单区域安装中恢复数据。

更改默认 StorageClass

以下步骤介绍如何创建 StorageClass 并将其设为默认类。如需了解详情,请参阅 Kubernetes 文档中的更改默认存储类

  1. 获取当前默认 StorageClass 的名称:
    kubectl get sc

    例如:

    kubectl get sc
        NAME                    PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
        premium-rwo             pd.csi.storage.gke.io   Delete          WaitForFirstConsumer   true                   15h
        standard                kubernetes.io/gce-pd    Delete          Immediate              true                   15h
        standard-rwo (default)  pd.csi.storage.gke.io   Delete          WaitForFirstConsumer   true                   15h
      
  2. 描述名为 standard-rwo 的 StorageClass。请注意,其类型为 pd-balanced
    kubectl describe sc standard-rwo

    例如:

    kubectl describe sc standard-rwo
    Name:                  standard-rwo
    IsDefaultClass:        Yes
    Annotations:           components.gke.io/layer=addon,storageclass.kubernetes.io/is-default-class=false
    Provisioner:           pd.csi.storage.gke.io
    Parameters:            type=pd-balanced
    AllowVolumeExpansion:  True
    MountOptions:          <none>
    ReclaimPolicy:         Delete
    VolumeBindingMode:     WaitForFirstConsumer
    Events:                <none>
  3. 创建一个名为 storageclass.yaml 的新文件。
  4. 将此代码添加到文件中。请注意,新类的名称是 apigee-sc。您可以根据自己的喜好使用任何名称。此外,请注意存储类型为 pd-ssd
    ---
    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: "apigee-sc"
    provisioner: pd.csi.storage.gke.io
    parameters:
      type: pd-ssd
      replication-type: none
    volumeBindingMode: WaitForFirstConsumer
    allowVolumeExpansion: true
  5. 将新 StorageClass 应用于 Kubernetes 集群:
    kubectl apply -f storageclass.yaml
  6. 执行以下两个命令以更改默认 StorageClass:
    kubectl patch storageclass standard-rwo \
      -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
    kubectl patch storageclass apigee-sc \
      -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
  7. 执行以下命令,以验证新的默认 StorageClass 是否名为 apigee-sc
    kubectl get sc

    例如:

    kubectl get sc
      NAME                  PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
        apigee-sc (default)   pd.csi.storage.gke.io   Delete          WaitForFirstConsumer   true                   14h
        premium-rwo           pd.csi.storage.gke.io   Delete          WaitForFirstConsumer   true                   15h
        standard              kubernetes.io/gce-pd    Delete          Immediate              true                   15h
        standard-rwo          pd.csi.storage.gke.io   Delete          WaitForFirstConsumer   true                   15h
      
  8. 描述这两个 StorageClass 以验证 IsDefaultClass 的值。
    kubectl describe sc apigee-sc
        Name:            apigee-sc
        IsDefaultClass:  Yes
        Annotations:     kubectl.kubernetes.io/last-applied-configuration={"allowVolumeExpansion":true,"apiVersion":"storage.k8s.io/v1","kind":"StorageClass","metadata":{"annotations":{},"name":"apigee-sc"},"parameters":{"replication-type":"none","type":"pd-ssd"},"provisioner":"pd.csi.storage.gke.io","volumeBindingMode":"WaitForFirstConsumer"}
        ,storageclass.kubernetes.io/is-default-class=true
        Provisioner:           pd.csi.storage.gke.io
        Parameters:            replication-type=none,type=pd-ssd
        AllowVolumeExpansion:  True
        MountOptions:          
        ReclaimPolicy:         Delete
        VolumeBindingMode:     WaitForFirstConsumer
        Events:                
        
    kubectl describe sc standard-rwo
        Name:                  standard-rwo
        IsDefaultClass:        No
        Annotations:           components.gke.io/layer=addon,storageclass.kubernetes.io/is-default-class=false
        Provisioner:           pd.csi.storage.gke.io
        Parameters:            type=pd-balanced
        AllowVolumeExpansion:  True
        MountOptions:          
        ReclaimPolicy:         Delete
        VolumeBindingMode:     WaitForFirstConsumer
        Events: