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

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

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

המדריך הזה יעזור לכם ליצור התקנה מינימלית של Google Distributed Cloud. יכול להיות שההתקנה המינימלית הזו לא מתאימה לצרכים שלכם בסביבת הייצור ולתרחישי השימוש שלכם. מידע על התקנות בסביבת ייצור זמין במדריכי ההתקנה.

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

  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 במזהה הפרויקט המארח של הצי.

      אם מופיעה השגיאה 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
כתובת ה-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 list נבחרה.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 (מיקום GCP API), בוחרים באפשרות 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 דקות או יותר. המסוף מציג הודעות סטטוס בזמן שהוא מאמת את ההגדרות ויוצר את האשכול.

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

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

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

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

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

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

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

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

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