בדף הזה תוכלו לקרוא סקירה כללית על taints ו-tolerations ב-Google Distributed Cloud. כשמתזמנים פריסה של עומסי עבודה באשכול, כתמי הצבע של הצמתים עוזרים לקבוע באילו צמתים מותר להפעיל אותם.
סקירה כללית
כששולחים עומס עבודה להפעלה באשכול, מתזמן קובע איפה למקם את ה-Pods שמשויכים לעומס העבודה. המתזמן יכול להציב Pod בכל צומת שעומד בדרישות של ה-Pod לגבי מעבד, זיכרון ומשאבים מותאמים אישית.
אם באשכול שלכם מופעלים מגוון עומסי עבודה, יכול להיות שתרצו לשלוט בעומסי העבודה שיכולים לפעול במאגר מסוים של צמתים.
node taint מאפשר לסמן צומת כדי שהמתזמן יימנע משימוש בו עבור פודים מסוימים. תכונה משלימה, tolerations, מאפשרת לכם להגדיר אילו Pods יכולים לשמש בצמתים עם 'כתמים'.
התכונות Taints ו-Tolerations פועלות יחד כדי לוודא ש-Pods לא מתוזמנים לצמתים לא מתאימים.
הכתמים הם צמדי מפתח/ערך שמשויכים לאפקט. בטבלה הבאה מפורטים האפקטים שזמינים:
| אפקט | תיאור |
|---|---|
NoSchedule |
פודים שלא יכולים להתמודד עם ההכתמה הזו לא מתוזמנים בצומת, ופודים קיימים לא מפונים מהצומת. |
PreferNoSchedule |
Kubernetes לא מתזמן Pods שלא יכולים להתמודד עם ההכתמה הזו בצומת. |
NoExecute |
אם ה-Pod כבר פועל בצומת, הוא יסולק ממנו. אם הוא עדיין לא פועל בצומת, הוא לא יתוזמן בצומת. |
היתרונות של הגדרת כתמי צבע לצמתים ב-Google Distributed Cloud
אפשר להגדיר כתמי צומת באמצעות הפקודה kubectl taint, אבל להגדרה של כתמי צומת באמצעות gkectl או מסוף Google Cloud יש את היתרונות הבאים לעומת kubectl:
- הכתמים נשמרים כשמפעילים מחדש או מחליפים צומת.
- הכתמים נוצרים באופן אוטומטי כשמוסיפים צומת למאגר צמתים.
- כשמשתמשים ב-
gkectlכדי להוסיף דחיות (taint), הדחיות נוצרות באופן אוטומטי במהלך התאמה אוטומטית לעומס של האשכול. (בשלב הזה, אין אפשרות להשתמש בהתאמה אוטומטית לעומס עבור מאגרי צמתים שנוצרו במסוףGoogle Cloud ).
הגדרת taints של צומת
אפשר להגדיר taints של צמתים במאגר צמתים כשיוצרים אשכול משתמשים או אחרי שיוצרים את האשכול. בקטע הזה מוסבר איך להוסיף כתמי צבע לאשכולות שכבר נוצרו, אבל התהליך דומה כשיוצרים אשכולות חדשים.
אפשר להוסיף מאגר צמתים חדש ולהגדיר כתם, או לעדכן מאגר צמתים קיים ולהגדיר כתם. לפני שמוסיפים עוד מאגר צמתים, צריך לוודא שיש מספיק כתובות IP זמינות באשכול.
אם יצרתם את האשכול במסוף Google Cloud , תוכלו להשתמש במסוףGoogle Cloud כדי להוסיף או לעדכן מאגר צמתים.
הגדרת כתמי צבע במאגר צמתים חדש
המסוף
במסוף, נכנסים לדף Google Kubernetes Engine clusters overview.
בוחרים את הפרויקט Google Cloud שבו נמצא אשכול המשתמשים.
ברשימת האשכולות, לוחצים על שם האשכול ואז על הצגת פרטים בחלונית פרטים.
לוחצים על Add node pool (הוספת מאגר צמתים).
מגדירים את מאגר הצמתים:
- מזינים את שם מאגר הצמתים.
- מזינים את מספר vCPUs לכל צומת במאגר (מינימום 4 לכל עובד באשכול משתמשים).
- מזינים את גודל הזיכרון במביבייט (MiB) לכל צומת במאגר (מינימום 8,192MiB לכל צומת של Worker באשכול משתמשים, והגודל חייב להיות כפולה של 4).
- בשדה Replicas, מזינים את מספר הצמתים במאגר (מינימום 3).
בוחרים את סוג תמונת מערכת ההפעלה: Ubuntu Containerd או COS.
מזינים את גודל דיסק האתחול בגיביבייט (GiB) (ברירת המחדל היא 40GiB).
בקטע Node pool metadata (optional) (מטא-נתונים של מאגר הצמתים (אופציונלי)), לוחצים על + Add Taint (+ הוספת כתם). מזינים את המפתח, הערך וההשפעה של ה-taint. חוזרים לפי הצורך.
אפשר גם ללחוץ על + הוספת תוויות של Kubernetes. מזינים את המפתח ואת הערך של התווית. חוזרים לפי הצורך.
לוחצים על יצירה.
Google Cloud במסוף מוצג Cluster status: changes in progress. לוחצים על הצגת פרטים כדי לראות את תנאי סטטוס המשאב והודעות הסטטוס.
שורת הפקודה
בקובץ התצורה של אשכול המשתמשים, ממלאים את הקטע
nodePools.חובה לציין את השדות הבאים:
nodePools.[i].namenodePools[i].cpusnodePools.[i].memoryMBnodePools.[i].replicas
השדות הבאים הם אופציונליים. אם לא כוללים את התגים
nodePools[i].bootDiskSizeGBאוnodePools[i].osImageType, המערכת משתמשת בערכי ברירת המחדל.ממלאים את הקטע
nodePools[i].taints. לדוגמה:nodePools: - name: "my-node-pool" taints: - key: "staging" value: "true" effect: "NoSchedule"אפשר למלא גם את הקטעים הבאים:
nodePools[i].labelsnodePools[i].bootDiskSizeGBnodePools[i].osImageTypenodePools[i].vsphere.datastorenodePools[i].vsphere.tags
מריצים את הפקודה הבאה:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
מחליפים את מה שכתוב בשדות הבאים:
[ADMIN_CLUSTER_KUBECONFIG]עם הנתיב של קובץ ה-kubeconfig של אשכול האדמין.
[USER_CLUSTER_CONFIG]עם הנתיב לקובץ התצורה של אשכול המשתמשים.
הגדרת כתמי צבע במאגר צמתים קיים
המסוף
במסוף, נכנסים לדף Google Kubernetes Engine clusters overview.
בוחרים את הפרויקט Google Cloud שבו נמצא אשכול המשתמשים.
ברשימת האשכולות, לוחצים על שם האשכול ואז על הצגת פרטים בחלונית פרטים.
לוחצים על הכרטיסייה Nodes.
לוחצים על השם של מאגר הצמתים שרוצים לשנות.
לוחצים על עריכה ליד הקטע Node pool metadata (optional) (מטא-נתונים של מאגר הצמתים (אופציונלי)) ואז לוחצים על + Add Taint (הוספת כתם). מזינים את המפתח, הערך וההשפעה של ה-taint. חוזרים לפי הצורך.
לוחצים על סיום.
לוחצים על כדי לחזור לדף הקודם.
Google Cloud במסוף מוצג Cluster status: changes in progress. לוחצים על הצגת פרטים כדי לראות את תנאי סטטוס המשאב והודעות הסטטוס.
שורת הפקודה
בקובץ ההגדרות של אשכול המשתמשים, עוברים לקטע
nodePoolsשל מאגר הצמתים שרוצים לעדכן.ממלאים את
nodePools[i].taints. לדוגמה:nodePools: - name: "my-node-pool" taints: - key: "staging" value: "true" effect: "NoSchedule"מריצים את הפקודה הבאה:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
מחליפים את מה שכתוב בשדות הבאים:
[ADMIN_CLUSTER_KUBECONFIG]עם הנתיב של קובץ ה-kubeconfig של אשכול האדמין.
[USER_CLUSTER_CONFIG]עם הנתיב לקובץ התצורה של אשכול המשתמשים.
הגדרת Pods כך שיאפשרו taint
כדי להגדיר את ה-Pods כך שיאפשרו taint, צריך לכלול את השדה tolerations במפרט של ה-Pods. בדוגמה הבאה, אפשר לתזמן את ה-Pod בצומת עם ה-Taint dedicated=experimental:NoSchedule:
tolerations:
- key: dedicated
operator: Equal
value: experimental
effect: NoSchedule
דוגמאות נוספות מופיעות במאמר בנושא Taints and Tolerations.