שימוש במצב תחזוקה באשכול מסד נתונים ב-Kubernetes

בחירת גרסת תיעוד:

בדף הזה מוסבר איך להעביר את מסד הנתונים למצב תחזוקה באשכול Kubernetes.

אם מסד הנתונים שלכם פועל באשכול Kubernetes, אתם יכולים להעביר את מסד הנתונים למצב תחזוקה על ידי השבתה של בדיקות פעילות ובדיקות הפעלה, שפועלות באפליקציה שמופעלת בתוך קונטיינר, כדי לוודא שפוד מסד הנתונים במצב תקין. מצב תחזוקה מאפשר להעביר את הפוד למצב פעיל כשצריך לבצע עדכון תחזוקה או לתקן את הפוד.

הפעלת מצב תחזוקה

  1. מוודאים שקיימים בדיקות תקינות בתא מסד הנתונים:

    1. בדיקת מצב הפעילות (liveness):

      kubectl get po -n NAMESPACE DATABASE_POD_NAME  -o jsonpath='{.spec.containers[?(@.name=="database")].livenessProbe}'

      מחליפים את מה שכתוב בשדות הבאים:

      • NAMESPACE: השם של מרחב השמות שמשמש להרצת מסד הנתונים, לדוגמה db.
      • DATABASE_POD_NAME: השם של ה-pod של מסד הנתונים, לדוגמה al-4017-dbcluster-sample-0.

      בדוגמה הבאה מוצג פלט עם בדיקת פעילות:

      {"failureThreshold":3,"httpGet":{"path":"/healthz?","port":8090,"scheme":"HTTP"},"periodSeconds":10,"successThreshold":1,"timeoutSeconds":3}
      
    2. בדיקת מוכנות להפעלה:

      kubectl get po -n NAMESPACE DATABASE_POD_NAME -o jsonpath='{.spec.containers[?(@.name=="database")].startupProbe}'

      בדוגמה הבאה מוצג פלט עם בדיקת מוכנות להפעלה:

      {"exec":{"command":["/usr/lib/postgresql/15/bin/psql","-hlocalhost","-Ualloydbadmin","-c","SELECT 1"]},"failureThreshold":180,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1}
      
  2. מגדירים את mode ל-maintenance בקטע spec של מניפסט DBCluster:

    apiVersion: alloydbomni.dbadmin.goog/v1
    kind: DBCluster
    metadata:
      name: DB_CLUSTER_NAME
      namespace: NAMESPACE
    spec:
      allowExternalIncomingTraffic: false
      isDeleted: false
      mode: maintenance
      primarySpec:
      ...
    

    מחליפים את DB_CLUSTER_NAME בשם של אשכול מסד הנתונים הזה – לדוגמה, my-db-cluster.

  3. החלת המניפסט:

    kubectl apply -f DB_CLUSTER_YAML

    מחליפים את DB_CLUSTER_YAML בשם של קובץ המניפסט של אשכול מסד הנתונים הזה – לדוגמה, alloydb-omni-db-cluster.yaml.

  4. כדי לוודא שמצב התחזוקה מופעל, מריצים את הפקודות הבאות:

    • בדיקת מצב הפעילות (liveness):

      kubectl get po -n NAMESPACE DATABASE_POD_NAME  -o jsonpath='{.spec.containers[?(@.name=="database")].livenessProbe}'
    • בדיקת מוכנות להפעלה:

      kubectl get po -n NAMESPACE DATABASE_POD_NAME  -o jsonpath='{.spec.containers[?(@.name=="database")].startupProbe}'

    הפלט לא מכיל את השדות Liveness ו-Startup בקטע spec של פוד POD_NAME.

השבתת מצב תחזוקה

כדי לחזור להתנהגות הרגילה של אשכול מסדי נתונים עם בדיקות פעילות והפעלה, משתמשים בפקודה הבאה כדי להסיר את maintenance מהקטע spec במניפסט של DBCluster:

kubectl patch dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -p '{"spec":{"mode":""}}' --type=merge -n DB_CLUSTER_NAMESPACE --type=merge

פלט לדוגמה:

  • עם בדיקת פעילות:

    {"failureThreshold":3,"httpGet":{"path":"/healthz?","port":8090,"scheme":"HTTP"},"periodSeconds":10,"successThreshold":1,"timeoutSeconds":3}
    
  • עם בדיקת מוכנות להפעלה:

    {"exec":{"command":["/usr/lib/postgresql/15/bin/psql","-hlocalhost","-Ualloydbadmin","-c","SELECT 1"]},"failureThreshold":180,  "periodSeconds":10,"successThreshold":1,"timeoutSeconds":1}