יצירת אשכולות בסיסיים

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

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

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

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

  1. חשוב לוודא שהגדרתם את החומרה ותכננתם את כתובות ה-IP כמו שמתואר בחלק הקודם של המדריך הזה, הגדרת תשתית מינימלית. אפשרות אחרת היא להשתמש בכלי לתכנון דרישות הרשת בקטע דרישות מוקדמות בתהליך יצירת אשכול אדמין מסוג Bare Metal במסוף Google Cloud .

  2. אם אתם רוצים להשתמש ב-Terraform כדי ליצור את אשכול המשתמשים, אתם צריכים Terraform בתחנת העבודה של האדמין או במחשב אחר.

    1. מוודאים שהרכיבים העדכניים של Google Cloud CLI מותקנים:

      gcloud components update
      
  3. כדי להפעיל את GKE On-Prem API ולהשתמש בו, פועלים לפי השלבים הבאים:

    1. מפעילים את ה-API בפרויקט:

      gcloud services enable \
          --project PROJECT_ID \
          gkeonprem.googleapis.com
      

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

      אם מופיעה השגיאה PERMISSION_DENIED, צריך לבדוק שוב את מזהה הפרויקט שהזנתם. אם מזהה הפרויקט נכון, מריצים את הפקודה gcloud auth login כדי להיכנס ל-Google Cloud CLI באמצעות החשבון שיש לו גישה לפרויקט.

    2. אם זו הפעם הראשונה שאתם מפעילים את GKE On-Prem API בפרויקט, אתם צריכים לאתחל את ה-API. כדי לעשות את זה, מריצים פקודה ב-CLI של gcloud שמציגה את הגרסאות הזמינות שאפשר להשתמש בהן כדי ליצור אשכול:

      gcloud container bare-metal clusters query-version-config \
          --project=PROJECT_ID \
          --location="us-central1"
      

סקירה כללית של התהליך

יצירת אשכולות בסיסיים כוללת את השלבים העיקריים הבאים:

  1. איסוף מידע שמשמש להגדרת האשכולות.

  2. יוצרים אשכול אדמין לניהול אשכול המשתמשים.

  3. יוצרים אשכול משתמשים שיכול להריץ את עומסי העבודה.

1. איסוף מידע

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

מידע בסיסי על האשכול
השם של אשכול האדמין שיוצרים. המיקום והשמות של ארטיפקטים של האשכול בתחנת העבודה של האדמין מבוססים על שם האשכול. מרחב השמות של האשכול נגזר משם האשכול. ADMIN_CLUSTER_NAME
השם של אשכול המשתמשים שאתם יוצרים. המיקום והשמות של ארטיפקטים של האשכול בתחנת העבודה של האדמין מבוססים על שם האשכול. מרחב השמות של האשכול נגזר משם האשכול. USER_CLUSTER_NAME
הגרסה של bmctl שהורדתם בחלק הראשון של המדריך הזה. CLUSTER_VERSION
פרטי החשבון
הנתיב לקובץ המפתח הפרטי של SSH בתחנת העבודה של האדמין. ברירת המחדל של הנתיב היא
/home/USERNAME/.ssh/id_rsa.
SSH_PRIVATE_KEY_PATH
המזהה של Google Cloud הפרויקט שבו רוצים להשתמש כדי לקשר את האשכול אל Google Cloud ולצפות ביומנים ובמדדים. הפרויקט הזה נקרא גם פרויקט המארח של ה-Fleet. PROJECT_ID
כתובת האימייל שמשויכת לחשבון Google Cloud שלך. לדוגמה: alex@example.com. GOOGLE_ACCOUNT_EMAIL
כתובות IP של מכונות צמתים
כתובת IP אחת לצומת של מישור הבקרה של אשכול האדמין. ADMIN_CP_NODE_IP
כתובת IP אחת לצומת של מישור הבקרה של אשכול המשתמשים. USER_CP_NODE_IP
כתובת IP אחת לצומת העובד של אשכול המשתמשים. USER_WORKER_NODE_IP
כתובות VIP
כתובת ה-VIP של שרת ה-API של Kubernetes באשכול הניהול. ADMIN_CP_VIP
כתובת IP וירטואלית (VIP) לשרת ה-API של Kubernetes באשכול המשתמשים. USER_CP_VIP
כתובת VIP אחת לשימוש ככתובת חיצונית עבור הפרוקסי של תעבורת הכניסה. USER_INGRESS_VIP
טווח של עשר כתובות IP לשימוש ככתובות IP חיצוניות לשירותים מסוג LoadBalancer. שימו לב שהטווח הזה כולל את כתובת ה-VIP של הכניסה, שנדרשת על ידי MetalLB. אף כתובת IP אחרת לא יכולה לחפוף לטווח הזה. START_IP-END_IP
‫CIDR של Pod ושל Service
טווח כתובות IP בפורמט בלוקים של CIDR לשימוש של Pods באשכול הניהול. ערך ההתחלה המומלץ, שממולא מראש בקובץ התצורה של האשכול שנוצר, הוא 192.168.0.0/16. 192.168.0.0/16
טווח של כתובות IP בפורמט בלוקים של CIDR לשימוש בשירותים באשכול הניהול. ערך ההתחלה המומלץ, שממולא מראש בקובץ התצורה של האשכול שנוצר, הוא 10.96.0.0/20. 10.96.0.0/20
טווח כתובות IP בפורמט בלוקים של CIDR לשימוש על ידי Pods באשכול המשתמש. ערך ההתחלה המומלץ, שמוזן מראש בקובץ התצורה של האשכול שנוצר ומוגדר כערך ברירת המחדל במסוף, הוא 192.168.0.0/16. 192.168.0.0/16
טווח של כתובות IP בפורמט בלוקים של CIDR לשימוש בשירותים באשכול המשתמשים. ערך ההתחלה המומלץ, שמוזן מראש בקובץ התצורה של האשכול שנוצר ומוגדר כערך ברירת המחדל במסוף, הוא 10.96.0.0/20. 10.96.0.0/20

2. יצירת אשכול אדמין

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

כשמפעילים את GKE On-Prem API ‏ (gkeonprem.googleapis.com) בפרויקט, אשכולות חדשים שנוצרים נרשמים אוטומטית ל-API. ההרשמה מתבצעת גם אם לא מציינים את spec.gkeOnPremAPI בקובץ ההגדרות של האשכול. ההרשמה באמצעות ה-API הזה שמארחGoogle Cloudמאפשרת לכם לנהל את מחזור החיים של האשכול באמצעות מסוףGoogle Cloud או ה-CLI של gcloud.

כדי להשבית את ההרשמה האוטומטית, מבטלים את ההערה בקטע spec.gkeOnPremAPI בקובץ ההגדרות של האשכול ומגדירים את spec.gkeOnPremAPI.enabled ל-false לפני שיוצרים את האשכול. השדה spec.gkeOnPremAPI.enabled ניתן לשינוי, כך שאפשר לבטל את ההרשמה של האשכול בכל שלב אחרי שהוא נוצר.

כדי ליצור אשכול אדמין להתקנה מינימלית:

  1. מגדירים את פרטי ברירת המחדל שאפשר להשתמש בהם ב-Google Distributed Cloud כדי ליצור את האשכול באמצעות הפקודה הבאה:

    gcloud auth application-default login
  2. כדי ליצור קובץ תצורה של אשכול, מריצים את הפקודה הבאה מהספרייה /baremetal בתחנת העבודה של האדמין:

    bmctl create config -c ADMIN_CLUSTER_NAME \
        --enable-apis --create-service-accounts --project-id=PROJECT_ID
  3. בודקים את קובץ ההגדרות של אשכול האדמין:

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

    • התגובות הוסרו מהדוגמה הזו כדי לשפר את הקריאות.
    • הסרת המפרט NodePool. אסור להשתמש בצמתי עובדים באשכול אדמין.
    gcrKeyPath: bmctl-workspace/.sa-keys/PROJECT_ID-anthos-baremetal-gcr.json
    sshPrivateKeyPath: SSH_PRIVATE_KEY_PATH
    gkeConnectAgentServiceAccountKeyPath: bmctl-workspace/.sa-keys/PROJECT_ID-anthos-baremetal-connect.json
    gkeConnectRegisterServiceAccountKeyPath: bmctl-workspace/.sa-keys/PROJECT_ID-anthos-baremetal-register.json
    cloudOperationsServiceAccountKeyPath: bmctl-workspace/.sa-keys/PROJECT_ID-anthos-baremetal-cloud-ops.json
    ---
    apiVersion: v1
    kind: Namespace
    metadata:
      name: cluster-ADMIN_CLUSTER_NAME
    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: ADMIN_CLUSTER_NAME
      namespace: cluster-ADMIN_CLUSTER_NAME
    spec:
      type: admin
      profile: default
      anthosBareMetalVersion: CLUSTER_VERSION
      gkeConnect:
        projectID: PROJECT_ID
      controlPlane:
        nodePoolSpec:
          nodes:
          - address: ADMIN_CP_NODE_IP
      clusterNetwork:
        pods:
          cidrBlocks:
          - 192.168.0.0/16
        services:
          cidrBlocks:
          - 10.96.0.0/20
      loadBalancer:
        mode: bundled
        ports:
          controlPlaneLBPort: 443
        vips:
          controlPlaneVIP: ADMIN_CP_VIP
      clusterOperations:
        projectID: PROJECT_ID
        location: us-central1
      storage:
        lvpNodeMounts:
          path: /mnt/localpv-disk
          storageClassName: local-disks
        lvpShare:
          path: /mnt/localpv-share
          storageClassName: local-shared
          numPVUnderSharedPath: 5
      nodeConfig:
        podDensity:
          maxPodsPerNode: 250
      # GKEOnPremAPI (Optional) Specify if you wish to explicitly enable/disable the cloud hosted gkeonprem
      # API to enable/disable cluster lifecycle management from gcloud UI and Terraform.
      # gkeOnPremAPI:
        # enabled: false
        # location is the Cloud location for the cluster resource metadata where the cluster will be enrolled.
        # location: us-central1
  4. מחליפים את התוכן של קובץ ההגדרות שנוצר בתחנת העבודה של האדמין בתוכן מהדוגמה הקודמת.

    פותחים את הקובץ שנוצר, bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME.yaml ומחליפים את התוכן שלו בתוכן של הדוגמה שבדקתם בשלב הקודם.

  5. כדי ליצור את אשכול האדמין, מריצים את הפקודה הבאה מהספרייה /baremetal בתחנת העבודה של האדמין:

    bmctl create cluster -c ADMIN_CLUSTER_NAME

    הפקודה bmctl מציגה פלט על המסך בזמן שהיא מריצה בדיקות מקדימות ויוצרת את האשכול. מידע מפורט נכתב ליומנים בתיקייה baremetal/bmctl-workspace/ADMIN_CLUSTER_NAME/log במחשב של האדמין.

    יצירת האשכול יכולה להימשך כמה דקות.

  6. מוודאים שהאשכול נוצר ופועל:

    kubectl --kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig \
        get nodes

    אם האשכול פועל, התגובה תיראה בערך כך:

    NAME     STATUS  ROLES          AGE  VERSION
    node-01  Ready   control-plane  16h  v1.25.7-gke.1000
  7. כדי להעניק לחשבון המשתמש שלכם את התפקיד clusterrole/cluster-admin ב-Kubernetes באשכול, מריצים את הפקודה gcloud הבאה:

    gcloud container fleet memberships generate-gateway-rbac \
        --membership=ADMIN_CLUSTER_NAME \
        --role=clusterrole/cluster-admin \
        --users=GOOGLE_ACCOUNT_EMAIL \
        --project=PROJECT_ID \
        --kubeconfig=bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig \
        --context=ADMIN_CLUSTER_NAME-admin@ADMIN_CLUSTER_NAME \
        --apply

    הפלט של הפקודה הזו אמור להיראות כך, והוא קוצר כדי שיהיה קל לקרוא אותו:

    Validating input arguments.
    Specified Cluster Role is: clusterrole/cluster-admin
    Generated RBAC policy is:
    --------------------------------------------
    ...
    
    Applying the generate RBAC policy to cluster with kubeconfig: /root/bmctl-workspace/<var class="edit"scope="ADMIN_CLUSTER_NAME">ADMIN_CLUSTER_NAME</var>/<var class="edit"scope="ADMIN_CLUSTER_NAME">ADMIN_CLUSTER_NAME</var>-kubeconfig, context: <var class="edit"scope="ADMIN_CLUSTER_NAME">ADMIN_CLUSTER_NAME</var>-admin@<var class="edit"scope="ADMIN_CLUSTER_NAME">ADMIN_CLUSTER_NAME</var>
    Writing RBAC policy for user: GOOGLE_ACCOUNT_EMAIL to cluster.
    Successfully applied the RBAC policy to cluster.
    

    בין היתר, מדיניות RBAC מאפשרת לכם להיכנס למסוףGoogle Cloud של האשכול כדי לראות פרטים נוספים על האשכול.

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

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

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

bmctl

כשמפעילים את GKE On-Prem API ‏ (gkeonprem.googleapis.com) בפרויקט, אשכולות חדשים שנוצרים נרשמים אוטומטית ל-API. ההרשמה מתבצעת גם אם לא מציינים את spec.gkeOnPremAPI בקובץ ההגדרות של האשכול. אחרי שרושמים את האשכול ב-API שמארח את Google Cloud, אפשר להשתמש במסוף Google Cloud או ב-CLI של gcloud כדי לנהל את מחזור החיים של האשכול.

כדי להשבית את ההרשמה האוטומטית, מבטלים את ההערה בקטע spec.gkeOnPremAPI בקובץ ההגדרות של האשכול ומגדירים את spec.gkeOnPremAPI.enabled ל-false לפני שיוצרים את האשכול. השדה spec.gkeOnPremAPI.enabled ניתן לשינוי, כך שאפשר לבטל את ההרשמה של האשכול בכל שלב אחרי שהוא נוצר.

  1. יוצרים קובץ תצורה של האשכול:

    bmctl create config -c USER_CLUSTER_NAME \
      --project-id=PROJECT_ID
  2. מאמתים את קובץ ההגדרות של אשכול המשתמשים:

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

    • התגובות הוסרו מהדוגמה הזו כדי לשפר את הקריאות.
    • סוג האשכול, spec.type, הוגדר לערך user.
    • השדה spec.clusterSecurity.authorization.clusterAdmin.gcpAccounts נוסף כדי להעניק את clusterrole/cluster-admin לחשבון שלך. בין היתר, השדה הזה מאפשר לכם להיכנס לאשכול במסוףGoogle Cloud כדי לראות פרטים נוספים על האשכול.
    ---
    apiVersion: v1
    kind: Namespace
    metadata:
      name: cluster-USER_CLUSTER_NAME
    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: USER_CLUSTER_NAME
      namespace: cluster-USER_CLUSTER_NAME
    spec:
      type: user
      profile: default
      anthosBareMetalVersion: CLUSTER_VERSION
      gkeConnect:
        projectID: PROJECT_ID
      controlPlane:
        nodePoolSpec:
          nodes:
          - address: USER_CP_NODE_IP
      clusterNetwork:
        pods:
          cidrBlocks:
          - 192.168.0.0/16
        services:
          cidrBlocks:
          - 10.96.0.0/20
      loadBalancer:
        mode: bundled
        ports:
          controlPlaneLBPort: 443
        vips:
          controlPlaneVIP: USER_CP_VIP
          ingressVIP: USER_INGRESS_VIP
        addressPools:
        - name: pool1
          addresses:
          - START_IP-END_IP
      clusterOperations:
        projectID: PROJECT_ID
        location: us-central1
      clusterSecurity:
        authorization:
          clusterAdmin:
            gcpAccounts:
            - GOOGLE_ACCOUNT_EMAIL
      storage:
        lvpNodeMounts:
          path: /mnt/localpv-disk
          storageClassName: local-disks
        lvpShare:
          path: /mnt/localpv-share
          storageClassName: local-shared
          numPVUnderSharedPath: 5
      nodeConfig:
        podDensity:
          maxPodsPerNode: 250
      # GKEOnPremAPI (Optional) Specify if you wish to explicitly enable/disable the cloud hosted gkeonprem
      # API to enable/disable cluster lifecycle management from gcloud UI and Terraform.
      # gkeOnPremAPI:
        # enabled: false
        # location is the Cloud location for the cluster resource metadata where the cluster will be enrolled.
        # location: us-central1
    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: NodePool
    metadata:
      name: node-pool-1
      namespace: cluster-USER_CLUSTER_NAME
    spec:
      clusterName: USER_CLUSTER_NAME
      nodes:
      - address: USER_WORKER_NODE_IP
    
  3. מחליפים את התוכן של קובץ ההגדרות שנוצר בתחנת העבודה של האדמין בתוכן מהדוגמה הקודמת.

    פותחים את הקובץ שנוצר, bmctl-workspace/USER_CLUSTER_NAME/USER_CLUSTER_NAME.yaml ומחליפים את התוכן שלו בתוכן של הדוגמה שבדקתם בשלב הקודם.

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

    bmctl create cluster -c USER_CLUSTER_NAME \
    --kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig

    הפקודה bmctl מציגה פלט על המסך בזמן שהיא מריצה בדיקות מקדימות ויוצרת את האשכול. מידע מפורט נכתב ליומנים בתיקייה baremetal/bmctl-workspace/USER_CLUSTER_NAME/log במחשב של האדמין.

    יצירת האשכול יכולה להימשך כמה דקות.

  5. מוודאים שהאשכול נוצר ופועל:

    kubectl --kubeconfig bmctl-workspace/USER_CLUSTER_NAME/USER_CLUSTER_NAME-kubeconfig \
      get nodes

    אם האשכול פועל, התגובה תיראה בערך כך:

    NAME    STATUS   ROLES           AGE     VERSION
    nuc-3   Ready    control-plane   4m32s   v1.26.2-gke.1001
    nuc-4   Ready    worker          2m2s    v1.26.2-gke.1001

המסוף

כדי ליצור אשכול משתמשים במסוף:

  1. במסוף, נכנסים לדף Create a bare metal cluster.

    כניסה לדף Create a bare metal cluster

  2. מוודאים שהפרויקט הרצוי מסומן ברשימת הפרויקטים. Google Cloud PROJECT_ID

  3. לוחצים על יצירת אשכול.

  4. בתיבת הדו-שיח, לוחצים על On-premises (בשרת מקומי).

  5. לצד Bare metal, לוחצים על Configure (הגדרה). יוצג הדף Prerequisites (דרישות מוקדמות).

  6. בקטע Choose your cluster type (בחירת סוג האשכול), בוחרים באפשרות Create a user cluster for an existing admin cluster (יצירת אשכול משתמשים עבור אשכול אדמין קיים).

  7. לוחצים על הבא.

מידע בסיסי על אשכולות

  1. מזינים USER_CLUSTER_NAME בתור השם של אשכול המשתמשים או משתמשים בברירת המחדל.

  2. מוודאים שנבחרה קבוצת האדמינים החדשה שיצרתם.

  3. בקטע GCP API Location (מיקום ה-API של GCP), בוחרים באפשרות us-central1.

  4. בקטע Google Distributed Cloud version, בוחרים באפשרות CLUSTER_VERSION או משתמשים בברירת המחדל. אפשר להשתמש בהגדרות ברירת המחדל לכל שאר ההגדרות בדף הזה.

  5. בסרגל הניווט הימני, לוחצים על Networking (רשת).

Networking

  1. בקטע מישור הבקרה, מזינים את הכתובת הבאה בשדה Control plane node IP 1:

    USER_CP_NODE_IP
    
  2. בקטע Load balancer, משתמשים במאזן העומסים שמוגדר כברירת מחדל, Bundled with MetalLB.

  3. עוברים לקטע מאגר כתובות חדש. מזינים את טווח כתובות ה-IP בשדה טווח כתובות IP‏ 1:

    10.200.0.51-10.200.0.70
    
  4. לוחצים על סיום.

  5. בקטע Virtual IPs, מזינים את כתובת ה-IP של Control Plane VIP:

    USER_CP_VIP
    
  6. מזינים את כתובת ה-IP של Ingress VIP:

    USER_INGRESS_VIP
    
  7. בקטע Service and Pod CIDRs, אם לא שיניתם את ה-Service ואת ה-Pod CIDRs בכלי לתכנון, אתם יכולים להשתמש בערכי ברירת המחדל.

    אם שיניתם את ה-CIDR, מזינים את ה-CIDR שבו רוצים להשתמש:

    • Service CIDR:
    10.96.0.0/20
    
    • Pod CIDR:
    192.168.0.0/16
    
  8. בסרגל הניווט הימני, לוחצים על מאגר ברירת המחדל.

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

ב-cluster צריך להיות לפחות מאגר צמתים אחד לצמתי עובדים. מאגר צמתים הוא תבנית לקבוצות של צמתי עובדים שנוצרים באשכול הזה.

מזינים את כתובת ה-IP של צומת העובד באשכול המשתמשים בשדה כתובת 1 של הצמתים:

USER_WORKER_NODE_IP

יצירת האשכול

  1. לוחצים על Verify and Create (אימות ויצירה) כדי ליצור את אשכול המשתמשים.

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

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

    כדי לראות מידע נוסף על תהליך היצירה, לוחצים על הצגת פרטים כדי להציג חלונית צדדית. לוחצים על כדי לסגור את חלונית הפרטים.

    כשיוצרים את האשכול, מוצג הכיתוב סטטוס האשכול: פועל.

  2. אחרי שיוצרים את האשכול, לוחצים על Clusters כדי לחזור לדף Clusters.

‫CLI של gcloud

בקטע הזה מוסבר איך ליצור אשכול משתמשים ומאגר צמתים באמצעות ה-CLI של gcloud.

  1. מריצים את הפקודה הבאה כדי ליצור אשכול משתמשים:

    gcloud container bare-metal clusters create USER_CLUSTER_NAME \
      --project=PROJECT_ID \
      --location=us-central1 \
      --admin-cluster-membership=ADMIN_CLUSTER_NAME \
      --admin-cluster-membership-project=PROJECT_ID \
      --admin-cluster-membership-location=global \
      --version=CLUSTER_VERSION \
      --admin-users=GOOGLE_ACCOUNT_EMAIL \
      --island-mode-service-address-cidr-blocks=10.96.0.0/20 \
      --island-mode-pod-address-cidr-blocks=192.168.0.0/16 \
      --metal-lb-address-pools='pool=lb-pool-1,manual-assign=True,addresses=START_IP-END_IP' \
      --control-plane-node-configs='node-ip=USER_CP_NODE_IP' \
      --control-plane-vip=USER_CP_VIP \
      --control-plane-load-balancer-port=443 \
      --ingress-vip=USER_INGRESS_VIP \
      --lvp-share-path=/mnt/localpv-share \
      --lvp-share-storage-class=local-shared \
      --lvp-node-mounts-config-path=/mnt/localpv-disk \
      --lvp-node-mounts-config-storage-class=local-disks
    

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

    Waiting for operation [projects/example-project-12345/locations/us-west1/operations/operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179] to complete.
    

    בפלט לדוגמה, המחרוזת operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179 היא OPERATION_ID של הפעולה ארוכת הטווח. כדי לברר את סטטוס הפעולה, מריצים את הפקודה הבאה:

    gcloud container bare-metal operations describe OPERATION_ID \
      --project=PROJECT_ID \
      --location=us-central1
    

    יצירת האשכול נמשכת כ-15 דקות או יותר. במהלך יצירת האשכול, אפשר להריץ את הפקודה הקודמת מדי פעם כדי לקבל את הסטטוס הנוכחי.

    כשיוצרים את האשכול, מוצג פלט כמו זה:

    Created Anthos cluster on bare metal [https://gkeonprem.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/bareMetalClusters/USER_CLUSTER_NAME].
    
  2. אחרי שיוצרים את האשכול, מריצים את הפקודה הבאה כדי ליצור מאגר צמתים באשכול החדש.

    gcloud container bare-metal node-pools create node-pool-1 \
      --cluster=USER_CLUSTER_NAME \
      --project=PROJECT_ID \
      --location=us-central1 \
      --node-configs node-ip=USER_WORKER_NODE_IP

מידע נוסף ודוגמאות נוספות מופיעים במאמרים הבאים:

Terraform

בקטע הזה מוסבר איך ליצור אשכול משתמשים ומאגר צמתים באמצעות Terraform.

  1. יוצרים ספרייה חדשה ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת .tf. במדריך הזה, הקובץ נקרא main.tf.

    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
    
  2. בודקים את משאב Terraform של אשכול המשתמשים:

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

    resource "google_gkeonprem_bare_metal_cluster"  "cluster-basic" {
      provider = google-beta
      name = "USER_CLUSTER_NAME"
      project = "PROJECT_ID"
      location = "us-central1"
      admin_cluster_membership = "projects/PROJECT_ID/locations/global/memberships/ADMIN_CLUSTER_NAME"
      bare_metal_version = "CLUSTER_VERSION"
      network_config {
        island_mode_cidr {
          service_address_cidr_blocks = ["10.96.0.0/20"]
          pod_address_cidr_blocks = ["192.168.0.0/16"]
        }
      }
      control_plane {
        control_plane_node_pool_config {
          node_pool_config {
            labels = {}
            operating_system = "LINUX"
            node_configs {
              labels = {}
              node_ip = "USER_CP_NODE_IP"
            }
          }
        }
      }
      load_balancer {
        port_config {
          control_plane_load_balancer_port = 443
        }
        vip_config {
          control_plane_vip = "USER_CP_VIP"
          ingress_vip = "USER_INGRESS_VIP"
        }
        metal_lb_config {
          address_pools {
            pool = "pool1"
            addresses = [
              "START_IP-END_IP"
            ]
            avoid_buggy_ips = true
            manual_assign = true
          }
        }
      }
      storage {
        lvp_share_config {
          lvp_config {
            path = "/mnt/localpv-share"
            storage_class = "local-shared"
          }
          shared_path_pv_count = 5
        }
        lvp_node_mounts_config {
          path = "/mnt/localpv-disk"
          storage_class = "local-disks"
        }
      }
      security_config {
        authorization {
          admin_users {
            username = "GOOGLE_ACCOUNT_EMAIL"
          }
        }
      }
    }
    
    resource "google_gkeonprem_bare_metal_node_pool" "node-pool-default" {
      provider = google-beta
      name =  "node-pool-1"
      bare_metal_cluster = google_gkeonprem_bare_metal_cluster.cluster-basic.name
      project = "PROJECT_ID"
      location = "us-central1"
      node_pool_config {
        operating_system = "LINUX"
        node_configs {
          node_ip = "USER_WORKER_NODE_IP"
        }
      }
    }
    
  3. מעתיקים את משאב Terraform אל main.tf ושומרים את הקובץ.

  4. מפעילים את Terraform ויוצרים תוכנית ב-Terraform:

    terraform init
    

    ‫Terraform מתקין את כל הספריות הנדרשות, כמו פלאגין שמתממשק עם שירותים חיצוניים Google Cloud .

  5. בודקים את ההגדרות ומבצעים שינויים לפי הצורך:

    terraform plan
    
  6. מחילים את התוכנית של Terraform כדי ליצור את אשכול המשתמשים:

    terraform apply
    

    כשתופיע בקשה, כותבים yes.

    יצירת אשכול המשתמשים הבסיסי ומאגר הצמתים נמשכת כ-15 דקות (או יותר, בהתאם לרשת).

  7. כדי ליצור קובץ kubeconfig לאשכול המשתמשים, מריצים את הפקודה הבאה בתחנת העבודה של האדמין:

    bmctl get credentials --cluster USER_CLUSTER_NAME \
    --admin-kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig

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

    bmctl-workspace/USER_CLUSTER_NAME/USER_CLUSTER_NAME-TIMESTAMP-kubeconfig

    המחרוזת TIMESTAMP בשם הקובץ מציינת את התאריך והשעה שבהם הקובץ נוצר.

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

  8. מוודאים שהאשכול נוצר ופועל:

    kubectl --kubeconfig bmctl-workspace/USER_CLUSTER_NAME/USER_CLUSTER_NAME-TIMESTAMP-kubeconfig \
        get nodes

    אם האשכול פועל, התגובה תיראה בערך כך:

    NAME    STATUS   ROLES           AGE     VERSION
    nuc-3   Ready    control-plane   4m32s   v1.26.2-gke.1001
    nuc-4   Ready    worker          2m2s    v1.26.2-gke.1001

מידע נוסף ודוגמאות נוספות מופיעים במאמרים הבאים:

התחברות לאשכול המשתמשים

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

  • bmctl: כתובת האימייל שלכם מופיעה בקטע clusterSecurity בקובץ התצורה לדוגמה של המשתמש.

  • Terraform: כתובת האימייל שלכם כלולה בקטע security_config של המשאב לדוגמה google_gkeonprem_bare_metal_cluster.

  • המסוף: כתובת האימייל שלכם, בתור מי שיצר את האשכול, נכללת באופן אוטומטי בדף Cluster basics בקטע Authorization.

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

מדיניות RBAC שמוענקת לכתובת האימייל שלכם מאפשרת לכם:

  • מקצים לכם את התפקיד clusterrole/cluster-admin ב-Kubernetes באשכול.

  • מאפשרת לכם להיכנס לאשכול במסוף Google Cloud באמצעות הזהות שלכם ב-Google. אפשר לראות את האשכול בדף GKE clusters במסוף.

  • מאפשרת להריץ פקודות kubectl במחשב המקומי באמצעות kubeconfig של שער החיבור.

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

  1. מקבלים את רשומת ה-kubeconfig שאפשר לגשת אליה לאשכול דרך שער החיבור.

    gcloud container fleet memberships get-credentials USER_CLUSTER_NAME  \
    --project=PROJECT_ID

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

    Starting to build Gateway kubeconfig...
    Current project_id: PROJECT_ID
    A new kubeconfig entry "connectgateway_PROJECT_ID_global_USER_CLUSTER_NAME" has been generated and set as the current context.
    
  2. עכשיו אפשר להריץ פקודות של kubectl דרך שער החיבור:

    kubectl get nodes
    

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

    NAME    STATUS   ROLES           AGE     VERSION
    nuc-3   Ready    control-plane   4m32s   v1.26.2-gke.1001
    nuc-4   Ready    worker          2m2s    v1.26.2-gke.1001
    

    הרבה פקודות של kubectl דורשות את קובץ ה-kubeconfig של אשכול האדמין. תצטרכו להריץ את הפקודות האלה בתחנת העבודה של האדמין.

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