StorageClass の構成

Cassandra データベースは、動的に作成された永続ボリュームを使用してデータを保存します。Apigee でデータベースを適切に機能させるには、ソリッド ステート ドライブ(SSD)を基盤とする StorageClass の定義を構成する必要があります。

現在 Cassandra 用に SSD が設定されていない場合、このトピックでは SSD を使用する新しい StorageClass を作成し、それをデフォルト クラスにする方法について説明します。Cassandra が起動すると、このデフォルトの StorageClass が使用されます。

このトピックで説明する StorageClass の構成手順は、新しい Cassandra インストールにのみ適用されます。Cassandra クラスがすでにインストールされている場合は、既存のクラスタを廃止して StorageClass の定義を構成する必要があります。インストール後に既存の Cassandra クラスタの StorageClass 定義を変更することはできません。

セカンダリ リージョンのデータを保持しながら、1 つのリージョンを廃止して再インストールできるよう、2 つ以上のリージョンにハイブリッドをデプロイすることをおすすめします。また、必要な StorageClass の定義を廃止して構成した後、CSI 以外のハイブリッド バックアップを使用して、単一リージョン インストールでデータを復元することもできます。

デフォルトの 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. 次の 2 つのコマンドを実行して、デフォルトの 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

    次に例を示します。

        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: