הגדרה של מאגרי צמתים ייעודיים

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

מאגר צמתים הוא קבוצה של צמתים באותו אשכול, שלכולם יש את אותה הגדרה. בדרך כלל, מגדירים מאגרי צמתים נפרדים כשרוצים להשתמש בתרמילים עם דרישות שונות של משאבים. לדוגמה, תרמילי apigee-cassandra דורשים אחסון מתמשך, בעוד שתרמילי Apigee Hybrid אחרים לא דורשים זאת.

במאמר הזה מוסבר איך להגדיר מאגרי צמתים ייעודיים להתקנה היברידית.

שימוש ב-nodeSelectors שמוגדרים כברירת מחדל

השיטה המומלצת היא להגדיר שתי קבוצות ייעודיות של צמתים: אחת בשביל פודים של Cassandra ואחת בשביל כל שאר הפודים של זמן הריצה. אם משתמשים בהגדרות ברירת המחדל של nodeSelector, תוכנת ההתקנה תקצה את ה-pods של Cassandra למאגר צמתים stateful בשם apigee-data, ואת כל שאר ה-pods למאגר צמתים stateless בשם apigee-runtime. כל מה שצריך לעשות הוא ליצור מאגרי צמתים עם השמות האלה, ו-Apigee hybrid יטפל בפרטים של תזמון הפודים בשבילכם:

שם ברירת המחדל של מאגר הצמתים תיאור
apigee-data מאגר צמתים עם שמירת מצב.
apigee-runtime מאגר צמתים ללא שמירת מצב.

בהמשך מוצגת הגדרת ברירת המחדל של nodeSelector. המאפיין apigeeData מציין מאגר צמתים עבור קבוצות ה-Pod של Cassandra. ‫apigeeRuntime מציין את מאגר הצמתים של כל שאר הפודים. אפשר לשנות את הגדרות ברירת המחדל האלה בקובץ השינויים, כמו שמוסבר בהמשך המאמר:

nodeSelector:
  requiredForScheduling: true
  apigeeRuntime:
    key: "cloud.google.com/gke-nodepool"
    value: "apigee-runtime"
  apigeeData:
    key: "cloud.google.com/gke-nodepool"
    value: "apigee-data"

כדי לוודא שה-Pods מתוזמנים בצמתים הנכונים, צריך ליצור שני מאגרי צמתים עם השמות apigee-data ו-apigee-runtime.

המאפיין requiredForScheduling

בקטע ההגדרות nodeSelector יש מאפיין בשם requiredForScheduling:

nodeSelector:
  requiredForScheduling: false
  apigeeRuntime:
    key: "cloud.google.com/gke-nodepool"
    value: "apigee-runtime"
  apigeeData:
    key: "cloud.google.com/gke-nodepool"
    value: "apigee-data"

אם הערך מוגדר ל-false, הפודים הבסיסיים יתוזמנו בין אם מאגרי הצמתים מוגדרים עם השמות הנדרשים ובין אם לא. כלומר, אם שכחתם ליצור מאגרי צמתים או אם בטעות נתתם למאגר צמתים שם שאינו apigee-runtime או apigee-data, ההתקנה של סביבת זמן הריצה ההיברידית תצליח. מערכת Kubernetes תחליט איפה להריץ את הפודים.

אם מגדירים את requiredForScheduling ל-true (ברירת המחדל), ההתקנה תיכשל אלא אם יש מאגרי צמתים שתואמים למפתחות ולערכים המוגדרים של nodeSelector.

שימוש בשמות מותאמים אישית של מאגרי צמתים

אם אתם לא רוצים להשתמש במאגרי צמתים עם שמות ברירת המחדל, אתם יכולים ליצור מאגרי צמתים עם שמות בהתאמה אישית ולציין את השמות האלה בקטע nodeSelector. לדוגמה, בהגדרה הבאה, פודים של Cassandra מוקצים למאגר בשם my-cassandra-pool, וכל שאר הפודים מוקצים למאגר בשם my-runtime-pool:

nodeSelector:
  requiredForScheduling: false
  apigeeRuntime:
    key: "cloud.google.com/gke-nodepool"
    value: "my-runtime-pool"
  apigeeData:
    key: "cloud.google.com/gke-nodepool"
    value: "my-cassandra-pool"

שינוי מאגר הצמתים לרכיבים ספציפיים ב-GKE

אפשר גם לעקוף את ההגדרות של מאגר הצמתים ברמת הרכיב הבודד. לדוגמה, ההגדרה הבאה מקצה את מאגר הצמתים עם הערך apigee-custom לרכיב runtime:

runtime:
  nodeSelector:
    key: cloud.google.com/gke-nodepool
    value: apigee-custom

אפשר לציין מאגר צמתים מותאם אישית בכל אחד מהרכיבים הבאים:

  • istio
  • mart
  • synchronizer
  • runtime
  • cassandra
  • udca
  • logger

הגדרת מאגר הצמתים ב-GKE וב-Google Distributed Cloud

בפלטפורמות GKE ו-Google Distributed Cloud ‏ (GDC), למאגרי הצמתים צריך להיות שם ייחודי שאתם מציינים כשאתם יוצרים את המאגרים, ומערכות GKE/GDC מתייגות אוטומטית כל צומת בתווית הבאה:

cloud.google.com/gke-nodepool=THE_NODE_POOL_NAME

אם יוצרים מאגרי צמתים בשמות apigee-data ו-apigee-runtime, לא צריך לבצע הגדרות נוספות. אם רוצים להשתמש בשמות צמתים בהתאמה אישית, אפשר לעיין במאמר בנושא שימוש בשמות מותאמים אישית של מאגרי צמתים.

הגדרת מאגר צמתים בפלטפורמות אחרות של Kubernetes.

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

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

  1. מריצים את הפקודה הבאה כדי לקבל רשימה של צמתי העובדים באשכול:
    kubectl -n APIGEE_NAMESPACE get nodes

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

    nodeSelector:
      requiredForScheduling: true
      apigeeRuntime:
        key: "pool1-key"
        value: "pool1-label"
      apigeeData:
        key: "pool2-key"
        value: "pool2-label"
    

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

    אפשר גם לעקוף את ההגדרות של מאגר הצמתים ברמת הרכיב הבודד. לדוגמה, ההגדרה הבאה מקצה את מאגר הצמתים עם הערך apigee-custom לרכיב runtime:

    runtime:
      nodeSelector:
        key: apigee.com/apigee-nodepool
        value: apigee-custom

    אפשר לציין מאגר צמתים מותאם אישית בכל אחד מהרכיבים הבאים:

    • apigeeingressgateway
    • cassandra
    • logger
    • mart
    • metrics
    • runtime
    • synchronizer
    • udca