אם מסד הנתונים שלכם פועל באשכול Kubernetes, אתם יכולים להעביר את מסד הנתונים למצב תחזוקה על ידי השבתה של בדיקות פעילות ובדיקות הפעלה, שפועלות באפליקציה שמופעלת בתוך קונטיינר, כדי לוודא שפוד מסד הנתונים במצב תקין. מצב תחזוקה מאפשר להעביר את הפוד למצב פעיל כשצריך לבצע עדכון תחזוקה או לתקן את הפוד.
הפעלת מצב תחזוקה
מוודאים שקיימים בדיקות תקינות בתא מסד הנתונים:
בדיקת מצב הפעילות (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}