הפעלת בידוד של משאבי מחשוב

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

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

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

‫Kf יוצרת פוד של Kubernetes כדי להריץ כל Kf Build. אפשר להשתמש בתכונה buildNodeSelector כדי לבודד משאבי מחשוב להרצה של פודי ה-Build בלבד. מקרה שימוש אחד הוא בידוד של פודים של Build כדי להפעיל אותם בצמתים עם SSD, בזמן הפעלת הפודים של האפליקציה בצמתים אחרים. התכונה BuildNodeSelectors מספקת אופטימיזציה של משאבי מחשוב וגמישות באשכול. מידע נוסף מופיע בהמשך הדף בקטע 'הגדרה של BuildNodeSelectors ושל מאגר צמתים לבנייה'.

הגדרת nodeSelector באשכול Kf

כברירת מחדל, בידוד המחשוב מושבת. כדי להגדיר תוויות ו-nodeSelector, פועלים לפי השלבים הבאים.

  1. מוסיפים תווית (distype=ssd) לצומת שבו רוצים שה-Pods של האפליקציה ינחתו.

    kubectl label nodes nodeid disktype=ssd
  2. מוסיפים את אותה תווית במרחב Kf. כל האפליקציות שנפרסו במרחב הזה ינחתו בצמתים שעומדים בדרישות.

    kf configure-space set-nodeselector space-name disktype ssd

    אפשר להוסיף כמה תוויות על ידי הפעלת אותה פקודה שוב.

  3. בודקים שהתווית מוגדרת.

    kf configure-space get-nodeselector space-name
  4. למחוק את התווית מהמרחב.

    kf configure-space unset-nodeselector space-name disktype

החלפת nodeSelector עבור מערכי Kf

אפשר לטרגט פריסה של אפליקציות Kf לפי סוג ה-stack (buildpack) שמשמש לבנייה ולאריזה של האפליקציה. לדוגמה, אם רוצים שאפליקציות שנבנו באמצעות spaceStacksV2 יגיעו לצמתים עם ליבת Linux 4.4.1. ערכי nodeSelector במערך מבטלים את הערכים שהוגדרו במרחב.

כדי להגדיר את nodeSelector במערך:

  1. עורכים את config-defaults של אשכול Kf ומוסיפים את התוויות.

    $ kubectl -n kf edit configmaps config-defaults
    
  2. מוסיפים את nodeSelector להגדרת הערימות.

    .....
    .....
    spaceStacksV2: |
    - name:  cflinuxfs3
            image: cloudfoundry/cflinuxfs3
            nodeSelector:
                  OS_KERNEL: LINUX_4.4.1 
    .....
    .....
    

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

בוררי הצמתים של ה-Build משפיעים רק על החלפת בוררי הצמתים של ה-Build pods, ולא על ה-App pods. לדוגמה, אם מציינים את הסלקטורים של הצומת גם ב-Space וגם ב-Kfsystem, הפודים של האפליקציה יכללו את הסלקטורים של הצומת מ-Space, והפודים של ה-Build יכללו את הסלקטורים של הצומת מ-Kfsystem. אם מציינים את הסלקטורים של הצומת רק ב-Space, גם הפודים של האפליקציה וגם הפודים של ה-Build יכללו את הסלקטורים של הצומת מ-Space.

  1. מוסיפים תוויות (לדוגמה, disktype:ssd) לצמתים שרוצים להקצות להם את ה-pods של Build.

    kubectl label nodes nodeid disktype=ssd
  2. מוסיפים או מעדכנים בוררי צמתים של Build (בפורמט של זוגות key:value) על ידי תיקון של KfSystem CR.

    kubectl patch kfsystem kfsystem --type='json' -p='[{'op': 'replace', 'path': '/spec/kf/config/buildNodeSelectors', 'value': {<key>:<value>}}]'

    לדוגמה, כדי להוסיף את disktype=ssd כבורר של צומת Build:

    kubectl patch kfsystem kfsystem --type='json' -p='[{'op': 'replace', 'path': '/spec/kf/config/buildNodeSelectors', 'value': {"disktype":"ssd"}}]'