אם מסד הנתונים שלכם פועל באשכול Kubernetes, אתם יכולים להעביר את מסד הנתונים למצב תחזוקה על ידי השבתה של בדיקות פעילות ובדיקות הפעלה שפועלות באפליקציה שמופעלת בתוך קונטיינר, כדי לוודא שפוד מסד הנתונים במצב תקין. מצב תחזוקה מאפשר להעביר את ה-Pod למצב פעולה כשצריך לבצע עדכון תחזוקה או לתקן את ה-Pod.
הפעלת מצב תחזוקה
בודקים אם יש בדיקות תקינות ב-Pod של מסד נתונים:
בדיקת מצב הפעילות (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}-
בדיקת מוכנות להפעלה:
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}
מגדירים את
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.מחילים את המניפסט:
kubectl apply -f DB_CLUSTER_YAMLמחליפים את
DB_CLUSTER_YAMLבשם של קובץ המניפסט של אשכול מסד הנתונים הזה, לדוגמהalloydb-omni-db-cluster.yaml.כדי לוודא שמצב התחזוקה מופעל, מריצים את הפקודות הבאות:
בדיקת מצב הפעילות (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}