יצירת אשכולות משתמשים

ב-Google Distributed Cloud, אשכולות משתמשים מריצים את עומסי העבודה, ובארכיטקטורה מרובת אשכולות, אשכולות משתמשים נוצרים ומנוהלים על ידי אשכול אדמין.

אחרי שיוצרים אשכול אדמין, הפעלת הפקודה bmctl create config יוצרת קובץ YAML שאפשר לערוך כדי להגדיר את אשכול המשתמשים. כדי להחיל את ההגדרה וליצור את אשכול המשתמשים, משתמשים בפקודה bmctl create cluster. בדיקות Preflight רלוונטיות לאשכולות משתמשים שנוצרו באמצעות הפקודה bmctl create cluster.

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

דרישות מוקדמות

  • הגרסה האחרונה של bmctl מורדת (gs://anthos-baremetal-release/bmctl/1.36.100-gke.144/linux-amd64/bmctl) מ-Cloud Storage.
  • אשכול אדמין פעיל עם גישה לשרת API של האשכול (controlPlaneVIP).
  • לצמתים של אשכול האדמין יש קישוריות רשת לכל הצמתים באשכול המשתמשים של היעד.
  • תחנת עבודה שמופעלת בה מערכת bmctl עם קישוריות רשת לכל הצמתים באשכולות המשתמשים של היעד.
  • תחנת העבודה של האדמין יכולה ליצור חיבור SSH לכל אחד מצמתי אשכול המשתמשים.
  • חשבון השירות Connect-register מוגדר באשכול האדמין לשימוש ב-Connect.

הפעלת SELinux

אם רוצים להפעיל את SELinux כדי לאבטח את הקונטיינרים, צריך לוודא ש-SELinux מופעל במצב Enforced בכל המכונות המארחות. החל מגרסה 1.9.0 של Google Distributed Cloud ואילך, אפשר להפעיל או להשבית את SELinux לפני או אחרי יצירת אשכול או שדרוג אשכול. ‫SELinux מופעל כברירת מחדל ב-Red Hat Enterprise Linux ‏ (RHEL). אם SELinux מושבת במכונות המארחות שלכם או שאתם לא בטוחים, תוכלו לקרוא את המאמר אבטחת הקונטיינרים באמצעות SELinux כדי להבין איך להפעיל אותו.

‫Google Distributed Cloud תומך ב-SELinux רק במערכות RHEL.

יצירת קובץ תצורה של אשכול משתמשים

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

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

  1. יוצרים קובץ תצורה של אשכול משתמשים באמצעות הפקודה bmctl create config:

    bmctl create config -c USER_CLUSTER_NAME
    

    לדוגמה, מריצים את הפקודה הבאה כדי ליצור קובץ תצורה לאשכול משתמשים בשם user1:

    bmctl create config -c user1
    

    הקובץ נכתב ב-bmctl-workspace/user1/user1.yaml. הנתיב הגנרי לקובץ הוא bmctl-workspace/CLUSTER NAME/CLUSTER_NAME.yaml.

  2. עורכים את קובץ התצורה עם השינויים הבאים:

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

      ...
        gcrKeyPath: (path to Artifact Registry service account key)
        sshPrivateKeyPath: (path to SSH private key, used for node access)
        gkeConnectAgentServiceAccountKeyPath: (path to Connect agent service account key)
        gkeConnectRegisterServiceAccountKeyPath: (path to Hub registration service account key)
        cloudOperationsServiceAccountKeyPath: (path to Cloud Operations service account key)
      ...
      
    • משנים את ההגדרה כך שסוג האשכול יהיה user במקום admin:

      ...
      spec:
        # Cluster type. This can be:
        #   1) admin:  to create an admin cluster. This can later be used to create
        #   user clusters.
        #   2) user:   to create a user cluster. Requires an existing admin cluster.
        #   3) hybrid: to create a hybrid cluster that runs admin cluster
        #   components and user workloads.
        #   4) standalone: to create a cluster that manages itself, runs user
        #   workloads, but does not manage other clusters.
        type: user
      ...
      
    • כדי לרשום את האשכולות ב-Fleet, צריך לציין את מזהה הפרויקט בשדה gkeConnect.projectID. הפרויקט הזה נקרא פרויקט המארח של ה-Fleet.

      ...
      gkeConnect:
         projectID: my-project-123
      ...
      
      • אופציונלי, אפשר להוסיף את gkeConnect.location למפרט של האשכול כדי לציין את האזור Google Cloud שבו פועלים שירותי Fleet ו-Connect. חברות אזורית מגבילה את התנועה של שירותי הצי למדינה או לאזור שלכם. אם כוללים את gkeConnect.location במפרט האשכול, האזור שמציינים צריך להיות זהה לאזור שהוגדר ב-clusterOperations.location. אם האזורים לא זהים, יצירת האשכול תיכשל.
    • אם GKE On-Prem API מופעל בפרויקטGoogle Cloud , כל האשכולות בפרויקט נרשמים ל-GKE On-Prem API באופן אוטומטי באזור שהוגדר ב-clusterOperations.location.

      • אם רוצים לרשום את כל האשכולות בפרויקט ל-GKE On-Prem API, צריך לבצע את השלבים שבקטע לפני שמתחילים כדי להפעיל את GKE On-Prem API בפרויקט ולהשתמש בו.

      • אם לא רוצים לרשום את האשכול ל-GKE On-Prem API, צריך לכלול את הקטע הזה ולהגדיר את gkeOnPremAPI.enabled ל-false. אם לא רוצים לרשום אף אשכול בפרויקט, צריך להשבית את gkeonprem.googleapis.com (שם השירות של GKE On-Prem API) בפרויקט. הוראות מפורטות מופיעות במאמר השבתת שירותים.

    • מציינים את כתובת ה-IP של צומת מישור הבקרה.

      ...
      # Sample control plane config
      controlPlane:
       nodePoolSpec:
         nodes:
         - address: 10.200.0.20
      ...
      
    • מוודאים שהמפרטים של האדמין ושל אשכול המשתמשים עבור כתובות ה-VIP של מאזן העומסים ומאגרי הכתובות משלימים זה את זה, ולא חופפים לאשכולות קיימים. בדוגמה הבאה מוצג זוג לדוגמה של הגדרות אדמין ומשתמש לאשכול, עם איזון עומסים ומאגרי כתובות:

      ...
      # Sample admin cluster config for load balancer and address pools
        loadBalancer:
          vips:
            controlPlaneVIP: 10.200.0.49
            ingressVIP: 10.200.0.50
          addressPools:
          - name: pool1
            addresses:
            - 10.200.0.50-10.200.0.70
      ...
      ...
      # Sample user cluster config for load balancer and address pools
      loadBalancer:
          vips:
            controlPlaneVIP: 10.200.0.71
            ingressVIP: 10.200.0.72
          addressPools:
          - name: pool1
            addresses:
            - 10.200.0.72-10.200.0.90
      ...
      

      שאר קובצי התצורה של אשכול המשתמשים זהים לקובץ התצורה של אשכול האדמין.

    • מציינים את צפיפות ה-Pods של צמתי האשכול:

      ...
      # NodeConfig specifies the configuration that applies to all nodes in the cluster.
      nodeConfig:
        # podDensity specifies the pod density configuration.
        podDensity:
          # maxPodsPerNode specifies at most how many pods can be run on a single node.
          maxPodsPerNode: 110
      ...
      

      במקרה של אשכולות משתמשים, הערכים המותרים ל-maxPodsPerNode הם 32-250. ערך ברירת המחדל אם לא צוין הוא 110. אחרי שיוצרים את האשכול, אי אפשר לעדכן את הערך הזה.

      צפיפות ה-Pods מוגבלת גם על ידי משאבי ה-IP הזמינים של האשכול. מידע נוסף זמין במאמר בנושא רשתות Pod.

יצירת אשכול משתמשים

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

bmctl create cluster -c USER_CLUSTER_NAME --kubeconfig ADMIN_KUBECONFIG

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

  • ‫USER_CLUSTER_NAME: שם האשכול שנוצר בקטע הקודם.
  • ‫ADMIN_KUBECONFIG: הנתיב לקובץ kubeconfig של אשכול האדמין.

לדוגמה, אם שם אשכול המשתמשים הוא user1 וקובץ ה-kubeconfig של אשכול האדמין נמצא בנתיב kubeconfig bmctl-workspace/admin/admin-kubeconfig, הפקודה תהיה:

bmctl create cluster -c user1 --kubeconfig bmctl-workspace/admin/admin-kubeconfig

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

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