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

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

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

  • הצגת מאגר צמתים: הצגת המאפיינים והמצב של מאגרי הצמתים הקיימים.

  • שינוי הגודל של מאגר צמתים: הגדלה או הקטנה ידנית של מאגרי הצמתים כדי להתאים לתנודות בתנועת עומסי העבודה.

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

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

המסמך הזה מיועד למפתחי אפליקציות בקבוצת מפעיל האפליקציות ולאדמינים ב-IT בקבוצת אדמינים של הפלטפורמה, שאחראים על ניהול אשכולות Kubernetes בארגון שלהם. מידע נוסף זמין במאמר בנושא קהלים ב-GDC עם air gap.

לפני שמתחילים

כדי להשלים את המשימות שמתוארות במאמר הזה, צריך לבקש את ההרשאות הנדרשות ולהכין את הסביבה.

שליחת בקשה לתפקידים ב-IAM

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

תפקידים משותפים באשכול

כדי ליצור, למחוק, לערוך או לראות את מאגרי הצמתים של אשכול משותף, צריך לפנות לאדמין IAM בארגון ולבקש את התפקיד אדמין של אשכול משתמשים (user-cluster-admin). התפקיד הזה לא משויך למרחב שמות.

תפקידים רגילים באשכול

פנו לאדמין של IAM בפרויקט ובקשו ממנו להקצות לכם את התפקידים הבאים:

  • אדמין רגיל של אשכול (standard-cluster-admin): יצירה, מחיקה, עריכה או צפייה במאגרי הצמתים של אשכול רגיל.

  • Cluster Developer (cluster-developer): create, delete, edit, or view a standard cluster. התפקיד הזה נדרש כדי להציג את פרטי מאגר הצמתים של האשכול במסוף GDC.

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

הכנת הסביבה

כדי להריץ פקודות מול אשכול Kubernetes באמצעות ה-API, צריך לוודא שיש לכם את המשאבים הבאים:

  • מאתרים את שם אשכול Kubernetes או שואלים חבר בקבוצת האדמינים של הפלטפורמה מה שם האשכול.

  • משתמשים בשם של אשכול Kubernetes כדי להחליף את KUBERNETES_CLUSTER_NAME בהוראות האלה.

  • נכנסים לחשבון ויוצרים את קובץ ה-kubeconfig של שרת ה-API לניהול עבור אשכול Kubernetes.

  • משתמשים בנתיב kubeconfig של שרת ה-API לניהול כדי להחליף את MANAGEMENT_API_SERVER בהוראות האלה.

הוספת מאגר צמתים

כדי להוסיף מאגר צמתים לאשכול Kubernetes קיים, מבצעים את השלבים הבאים:

המסוף

  1. בכלי לבחירת פרויקטים, בוחרים את הפרויקט או הארגון.

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

  2. בתפריט הניווט, בוחרים באפשרות Kubernetes Engine > Clusters.

  3. לוחצים על האשכול ברשימת האשכולות. יוצג הדף Cluster details.

  4. בוחרים באפשרות Node pools > Add node pool (מאגרי צמתים > הוספת מאגר צמתים).

  5. נותנים שם למאגר הצמתים. אי אפשר לשנות את השם אחרי שיוצרים את מאגר הצמתים.

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

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

    • סוג המכונה
    • vCPU
    • זיכרון
  8. לוחצים על Save.

API

  1. פותחים את מפרט המשאב המותאם אישית Cluster באמצעות kubectl CLI בעורך האינטראקטיבי:

    kubectl edit clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME \
        -n KUBERNETES_CLUSTER_NAMESPACE \
        --kubeconfig MANAGEMENT_API_SERVER
    

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

    • KUBERNETES_CLUSTER_NAME: שם האשכול.
    • KUBERNETES_CLUSTER_NAMESPACE: מרחב השמות של האשכול. במקרה של אשכולות משותפים, משתמשים במרחב השמות platform. באשכולות רגילים, משתמשים במרחב השמות של הפרויקט באשכול.
    • MANAGEMENT_API_SERVER: נתיב kubeconfig של שרת ה-API האזורי שבו מתארח אשכול Kubernetes.
  2. מוסיפים רשומה חדשה בקטע nodePools:

    nodePools:
    # Several lines of code are omitted here.
    - machineTypeName: MACHINE_TYPE
      name: NODE_POOL_NAME
      nodeCount: NUMBER_OF_WORKER_NODES
      taints: TAINTS
      labels: LABELS
      acceleratorOptions:
        gpuPartitionScheme: GPU_PARTITION_SCHEME
    

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

    • MACHINE_TYPE: סוג המכונה של צמתי העובדים במאגר הצמתים. אפשר לראות את סוגי המכונות הזמינים להגדרה.
    • NODE_POOL_NAME: שם מאגר הצמתים.
    • NUMBER_OF_WORKER_NODES: מספר צמתי העובדים שיוקצו במאגר הצמתים.
    • TAINTS: ההכתמות שיחולו על הצמתים במאגר הצמתים הזה. השדה הזה הוא אופציונלי.
    • LABELS: התוויות שיוחלו על הצמתים של מאגר הצמתים הזה. הוא מכיל רשימה של צמדי מפתח/ערך. זהו שדה אופציונלי.
    • GPU_PARTITION_SCHEME: תוכנית החלוקה של ה-GPU, אם מריצים עומסי עבודה של GPU. לדוגמה, mixed-2. אם השדה הזה לא מוגדר, ה-GPU לא מחולק למחיצות. לרשימת פרופילים זמינים של Multi-Instance GPU ‏ (MIG), אפשר לעיין במאמר בנושא פרופילים נתמכים של MIG.
  3. שומרים את הקובץ ויוצאים מהעורך.

הצגת מאגרי צמתים

כדי לראות את מאגרי הצמתים הקיימים באשכול Kubernetes, מבצעים את השלבים הבאים:

המסוף

  1. בכלי לבחירת פרויקטים, בוחרים את הפרויקט או הארגון.

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

  2. בתפריט הניווט, בוחרים באפשרות Kubernetes Engine > Clusters.

  3. לוחצים על האשכול ברשימת האשכולות. יוצג הדף Cluster details.

  4. בוחרים באפשרות Node pools (מאגרי צמתים).

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

API

  • כדי להציג את מאגרי הצמתים של אשכול Kubernetes ספציפי:

    kubectl get clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME \
        -n KUBERNETES_CLUSTER_NAMESPACE \
        -o json --kubeconfig MANAGEMENT_API_SERVER | \
        jq .status.workerNodePoolStatuses
    

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

    • KUBERNETES_CLUSTER_NAME: שם האשכול.
    • KUBERNETES_CLUSTER_NAMESPACE: מרחב השמות של האשכול. במקרה של אשכולות משותפים, משתמשים במרחב השמות platform. באשכולות רגילים, משתמשים במרחב השמות של הפרויקט באשכול.

    הפלט אמור להיראות כך:

    [
      {
        "conditions": [
          {
            "lastTransitionTime": "2023-08-31T22:16:17Z",
            "message": "",
            "observedGeneration": 2,
            "reason": "NodepoolReady",
            "status": "True",
            "type": "Ready"
          },
          {
            "lastTransitionTime": "2023-08-31T22:16:17Z",
            "message": "",
            "observedGeneration": 2,
            "reason": "ReconciliationCompleted",
            "status": "False",
            "type": "Reconciling"
          }
        ],
        "name": "worker-node-pool",
        "readyNodes": 3,
        "readyTimestamp": "2023-08-31T18:59:46Z",
        "reconcilingNodes": 0,
        "stalledNodes": 0,
        "unknownNodes": 0
      }
    ]
    

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

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

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

המסוף

  1. בכלי לבחירת פרויקטים, בוחרים את הפרויקט או הארגון.

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

  2. במרכז הבקרה, בוחרים את הפרויקט שבו נמצא האשכול שרוצים לערוך.

  3. בתפריט הניווט, בוחרים באפשרות Kubernetes Engine > Clusters.

  4. בוחרים את שם האשכול שאליו משויך מאגר הצמתים. יופיע הדף Cluster details.

  5. לוחצים על הכרטיסייה Node pools.

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

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

  8. לוחצים על Save.

  9. חוזרים לכרטיסייה Node pools (מאגרי צמתים) של האשכול ומוודאים שמאגר הצמתים שגודלו שונה הוא בסטטוס Ready וכולל את מספר הצמתים הנכון. יכול להיות שיחלפו כמה דקות עד שמאגר הצמתים יתרחב בהתאם למפרט.

    כדי לוודא שמאגר הצמתים מוכן, משתמשים במסוף.

API

  1. פותחים את מפרט המשאב המותאם אישית Cluster באמצעות ה-CLI של kubectl בעורך האינטראקטיבי:

    kubectl edit clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME \
        -n KUBERNETES_CLUSTER_NAMESPACE \
        --kubeconfig MANAGEMENT_API_SERVER
    

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

    • KUBERNETES_CLUSTER_NAME: שם האשכול שמארח את מאגר הצמתים.
    • KUBERNETES_CLUSTER_NAMESPACE: מרחב השמות של האשכול. במקרה של אשכולות משותפים, משתמשים במרחב השמות platform. באשכולות רגילים, משתמשים במרחב השמות של הפרויקט באשכול.
    • MANAGEMENT_API_SERVER: נתיב kubeconfig של שרת ה-API האזורי שבו מתארח אשכול Kubernetes.
  2. מעדכנים את השדה nodeCount של מאגר הצמתים כדי לשנות את הגודל:

    nodePools:
    # Several lines of code are omitted here.
    - machineTypeName: n2-standard-2-gdc
      name: nodepool-1
      nodeCount: NUMBER_OF_WORKER_NODES
    

    מחליפים את NUMBER_OF_WORKER_NODES במספר המעודכן של צמתי העובדים שצריך להקצות במאגר הצמתים.

  3. שומרים את הקובץ ויוצאים מהעורך.

  4. כדי לוודא שהשלמתם את שינוי גודל הצומת, בודקים את ההגדרות של מאגר הצמתים:

    kubectl get clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME \
        -n KUBERNETES_CLUSTER_NAMESPACE -o json \
        --kubeconfig MANAGEMENT_API_SERVER | jq .status.workerNodePoolStatuses
    

    מוודאים שהמספר readyNodes משקף את מספר הצמתים שהגדרתם עבור מאגר הצמתים. יכול להיות שיחלפו כמה דקות עד שמאגר הצמתים יתרחב בהתאם למפרט.

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

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

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

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

המסוף

  1. בכלי לבחירת פרויקטים, בוחרים את הפרויקט או הארגון.

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

  2. בתפריט הניווט, בוחרים באפשרות Kubernetes Engine > Clusters.

  3. לוחצים על האשכול שמארח את מאגר הצמתים שרוצים למחוק.

  4. בוחרים באפשרות Node pools (מאגרי צמתים).

  5. לוחצים על מחיקה לצד מאגר הצמתים שרוצים למחוק.

API

  1. פותחים את מפרט המשאב המותאם אישית Cluster באמצעות ה-CLI של kubectl בעורך האינטראקטיבי:

    kubectl edit clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME \
        -n KUBERNETES_CLUSTER_NAMESPACE \
        --kubeconfig MANAGEMENT_API_SERVER
    

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

    • KUBERNETES_CLUSTER_NAME: שם האשכול.
    • KUBERNETES_CLUSTER_NAMESPACE: מרחב השמות של האשכול. במקרה של אשכולות משותפים, משתמשים במרחב השמות platform. באשכולות רגילים, משתמשים במרחב השמות של הפרויקט באשכול.
    • MANAGEMENT_API_SERVER: נתיב kubeconfig של שרת ה-API האזורי שבו מתארח אשכול Kubernetes.
  2. מסירים את הרשומה של מאגר הצמתים מהקטע nodePools. לדוגמה, בקטע הקוד הבא, צריך להסיר את השדות machineTypeName, name ו-nodeCount:

    nodePools:
    # Several lines of code are omitted here.
    - machineTypeName: n2-standard-2-gdc
      name: nodepool-1
      nodeCount: 3
    

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

  3. שומרים את הקובץ ויוצאים מהעורך.

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