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

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

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

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

  1. חשוב לוודא שהגדרתם את החומרה ותכננתם את כתובות ה-IP כמו שמתואר בחלק הקודם של המדריך, הגדרת תשתית מינימלית. לחלופין, אתם יכולים להשתמש בכלי לתכנון דרישות הרשת בקטע Prerequisites בתהליך Create a bare metal admin cluster במסוף 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. איסוף מידע

כדי למלא את כל ה-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
VIP לשרת ה-API של Kubernetes באשכול המשתמש. USER_CP_VIP
כתובת VIP אחת שתשמש ככתובת החיצונית של שרת ה-proxy של Ingress. USER_INGRESS_VIP
טווח של עשר כתובות IP לשימוש ככתובות IP חיצוניות לשירותים מסוג LoadBalancer. שימו לב שהטווח הזה כולל את כתובת ה-VIP של תעבורת הנתונים הנכנסת, שנדרשת ל-MetalLB. אי אפשר להגדיר כתובות IP אחרות שחופפות לטווח הזה. START_IP-END_IP
‫CIDR של Pod ושל שירות
טווח של כתובות 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. יצירת אשכול אדמין

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

כש-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. יצירת אשכול משתמשים

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

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

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. לוחצים על Create Cluster.

  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, בוחרים באפשרות 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. עוברים לקטע New address pool. מזינים את טווח כתובות ה-IP בשדה IP address range 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. בסרגל הניווט הימני, לוחצים על default pool (מאגר ברירת המחדל).

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

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

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

USER_WORKER_NODE_IP

יצירת האשכול

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

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

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

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

    אחרי שהאשכול נוצר, מוצג הסטטוס Cluster status: running.

  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 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 בדף 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 של אשכול האדמין. תצטרכו להריץ את הפקודות האלה בתחנת העבודה של האדמין.

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