StorageClass 配置

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

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

更改默认 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)   kubernetes.io/gce-pd    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