תיקון אוטומטי של צמתים
התכונה 'תיקון אוטומטי של צמתים' עוקבת באופן רציף אחרי התקינות של כל צומת במאגר הצמתים. אם צומת מסוים לא תקין, התכונה 'תיקון אוטומטי של צמתים' מתקנת אותו באופן אוטומטי. התכונה הזו מפחיתה את הסיכוי להפסקות בשירות של האשכולות ולפגיעה בביצועים שלהם, ומצמצמת את הצורך בתחזוקה ידנית של האשכולות.
אפשר להפעיל תיקון אוטומטי של צמתים כשיוצרים או מעדכנים מאגר צמתים. שימו לב שאפשר להפעיל או להשבית את התכונה הזו במאגרי צמתים ולא בצמתים ספציפיים.
תנאים לא תקינים של צומת
התיקון האוטומטי של הצמתים בודק את סטטוס התקינות של כל צומת כדי לקבוע אם צריך לתקן אותו. צומת נחשב תקין אם הוא מדווח על סטטוס Ready.
אחרת, אם המכשיר מדווח ברציפות על סטטוס לא תקין למשך זמן מסוים, מתחילים בתיקון.
סטטוס לא תקין יכול לנבוע ממצב NotReady, שזוהה בבדיקות רצופות במשך כ-15 דקות. לחלופין, סטטוס לא תקין יכול להיות תוצאה של נפח אחסון לא מספיק בדיסק האתחול, שזוהה במשך תקופה של כ-30 דקות.
אפשר לבדוק באופן ידני את אותות התקינות של הצומת בכל שלב על ידי הפעלת הפקודה kubectl get nodes.
אסטרטגיות לתיקון צמתים
תיקון אוטומטי של צמתים מתבצע לפי אסטרטגיות מסוימות כדי להבטיח את התקינות הכללית של האשכול ואת הזמינות של האפליקציות במהלך תהליך התיקון. בקטע הזה מוסבר איך התכונה 'תיקון אוטומטי של צמתים' מתחשבת בהגדרות של PodDisruptionBudget, פועלת בהתאם ל-Pod Termination
Grace Period ונוקטת באמצעים אחרים שמצמצמים את השיבושים באשכול כשמתקנים צמתים.
הפעלת PodDisruptionBudget למשך 30 דקות
אם צריך לתקן צומת, הוא לא מתרוקן ונוצר מחדש באופן מיידי. במקום זאת, התכונה לתיקון אוטומטי של הצומת מכבדת את ההגדרות של PodDisruptionBudget (PDB) למשך עד 30 דקות, ולאחר מכן כל ה-Pods בצומת נמחקים. (הגדרת PDB מגדירה, בין היתר, את המספר המינימלי של רפליקות של Pod מסוים שצריכות להיות זמינות בכל זמן נתון).
התכונה לתיקון אוטומטי של הצומת מאפשרת ל-Pods להיות מתוזמנים מחדש ומופצים מחדש בצורה בטוחה בצמתים תקינים אחרים באשכול, על ידי כיבוד PodDisruptionBudget למשך כ-30 דקות. כך אפשר לשמור על רמת הזמינות הרצויה של האפליקציה במהלך תהליך התיקון.
אחרי מגבלת הזמן של 30 דקות, התיקון האוטומטי של הצומת ימשיך בתהליך התיקון, גם אם המשמעות היא הפרה של PodDisruptionBudget. אם לא מוגבל זמן, תהליך התיקון עלול להיעצר ללא הגבלת זמן אם ההגדרה של PodDisruptionBudget מונעת את ההסרות שנדרשות לתיקון.
התחשבות בתקופת החסד לסיום של Pod
תכונת התיקון האוטומטי של הצומת מכבדת גם תקופת חסד לסיום הפעלה של Pod של כ-30 דקות. תקופת החסד לסיום פעילות של Pod מספקת ל-Pods חלון זמן לכיבוי מבוקר במהלך סיום הפעילות. במהלך תקופת החסד, ה-kubelet בצומת אחראי לביצוע משימות ניקוי ולשחרור משאבים שמשויכים ל-Pods בצומת הזה. התכונה 'תיקון אוטומטי של הצומת' מאפשרת ל-kubelet להשלים את הניקוי הזה תוך 30 דקות. אם חולפות 30 דקות, הצומת נאלץ לסיים את הפעולה, גם אם הפודים סיימו את הפעולה בצורה תקינה.
שיטות נוספות לתיקון צמתים
בנוסף, התיקון האוטומטי של הצמתים מטמיע את האסטרטגיות הבאות:
- אם צריך לתקן כמה צמתים, הם מתוקנים אחד בכל פעם כדי לצמצם את השיבושים באשכול ולהגן על עומסי העבודה.
- אם משביתים את התיקון האוטומטי של הצומת במהלך תהליך התיקון, התיקונים שנמצאים בתהליך ימשיכו עד שהפעולה תצליח או תיכשל.
איך מפעילים ומשביתים תיקון אוטומטי של צמתים
אפשר להפעיל או להשבית את התיקון האוטומטי של הצמתים כשיוצרים או מעדכנים מאגר צמתים. מפעילים או משביתים את התכונה הזו במאגרי צמתים ולא בצמתים בודדים.
הפעלת תיקון אוטומטי למאגר צמתים חדש
gcloud container azure node-pools create NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION \
--node-version 1.35.3-gke.300 \
--vm-size VM_SIZE \
--max-pods-per-node 110 \
--min-nodes MIN_NODES \
--max-nodes MAX_NODES \
--azure-availability-zone AZURE_ZONE \
--ssh-public-key SSH_PUBLIC_KEY" \
--subnet-id SUBNET_ID \
--enable-autorepair
מחליפים את מה שכתוב בשדות הבאים:
-
NODE_POOL_NAME: שם ייחודי למאגר הצמתים – לדוגמה,node-pool-1 -
CLUSTER_NAME: השם של אשכול GKE ב-Azure -
GOOGLE_CLOUD_LOCATION: Google Cloud המיקום שבו מתנהל האשכול -
NODE_VERSION: גרסת Kubernetes להתקנה בכל צומת במאגר הצמתים (לדוגמה, 1.35.3-gke.300) -
VM_SIZE: גודל נתמך של מכונת VM ב-Azure -
MIN_NODES: מספר הצמתים המינימלי במאגר הצמתים – מידע נוסף זמין במאמר בנושא Cluster Autoscaler -
MAX_NODES: המספר המקסימלי של הצמתים במאגר הצמתים -
AZURE_ZONE: אזור הזמינות של Azure שבו מאגר הצמתים מופעל ב-GKE ב-Azure – לדוגמה,3 -
SSH_PUBLIC_KEY: הטקסט של מפתח ה-SSH הציבורי. -
SUBNET_ID:המזהה של רשת המשנה של מאגר הצמתים.
הפעלת תיקון אוטומטי למאגר צמתים קיים
כדי להפעיל תיקון אוטומטי של צמתים במאגר צמתים קיים, מריצים את הפקודה הבאה:
gcloud container azure node-pools update NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION \
--enable-autorepair
מחליפים את מה שכתוב בשדות הבאים:
-
NODE_POOL_NAME: שם ייחודי למאגר הצמתים – לדוגמה,node-pool-1 -
CLUSTER_NAME: השם של האשכול -
GOOGLE_CLOUD_LOCATION: האזור Google Cloud שמנהל את האשכול
השבתת התיקון האוטומטי של מאגר צמתים קיים
gcloud container azure node-pools update NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION \
--no-enable-autorepair
מחליפים את מה שכתוב בשדות הבאים:
-
NODE_POOL_NAME: שם ייחודי למאגר הצמתים – לדוגמה,node-pool-1 -
CLUSTER_NAME: השם של האשכול -
GOOGLE_CLOUD_LOCATION: האזור Google Cloud שמנהל את האשכול
שימו לב: ב-GKE on Azure, השבתה של תיקון אוטומטי של צמתים מתבצעת בצורה מסודרת. כשמשביתים את התיקון האוטומטי של צמתים במאגר צמתים קיים, GKE on Azure מפעיל פעולה של עדכון מאגר הצמתים. הפעולה ממתינה לסיום של תיקונים קיימים של צמתים לפני שהיא ממשיכה.
בדיקה אם התיקון האוטומטי של הצומת מופעל
מריצים את הפקודה הבאה כדי לבדוק אם תיקון אוטומטי של הצומת מופעל:
gcloud container azure node-pools describe NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION
מחליפים את מה שכתוב בשדות הבאים:
-
NODE_POOL_NAME: שם ייחודי למאגר הצמתים – לדוגמה,node-pool-1 -
CLUSTER_NAME: השם של האשכול -
GOOGLE_CLOUD_LOCATION: האזור Google Cloud שמנהל את האשכול
היסטוריית התיקונים של הצומת
כדי לראות את היסטוריית התיקונים שבוצעו במאגר צמתים, מריצים את הפקודה הבאה:
gcloud container azure operations list \
--location GOOGLE_CLOUD_LOCATION \
--filter="metadata.verb=repair AND metadata.target=projects/PROJECT_ID/locations/GOOGLE_CLOUD_LOCATION/azureClusters/CLUSTER_NAME/azureNodePools/NODEPOOL_NAME
מחליפים את מה שכתוב בשדות הבאים:
-
GOOGLE_CLOUD_LOCATION: האזור הנתמך Google Cloud שמנהל את האשכול – לדוגמה,us-west1 -
PROJECT_ID: הפרויקט ב- Google Cloud -
CLUSTER_NAME: השם של האשכול -
NODE_POOL_NAME: שם ייחודי למאגר הצמתים – לדוגמה,node-pool-1
סיכום של תקינות מאגר הצמתים
אחרי שמפעילים את התיקון האוטומטי של הצמתים, אפשר ליצור סיכום של תקינות מאגר הצמתים על ידי הפעלת הפקודה הבאה:
gcloud container azure node-pools describe NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION
סיכום תקינות של מאגר צמתים נראה כמו הדוגמה הזו:
{
"name": "some-np-name",
"version": "some-version",
"state": "RUNNING",
...
"errors": [
{
"message": "1 node(s) is/are identified as unhealthy among 2 total node(s) in the node pool. No node is under repair."
}
],
}
סיכום תקינות מאגר הצמתים עוזר לכם להבין את המצב הנוכחי של מאגר הצמתים. בדוגמה הזו, הסיכום מכיל הודעת שגיאה שלפיה אחד משני הצמתים במאגר הצמתים לא תקין. הוא גם מדווח שאין כרגע צמתים בתהליך התיקון.