הגדרת StorageClass

מסד הנתונים של Cassandra משתמש בכרכים מתמשכים שנוצרים באופן דינמי כדי לאחסן נתונים. כדי שהמסד נתונים יפעל בצורה תקינה, צריך להגדיר ב-Apigee הגדרה של StorageClass שמגובה על ידי כונן SSD.

אם כרגע לא מוגדר SSD ל-Cassandra, במאמר הזה מוסבר איך ליצור StorageClass חדש שמשתמש ב-SSD ולהגדיר אותו כסוג ברירת המחדל. כשמפעילים את Cassandra, המערכת משתמשת ב-StorageClass הזה כברירת מחדל.

השלבים שמתוארים בנושא הזה להגדרת StorageClass רלוונטיים רק להתקנה חדשה של Cassandra. אם כבר התקנתם מחלקה של Cassandra, אתם צריכים להוציא את האשכול הקיים משימוש כדי להגדיר את ההגדרה של StorageClass. לא ניתן לבצע שינויים בהגדרת StorageClass של אשכול Cassandra קיים אחרי ההתקנה.

מומלץ לפרוס את Apigee Hybrid בשני אזורים או יותר, כדי להשבית ולהתקין מחדש אזור אחד תוך שמירה על הנתונים באזור המשני. לחלופין, אפשר להשתמש בגיבוי היברידי שאינו CSI כדי לשחזר נתונים בהתקנה באזור יחיד, אחרי הוצאה משימוש והגדרה של הגדרת 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. תאר את StorageClass בשם standard-rwo. שימו לב שהסוג שלו הוא 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: