במאמר הזה מוסבר איך פועלים מאגרי צמתים ב-Google Kubernetes Engine (GKE). מאגר צמתים הוא קבוצה של צמתים באשכול רגיל, שלכולם יש את אותה ההגדרה. במצב GKE Standard, אפשר לבחור מבין מספר אפשרויות למאגרי הצמתים כדי לענות על הצרכים של עומס העבודה. אם בוחרים להשתמש ב-Autopilot, לא צריך להגדיר מאגרי צמתים: GKE מנהל את הצמתים בשבילכם, אבל אתם יכולים לשדרג באופן ידני מאגרי צמתים שמנוהלים על ידי Autopilot באשכולות Standard אם יש צורך בכך.
מידע נוסף על יצירת אשכולות במצב רגיל זמין במאמרים יצירת אשכול אזורי ויצירת אשכול אזורי. כדי ללמוד איך לנהל מאגרי צמתים באשכולות קיימים מסוג Standard, אפשר לעיין במאמר בנושא הוספה וניהול של מאגרי צמתים.
סקירה כללית
מאגר צמתים הוא קבוצה של צמתים באותו אשכול, שלכולם יש את אותה הגדרה. מאגרי הצמתים משתמשים במפרט NodeConfig. לכל צומת במאגר יש תווית צומת של Kubernetes, cloud.google.com/gke-nodepool, שהערך שלה הוא השם של מאגר הצמתים.
כשיוצרים אשכול במצב רגיל, מספר הצמתים וסוג הצמתים שמציינים משמשים ליצירת מאגר הצמתים הראשון של האשכול.
כברירת מחדל, מאגר הצמתים הראשון (שנקרא מאגר הצמתים שמוגדר כברירת מחדל) מורכב משלושה צמתים בכל אחד מאזורי המחשוב של האשכול, עם תמונת הצומת שמוגדרת כברירת מחדל cos_containerd וסוג מכונה לשימוש כללי. אפשר לציין מגוון מאפיינים למאגר הצמתים, בהתאם לדרישות של עומס העבודה. לדוגמה, אפשר ליצור מאגר צמתים באשכול עם כונני SSD מקומיים, פלטפורמת CPU מינימלית, VM במודל Spot, תמונת צומת שונה, סוגי מכונות שונים או ממשק רשת וירטואלית יעיל יותר.
לאחר מכן תוכלו להוסיף לאשכול מאגרי צמתים נוספים בגדלים ובסוגים שונים. כל הצמתים במאגר צמתים נתון זהים זה לזה.
מאגרי צמתים בהתאמה אישית שימושיים כשצריך לתזמן Pods שדורשים יותר משאבים מאחרים, כמו יותר זיכרון או יותר מקום בכונן המקומי. אם אתם רוצים יותר שליטה על המקומות שבהם מתוזמנים הפודים, אתם יכולים להשתמש בnode taints.
אתם יכולים ליצור, לשדרג ולמחוק מאגרי צמתים בנפרד בלי להשפיע על האשכול כולו. אי אפשר להגדיר צומת יחיד במאגר צמתים. כל שינוי בהגדרות משפיע על כל הצמתים במאגר.
אפשר לשנות את הגודל של מאגרי צמתים באשכול על ידי הוספה או הסרה של צמתים.
כברירת מחדל, בכל מאגרי הצמתים החדשים פועלת אותה גרסה של Kubernetes כמו במישור הבקרה. אפשר לשדרג ידנית או לשדרג אוטומטית מאגרי צמתים קיימים. אפשר גם להריץ כמה גרסאות של צמתים ב-Kubernetes בכל מאגר צמתים באשכול, לשדרג כל מאגר צמתים בנפרד ולטרגט מאגרי צמתים שונים לפריסות ספציפיות.
מאגרי צמתים בניהול Autopilot
באשכולות Standard, בנוסף למאגרי הצמתים הרגילים שמתוארים במסמך הזה, יכולים להיות גם מאגרי צמתים שמנוהלים על ידי Autopilot, שנוצרים ומנוהלים על ידי GKE עבור ComputeClasses של 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 יש בוררי צמתים ספציפיים, יכול להיות שהם יישארו במצב של אי-תזמון אם אף צומת אחר באשכול לא עומד בקריטריונים.
כשמאגדים נמחקים, GKE לא מבצע את התהליך הזה של סיום תקין של הצמתים על ידי ניקוז שלהם. אם צריך להפסיק את עומסי העבודה שפועלים באשכול בצורה מסודרת, צריך להשתמש בפקודה kubectl
drain כדי לנקות את עומסי העבודה לפני שמוחקים את האשכול.
כדי למחוק מאגר צמתים, אפשר לעיין במאמר בנושא מחיקת מאגר צמתים. אי אפשר למחוק מאגרי צמתים שמנוהלים על ידי Autopilot.