מידע על מאגרי צמתים

במאמר הזה מוסבר איך מאגרי צמתים פועלים ב-Google Kubernetes Engine‏ (GKE). מאגר צמתים הוא קבוצה של צמתים באותו אשכול רגיל, שלכולם יש את אותה הגדרה. במצב GKE Standard, אפשר לבחור מתוך מספר אפשרויות למאגרי הצמתים כדי להתאים אותם לצרכים של עומס העבודה. אם בוחרים להשתמש ב-Autopilot, לא צריך להגדיר מאגרי צמתים: GKE מנהל את הצמתים בשבילכם, אבל אתם יכולים לשדרג באופן ידני מאגרי צמתים שמנוהלים על ידי Autopilot באשכולות Standard אם יש צורך בכך.

מידע נוסף על יצירת אשכולות במצב רגיל זמין במאמרים יצירת אשכול אזורי ויצירת אשכול אזורי. במאמר הוספה וניהול של מאגרי צמתים מוסבר איך לנהל מאגרי צמתים באשכולות קיימים של Standard.

סקירה כללית

מאגר צמתים הוא קבוצה של צמתים באשכול, שלכולם יש את אותה הגדרה. מאגרי צמתים משתמשים במפרט NodeConfig. לכל צומת במאגר יש תווית צומת של Kubernetes‏, cloud.google.com/gke-nodepool, שהערך שלה הוא השם של מאגר הצמתים.

כשיוצרים אשכול במצב רגיל, מספר הצמתים וסוג הצמתים שמציינים משמשים ליצירת מאגר הצמתים הראשון של האשכול. כברירת מחדל, מאגר הצמתים הראשון הזה (שנקרא מאגר הצמתים שמוגדר כברירת מחדל) מורכב משלושה צמתים בכל אחד מאזורי החישוב של האשכול, עם תמונת הצומת שמוגדרת כברירת מחדל cos_containerd, וסוג מכונה לשימוש כללי. אפשר לציין מגוון מאפיינים למאגר הצמתים, בהתאם לדרישות של עומס העבודה. לדוגמה, אפשר ליצור מאגר צמתים באשכול עם כונני SSD מקומיים, פלטפורמת מעבד מינימלית, מכונות וירטואליות מסוג Spot, תמונת צומת שונה, סוגי מכונות שונים או ממשק רשת וירטואלית יעיל יותר.

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

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

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

אפשר לשנות את הגודל של מאגרי צמתים באשכול על ידי הוספה או הסרה של צמתים.

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

מאגרי צמתים בניהול Autopilot

בקטרי Standard, בנוסף למאגרי הצמתים Standard שמתוארים במסמך הזה, יכולים להיות גם מאגרי צמתים שמנוהלים על ידי Autopilot, שנוצרים ומנוהלים על ידי GKE עבור ComputeClasses של Autopilot. מידע נוסף זמין במאמר מידע על עומסי עבודה במצב Autopilot ב-GKE Standard.

אפשר לשדרג ידנית את סוג מאגר הצמתים הזה. עם זאת, לא תוכלו לבצע סוגים אחרים של עדכונים מעבר לשדרוגים (שינויים בגרסה). בנוסף, אי אפשר למחוק את מאגר הצמתים.

פריסת שירותים למאגרי צמתים ספציפיים

כשמגדירים שירות, אפשר לשלוט באופן עקיף במאגר הצמתים שבו הוא נפרס. מאגר הצמתים לא תלוי בהגדרות של השירות, אלא בהגדרות של ה-Pod.

  • אפשר לפרוס באופן מפורש Pod למאגר צמתים ספציפי על ידי הגדרת nodeSelector במניפסט של ה-Pod. כך מאלצים את ה-Pod לפעול רק בצמתים במאגר הצמתים הזה. דוגמה אפשר לראות במאמר בנושא פריסת Pod למאגר צמתים ספציפי.

  • אפשר לציין בקשות למשאבים עבור הקונטיינרים. ה-Pod פועל רק בצמתים שעומדים בדרישות המשאבים. לדוגמה, אם הגדרת ה-Pod כוללת קונטיינר שנדרשים לו ארבע ליבות CPU, שירות לא יבחר ב-Pods שפועלים בצמתים עם שתי ליבות CPU.

צמתים באשכולות מרובי אזורים

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

הערה: בגלל אפקט ההכפלה הזה, יכול להיות שייצרכו יותר מהמכסה של הפרויקט באזור מסוים כשיוצרים מאגרי צמתים.

מחיקת מאגרי צמתים

כשמוחקים מאגר צמתים,‏ GKE מרוקן את כל הצמתים במאגר, מוחק את כל ה-Pods ומתזמן אותם מחדש. במהלך תהליך הניקוי, GKE מוחק את ה-Pods בכל צומת במאגר הצמתים. מערכת GKE מבצעת את שתי הפעולות הבאות כשמוחקים צמתים:

  • ‫GKE מרוקן כל צומת במאגר הצמתים על ידי מחיקת ה-Pods עם תקופת סיום מוקצית של MAX_POD. ‫MAX_POD הוא הערך המקסימלי של terminationGracePeriodSeconds שמוגדר עבור ה-Pods שמתוזמנים בצומת, עם מגבלה של שעה אחת.
  • כברירת מחדל, מערכת GKE לא מכבדת את ההגדרות של PodDisruptionBudget (PDB) במהלך מחיקה של מאגר צמתים. עם זאת, אפשר לעדכן את ההגדרה של מאגר הצמתים כדי ש-GKE יכבד את ה-PDB במהלך מחיקה של מאגר צמתים, גם עם מגבלה של שעה אחת. התחשבות ב-PDB מאפשרת לעומסי עבודה לעבור לצמתים אחרים באשכול. מידע נוסף על הגדרת ההגדרה הזו זמין במאמר עדכון מאגר צמתים כדי להתחשב ב-PDB במהלך מחיקת מאגר צמתים.

אם ל-Pods יש בוררי צמתים ספציפיים, יכול להיות שהם יישארו במצב unschedulable אם אף צומת אחר באשכול לא עומד בקריטריונים.

כשמ删除 אשכול, GKE לא מבצע את התהליך הזה של סיום תקין של הצמתים על ידי ניקוז שלהם. אם צריך להפסיק את עומסי העבודה שפועלים באשכול בצורה מסודרת, צריך להשתמש בפקודה kubectl drain כדי לנקות את עומסי העבודה לפני שמוחקים את האשכול.

כדי למחוק מאגר צמתים, אפשר לעיין במאמר בנושא מחיקת מאגר צמתים. אי אפשר למחוק מאגרי צמתים שמנוהלים על ידי Autopilot.

המאמרים הבאים