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

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

כדי לפרוס אשכול משתמש, מתאימים אישית קובץ תצורה של אשכול כדי להגדיר את מאגרי הצמתים ואת הגדרות האשכול, ואז יוצרים את האשכול באמצעות הפקודה bmctl.

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

  • הגרסה האחרונה של bmctl (gs://anthos-baremetal-release/bmctl/1.36.200-gke.118/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. המינוי האזורי הזה מגביל את תנועת הנתונים של שירות Fleet לאזור שלכם. אם כוללים את 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
      ...
      

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

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

      ...
      # 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. אחרי שיוצרים את האשכול, אי אפשר לעדכן את הערך הזה.

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

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

מריצים את הפקודה 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

בדיקות קדם הפעלה חלות על אשכולות משתמשים שאתם יוצרים באמצעות הפקודה bmctl create cluster.

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

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