התאמה אישית של רכיבי מערכת באשכולות EKS

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

סקירה כללית

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

התאמה אישית של רכיבי המערכת פותרת את הבעיות האלה ומאפשרת לכם לקבל יותר שליטה וגמישות באופן הפעולה של הרכיבים האלה באשכול. אפשר להחיל תוויות והגדרות סבילות מותאמות אישית על רכיבי מערכת בבעלות Google:

  • Tolerations מאפשרים לרכיבים של Google לתזמן צמתים עם כתמי Kubernetes ספציפיים, וכך לאכוף הפרדה של עומסי עבודה או להשתמש במאגרי צמתים מיוחדים. ההגדרות של tolerations בהתאמה אישית פותרות ישירות בעיות שבהן taints שלא ניתן לשנות מונעים מיקום תקין של רכיבים.

  • תוויות מאפשרות לכם לסווג ולזהות את רכיבי המערכת של Google בהתאם לתקנים התפעוליים שלכם. תוויות בהתאמה אישית מאפשרות שילוב טוב יותר עם הכלים הקיימים שלכם למעקב, לרישום ולאכיפת מדיניות.

הגבלות ומגבלות

ההגבלות והמגבלות הבאות חלות:

  • אפשר להוסיף תוויות והחרגות מותאמות אישית רק כשרושמים את האשכול.
  • אפשר להוסיף עד 10 סבילות מותאמות אישית ו-10 תוויות מותאמות אישית לאשכול.
  • אי אפשר להשתמש בתוויות הבאות:

    • name
    • component
    • app
    • כל תווית שכוללת את התווים k8s.io או kubernetes.io, כי הם שייכים לתוויות שמורות ב-Kubernetes
    • כל תווית שכוללת את google
    • כל תווית שכוללת את gke.io

הוספת סבילות מותאמת אישית

רכיבי מערכת מסוג Pod בבעלות Google תמיד כוללים את הטולרנטיות הבאה:

  - key: components.gke.io/gke-managed-components
    operator: Exists

כדי לציין סבילות מותאמות אישית, מוסיפים את הדגל --system-component-tolerations לפקודה gcloud container attached clusters register:

gcloud container attached clusters register CLUSTER_NAME \
  --location=GOOGLE_CLOUD_REGION \
  ...
  --system-component-tolerations=COMPONENT_TOLERATION \

מחליפים את מה שכתוב בשדות הבאים:

  • CLUSTER_NAME: השם של האשכול.
  • GOOGLE_CLOUD_REGION: האזור Google Cloud שממנו מנהלים את האשכול.
  • COMPONENT_TOLERATION: רשימה מופרדת בפסיקים של ההגדרות של Toleration שרוצים להוסיף. אפשר לציין מפתח, ערך, אופרטור והשפעה בפורמטים הבאים:

    • עבור האופרטור Equal: משתמשים בפורמט key=value:operator:effect, לדוגמה, workload=hpc:Equal:NoSchedule. ההגדרה הזו אומרת שה-Pod יכול לסבול את הכתם רק אם הכתם מכיל את המפתח והערך המדויקים של workload=hpc.
    • עבור האופרטור Exists: משתמשים בפורמט key:operator:effect, לדוגמה, workload:Exists:NoSchedule. ההגדרה הזו אומרת שה-Pod יכול לסבול כל taint עם המפתח workload בצומת, בלי קשר לערך.
    • כדי לתזמן בכל צומת: משתמשים בפורמט :operator:effect, לדוגמה, :Exists:NoSchedule. ההגדרה הזו אומרת ש-Pod יכול לפעול בכל צומת עם אפקט NoSchedule, והוא מתעלם מהמפתח או מהערך של הכתם.

    רשימה של אופרטורים ואפקטים שאפשר להשתמש בהם מופיעה במאמר Taints and Tolerations במסמכי Kubernetes.

הוספת תוויות מותאמות אישית

כדי לציין תוויות מותאמות אישית, מוסיפים את הדגל --system-component-labels לפקודה gcloud container attached clusters register:

gcloud container attached clusters register CLUSTER_NAME \
  --location=GOOGLE_CLOUD_REGION \
  ...
  --system-component-labels=COMPONENT_LABEL \

מחליפים את מה שכתוב בשדות הבאים:

  • CLUSTER_NAME: השם של האשכול.
  • GOOGLE_CLOUD_REGION: האזור Google Cloud שממנו מנהלים את האשכול.
  • COMPONENT_LABEL: רשימה מופרדת בפסיקים של תווית אחת או יותר שרוצים להוסיף. אתם מספקים תווית וערך בפורמט של key=value. לדוגמה, env=production,region=us-east-1. לכל תווית צריך להיות מפתח, אבל הערך שמשויך למפתח יכול להיות ריק. לדוגמה, backend="".

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