כדי ללמוד על Google Distributed Cloud (תוכנה בלבד) לשרת פיזי, אפשר ליצור אשכולות הדגמה במכונות וירטואליות (VM) של Compute Engine. במדריך הזה מריצים סקריפט שמבצע את הפעולות הבאות:
- הכלי מקצה חמש מכונות וירטואליות ב-Compute Engine להתקנת אשכולות ההדגמה
- הגדרה של רשת VPC כדי לספק קישוריות לאשכול
אחרי שהסקריפט מקצה את המשאבים הנדרשים, משתמשים באחד מהלקוחות הבאים כדי ליצור אשכול אדמין ואשכול משתמשים נלווה שיכול לארח עומסי עבודה: bmctl, Google Cloud מסוף, Google Cloud CLI או Terraform. השלמת ההדרכה הזו יכולה להימשך 40 דקות עד שעה.
האשכולות להדגמה שיוצרים במדריך הזה עוזרים להעריך את התהליך של הקצאת משאבים והפעלה של אשכולות ב-Google Distributed Cloud, אבל הם לא מיועדים לשימוש בסביבת ייצור.
סקירה כללית של התהליך
במדריך הזה תבצעו את השלבים הבאים:
מכינים את הסביבה המקומית כך שלסקריפט יהיו משתני הסביבה הנדרשים, ומוודאים שאספתם את המידע הבסיסי שנדרש להפעלת פקודות.
יוצרים את המכונות הווירטואליות והרשת באמצעות הסקריפט שהורד.
יוצרים את אשכול האדמין באמצעות אחד מהלקוחות הנתמכים.
יוצרים את אשכול המשתמשים באמצעות אחד מהלקוחות הנתמכים.
כדי להסיר את האשכולות והמכונות הווירטואליות שיצרתם באמצעות המדריך הזה, צריך לבצע ניקוי.
1. הכנת הסביבה המקומית
במדריך הזה נעשה שימוש בסקריפט שמגדיר את הרשת בשבילכם, כך שלא תצטרכו לאסוף הרבה מידע או לתכנן מראש. בשלבים הבאים מוגדרת הסביבה המקומית ונאסף המידע הבסיסי שנדרש בחלקים הבאים של המדריך:
- נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- חשוב לשים לב למזהה הפרויקט, כי תצטרכו אותו כדי להגדיר משתנה סביבה שמשמש בסקריפט ובפקודות בדף הזה. אם בחרתם פרויקט קיים, ודאו שאתם בעלים או עורכים של הפרויקט.
-
אפשר להריץ את הסקריפט ב-Cloud Shell או במחשב המקומי עם Linux או macOS. אם אתם משתמשים במחשב מקומי, ודאו שהכלים הנדרשים מותקנים בסביבה שלכם:
- מוודאים שהתקנתם את הגרסה האחרונה של Google Cloud CLI, כלי שורת הפקודה לאינטראקציה עם Google Cloud. מעדכנים את הרכיבים של ה-CLI של gcloud, אם צריך:
gcloud components update
בהתאם לאופן ההתקנה של ה-CLI של gcloud, יכול להיות שתופיע ההודעה הבאה:
You cannot perform this action because the Google Cloud CLI component manager is disabled for this installation. You can run the following command to achieve the same result for this installation:
פועלים לפי ההוראות כדי להעתיק את הפקודה ולהדביק אותה כדי לעדכן את הרכיבים.
- מוודאים ש-
kubectlמותקן: אמור להופיע מידע על השימוש ב-kubectl
kubectl. אם הפקודה לא זמינה, מתקינים אתkubectl:gcloud components install kubectl
- מוודאים שהתקנתם את הגרסה האחרונה של Google Cloud CLI, כלי שורת הפקודה לאינטראקציה עם Google Cloud. מעדכנים את הרכיבים של ה-CLI של gcloud, אם צריך:
- מוודאים שלפרויקט יש רשת VPC בשם default.
אם אין לכם רשת VPC 'ברירת מחדל', הסקריפט בקטע הבא לא יצליח להקצות את המשאבים הנדרשים. אלא אם תבחרו למחוק או להגביל אותה, כל פרויקט חדש מתחיל עם רשת VPC במצב אוטומטי בשם 'default', שאמורה לפעול עם הסקריפט. מידע נוסף זמין במאמר בנושא רשתות VPC.
- מוודאים שאילוצי מדיניות הארגון הבאים לא נאכפים:
constraints/iam.disableServiceAccountKeyCreationconstraints/compute.vmCanIpForwardconstraints/compute.requireShieldedVmconstraints/compute.vmExternalIpAccess
אם האילוצים האלה נאכפים, הסקריפט בקטע הבא לא מצליח להקצות את המשאבים הנדרשים. בפרויקט חדש, האילוצים האלה מוגדרים כלא פעילים (לא נאכפים) כברירת מחדל. מידע נוסף זמין במאמר בנושא אילוצים של מדיניות הארגון.
- מגדירים משתני סביבה:
export PROJECT_ID=PROJECT_ID export ADMIN_CLUSTER_NAME=ADMIN_CLUSTER_NAME export ON_PREM_API_REGION=ON_PREM_API_REGION export ZONE=ZONE
-
ADMIN_CLUSTER_NAME: השם שבוחרים לאשכול האדמין. -
ON_PREM_API_REGION: Google Cloud האזור שבו ה-API של GKE On-Prem פועל ושבו מאוחסנים המטא-נתונים שלו. צריך לצייןus-central1או אזור נתמך אחר. -
ZONE: Google Cloud האזור שבו נוצרות המכונות הווירטואליות של Compute Engine. אפשר להשתמש ב-us-central1-aאו בכל אחד מהתחומים האחרים של Compute Engine.
-
- מריצים את הפקודות הבאות כדי להגדיר את פרויקט ברירת המחדל ואת האזור.
gcloud config set project $PROJECT_ID gcloud config set compute/zone $ZONE
אם מופיעה שגיאת
PERMISSION_DENIED, צריך לבדוק שוב את מזהה הפרויקט שהזנתם. אם מזהה הפרויקט נכון, מריצים את הפקודהgcloud auth loginכדי להיכנס ל-ה-CLI של gcloud באמצעות החשבון שיש לו גישה לפרויקט. - כדי לקבל רשימה של גרסאות נתמכות שאפשר להתקין:
gcloud container bare-metal admin-clusters query-version-config \ --location=ON_PREM_API_REGION
- בוחרים גרסה מתוך הפלט של הפקודה הקודמת ומגדירים אותה במשתנה סביבה:
export BMCTL_VERSION=BMCTL_VERSION
מומלץ לבחור את הגרסה התואמת הכי גבוהה כדי לקבל את התכונות והתיקונים האחרונים של Google Distributed Cloud.
2. יצירת המכונות הווירטואליות והרשת
בקטע הזה מורידים ומריצים את הסקריפט install_admin_cluster.sh.
משכפלים את מאגר
anthos-samplesועוברים לספרייה שבה נמצא הסקריפט:git clone https://github.com/GoogleCloudPlatform/anthos-samples cd anthos-samples/anthos-bm-gcp-bashמריצים את הסקריפט:
bash install_admin_cluster.shבשורת הפקודה, מזינים
2כדי להגדיר רק את התשתית של Compute Engine, ומאשרים את הבחירה כשמופיעה בקשה.הסקריפט יוצר מכונות וירטואליות ב-Compute Engine, יוצר רשת VXLAN ומגדיר את תחנת העבודה של האדמין ואת צמתי האשכול. ההגדרה של התשתית הזו נמשכת כ-5 דקות.
כדי לקרוא מידע נוסף על התסריט, אפשר ללחוץ על הקישור הבא:
מידע על הסקריפט
אפשר לראות את הסקריפט בתיקייה
anthos-bm-gcp-bashבמאגר GitHub anthos-samples. הסקריפט מבצע את הפעולות הבאות:-
הפעלת ממשקי ה-API הבאים: Google Cloud
anthos.googleapis.com anthosaudit.googleapis.com anthosgke.googleapis.com cloudresourcemanager.googleapis.com connectgateway.googleapis.com container.googleapis.com compute.googleapis.com gkeconnect.googleapis.com gkehub.googleapis.com gkeonprem.googleapis.com serviceusage.googleapis.com stackdriver.googleapis.com monitoring.googleapis.com logging.googleapis.com kubernetesmetadata.googleapis.com iam.googleapis.com opsconfigmonitoring.googleapis.com
-
במקום ליצור כמה חשבונות שירות לממשקי API ולשירותים שונים, הסקריפט יוצר חשבון שירות יחיד בשם
baremetal-gcrומקצה לו את התפקידים הבאים ב-IAM:roles/gkehub.adminroles/gkehub.connectroles/logging.logWriterroles/monitoring.dashboardEditorroles/monitoring.metricWriterroles/monitoring.viewerroles/opsconfigmonitoring.resourceMetadata.writerroles/serviceusage.serviceUsageViewerroles/stackdriver.resourceMetadata.writer
-
נוצרות מכונות וירטואליות מהסוגים הבאים:
- מכונה וירטואלית אחת לתחנת העבודה של האדמין
- מכונה וירטואלית אחת לצומת של מישור הבקרה של אשכול האדמין
- שני מכונות וירטואליות לצמתים של העובדים באשכול המשתמשים
- מכונה וירטואלית אחת לצומת של מישור הבקרה של אשכול המשתמשים
- מוודא ש-SSH מופעל בכל המכונות הווירטואליות, ושלתחנת העבודה של האדמין יש גישת SSH לכל המכונות הווירטואליות האחרות שנוצרו לצמתים של האשכול.
-
יוצרת רשת שכבת-על של רשת LAN וירטואלית ניתנת להרחבה (VXLAN) לקישוריות בשכבה 2 בין המכונות הווירטואליות. רשת ה-VXLAN לא נשמרת, ולכן אם תפעילו מחדש מכונת VM, הרשת תיהרס. הרשת מוגדרת להיות ברשת המשנה
10.200.0.0/24. קישוריות בשכבה 2 היא דרישה לשימוש במאזן העומסים בחבילה. -
הכלי מתקין את הכלים הבאים בתחנת העבודה של האדמין:
bmctlkubectl- Docker
הסקריפט גם מוריד את המפתח של חשבון השירות של חשבון השירות
baremetal-gcrלתחנת העבודה של האדמין. -
כדי לוודא ש-
root@10.200.0.xמתחנת העבודה של האדמין פועל, מבצעים את הפעולות הבאות:- המערכת יוצרת מפתח SSH חדש בתחנת העבודה של האדמין.
- המפתח הציבורי מתווסף לכל המכונות הווירטואליות האחרות בפריסה.
הסקריפט מציג כפלט כל פקודה שהוא מריץ ואת הסטטוס שלה. בסיום, הסקריפט מציג את הפלט הבא:
✅ Successfully set up SSH access from admin workstation to cluster node VMs. ✅ GCE Infrastructure setup complete. Please check the logs for any errors!!! ✅ If you do not see any errors in the output log, then you now have the following setup: |---------------------------------------------------------------------------------------------------------| | VM Name | L2 Network IP (VxLAN) | INFO | |---------------------------------------------------------------------------------------------------------| | abm-admin-cluster-cp | 10.200.0.3 | 🌟 Ready for use as control plane for the admin cluster | | abm-user-cluster-cp | 10.200.0.4 | 🌟 Ready for use as control plane for the user cluster | | abm-user-cluster-w1 | 10.200.0.5 | 🌟 Ready for use as worker for the user cluster | | abm-user-cluster-w2 | 10.200.0.6 | 🌟 Ready for use as worker for the user cluster | |---------------------------------------------------------------------------------------------------------|-
הפעלת ממשקי ה-API הבאים: Google Cloud
3. יצירת אשכול האדמין
bmctl
כדי ליצור אשכול אדמין באמצעות bmctl, ניגשים למכונה הווירטואלית של תחנת העבודה של האדמין בחלון טרמינל ומריצים משם פקודות:
משתמשים ב-SSH כדי לגשת למכונה הווירטואלית של תחנת העבודה לאדמין,
abm-ws, כמשתמש root:gcloud compute ssh root@abm-ws --zone ZONEמגדירים את פרטי הכניסה של המשתמש כ-Application Default Credentials (ADC):
gcloud auth application-default loginפועלים לפי ההנחיות כדי לבחור את חשבון Google ל-ADC.
יוצרים קובץ תצורה של האשכול:
bmctl create config -c ADMIN_CLUSTER_NAME --project-id=PROJECT_IDבודקים את קובץ ההגדרות של אשכול האדמין:
קובץ התצורה של האשכול הבא מלא בערכים שסיפקתם קודם. בנוסף לערכים שהזנתם, שימו לב להבדלים הבאים מקובץ התצורה שנוצר:
- התגובות הוסרו מהדוגמה הזו כדי לשפר את הקריאות.
- הסקריפט יוצר חשבון שירות יחיד עם כל ההרשאות הנדרשות ומוריד את המפתח
bm-gcr.jsonשאליו יש הפניה בקובץ ההגדרות.
gcrKeyPath: /root/bm-gcr.json sshPrivateKeyPath: /root/.ssh/id_rsa gkeConnectAgentServiceAccountKeyPath: /root/bm-gcr.json gkeConnectRegisterServiceAccountKeyPath: /root/bm-gcr.json cloudOperationsServiceAccountKeyPath: /root/bm-gcr.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: BMCTL_VERSION gkeConnect: projectID: PROJECT_ID controlPlane: nodePoolSpec: nodes: - address: 10.200.0.3 clusterNetwork: pods: cidrBlocks: - 192.168.0.0/16 services: cidrBlocks: - 10.96.0.0/20 loadBalancer: mode: bundled ports: controlPlaneLBPort: 443 vips: controlPlaneVIP: 10.200.0.48 clusterOperations: projectID: PROJECT_ID location: ON_PREM_API_REGION storage: lvpNodeMounts: path: /mnt/localpv-disk storageClassName: local-disks lvpShare: path: /mnt/localpv-share storageClassName: local-shared numPVUnderSharedPath: 5 nodeConfig: podDensity: maxPodsPerNode: 110מחליפים את התוכן של קובץ ההגדרות שנוצר בתחנת העבודה של האדמין בתוכן מהדוגמה הקודמת.
פותחים את הקובץ שנוצר,
bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME.yamlומחליפים את התוכן שלו בתוכן של הדוגמה שבדקתם בשלב הקודם.יוצרים את אשכול האדמין:
bmctl create cluster -c ADMIN_CLUSTER_NAME
הפקודה
bmctlמציגה פלט על המסך בזמן שהיא מריצה בדיקות מקדימות ויוצרת את האשכול. מידע מפורט נכתב ליומנים בתיקייהbaremetal/bmctl-workspace/abm-user-cluster-metallb/logבמחשב של האדמין.יצירת האשכול יכולה להימשך כמה דקות.
במסוף, עוברים לדף GKE clusters.
מוודאים שהפרויקט שבו יצרתם את אשכול המשתמשים נבחר. אשכול האדמין אמור להופיע ברשימה.
נכנסים לאשכול הניהול:
לוחצים על הקישור בשם האשכול ובחלונית הצדדית לוחצים על כניסה.
בוחרים באפשרות שימוש בזהות שלכם ב-Google כדי להיכנס.
לוחצים על התחברות.
אימות של אשכול האדמין
קובץ ה-kubeconfig של אשכול האדמין נמצא בתחנת העבודה של האדמין בספרייה bmctl-workspace של חשבון הבסיס. כדי לאמת את הפריסה, מבצעים את השלבים הבאים:
משתמשים ב-SSH כדי לגשת לתחנת העבודה של האדמין כ-root:
gcloud compute ssh root@abm-ws --zone ZONEמוודאים שנוצר אשכול אדמין והוא פועל:
kubectl --kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig get nodesהפלט אמור להיראות כך:
NAME STATUS ROLES AGE VERSION abm-admin-cluster-cp Ready control-plane 94m 1.31.300-gke.81כשמסיימים את הבדיקה, מזינים
exitכדי להתנתק מתחנת העבודה של האדמין.
המסוף
כדי ליצור אשכול אדמין במסוף, צריך להריץ את הפקודה bmctl
register bootstrap ממכונת ה-VM של תחנת העבודה של האדמין כדי ליצור אשכול bootstrap.
בזמן שהפקודה bmctl register bootstrap פועלת, מבצעים את השלבים במסוף כדי ליצור את אשכול האדמין.
הזנת נתונים בסיסיים של סביבת האתחול
נכנסים לדף GKE clusters במסוף Google Cloud .
לוחצים על יצירה.
בתיבת הדו-שיח יצירת אשכול, בוחרים באפשרות On-premises (במקום) ולוחצים על הגדרה לשרת פיזי.
חשוב לבחור את הפרויקט
PROJECT_IDמהרשימה.בסרגל הניווט הימני, לוחצים על Install bootstrap environment (התקנת סביבת bootstrap).
מזינים
ADMIN_CLUSTER_NAMEבתור שם אשכול האדמין.בוחרים באפשרות
BMCTL_VERSIONכגרסה של אשכול האדמין. הסקריפט מוריד את הגרסה הזו של כלי שורת הפקודהbmctlלתחנת העבודה של האדמין. הגרסה של Google Distributed Cloud שמתקינים צריכה להיות זהה לגרסה שלbmctl.בשדה Google Cloud API Location, בוחרים באפשרות ON_PREM_API_REGION מהרשימה. ההגדרה הזו מציינת את האזור שבו פועל GKE On-Prem API, ואת האזור שבו מאוחסנים הרכיבים הבאים:
- מטא-נתונים של האשכול שנדרשים ל-GKE On-Prem API כדי לנהל את מחזור החיים של האשכול
- הנתונים של רכיבי המערכת ב-Cloud Logging וב-Cloud Monitoring
- יומן הביקורת של האדמין שנוצר על ידי יומני הביקורת של Cloud
השם, הפרויקט והמיקום של האשכול מזהים אותו באופן ייחודי ב- Google Cloud.
כדי ליצור את אשכול האתחול, פועלים לפי השלבים שמפורטים בקטע הבא במקום השלבים שמוצגים במסוף. משאירים את דף המסוף פתוח כי ממשיכים בו ליצירת אשכול האדמין.
יצירת אשכול האתחול
כשמשתמשים בלקוח GKE On-Prem API, כמו המסוף, כדי ליצור אשכול אדמין, צריך ליצור אשכול bootstrap בתחנת העבודה של האדמין. אשכול האתחול מארח את בקרי Kubernetes שנדרשים ליצירת אשכול האדמין.
משורת הפקודה, משתמשים ב-SSH כדי לגשת למכונה הווירטואלית של תחנת העבודה של האדמין כ-root:
gcloud compute ssh root@abm-ws --zone ZONEאפשר להתעלם מהודעות לגבי עדכון המכונה הווירטואלית ולהשלים את המדריך הזה. אם אתם מתכננים להשתמש במכונות הווירטואליות כסביבת בדיקה, כדאי לעדכן את מערכת ההפעלה או לשדרג לגרסה הבאה, כמו שמתואר במסמכי Ubuntu.
מגדירים את פרטי הכניסה של המשתמש כ-Application Default Credentials (ADC):
gcloud auth application-default loginפועלים לפי ההנחיות כדי לבחור את חשבון Google ל-ADC.
עוברים לספרייה
baremetal/ומריצים את הפקודה הבאה כדי ליצור את אשכול האתחול.שם אשכול ה-bootstrap נגזר משם אשכול האדמין על ידי הוספת הקידומת
bootstrap-.bmctl register bootstrap \ --ssh-key=/root/.ssh/id_rsa \ --name=bootstrap-ADMIN_CLUSTER_NAME \ --project-id=PROJECT_IDאחרי ש-
bmctlיוצר בהצלחה את אשכול האתחול, מוצגת פלט שדומה לזה:[2023-03-22 17:35:24+0000] Waiting for the temporary cluster to be registered... OK [2023-03-22 17:35:37+0000] Please go to https://console.cloud.google.com/home/dashboard?project=example-project-12345 to create the cluster [2023-03-22 17:35:37+0000] Waiting for preflight checks and cluster to run..
יצירת אשכול האדמין
בדף Install bootstrap environment (התקנת סביבת bootstrap) בקטע Bootstrap environment from admin workstation (סביבת bootstrap מתחנת עבודה של אדמין), לוחצים על Check Connection (בדיקת החיבור).
אם הפעולה מצליחה, מוצגת בהודעה הבאה במסוף: Connection established.
צריך ליצור את החיבור לאשכול bootstrap לפני שממשיכים. אם החיבור לא נוצר, צריך לבדוק את הארגומנטים שציינתם בפקודה
bmctl register bootstrap:מוודאים שהערך של
--nameזהה לשם ה-bootstrap הנגזר שמוצג בקטע Bootstrap environment basics.מוודאים שהערך של
--project-idתואם למזהה של הפרויקט שבחרתם במסוף.
אם אתם צריכים לשנות את שם אשכול ה-bootstrap או את מזהה הפרויקט, מזינים
Ctrl-Cכדי לצאת מ-bmctl register bootstrapומריצים מחדש את הפקודה.
Networking
בסרגל הניווט הימני, לוחצים על Networking (רשת).
בקטע מישור הבקרה, מזינים את הכתובת הבאה בשדה Control plane node IP 1:
10.200.0.3זו כתובת ה-IP של המכונה הווירטואלית abm-admin-cluster-cp ב-VXLAN שנוצר על ידי הסקריפט.
בקטע Load balancer, מוודאים שהאפשרות Bundled מסומנת.
בקטע Virtual IPs (VIPs), מזינים את הפרטים הבאים בשדה VIP של מישור הבקרה:
10.200.0.48השלב הבא תלוי בזמינות של אשכול האתחול. הפקודה
bmctl register bootstrapבחלון הטרמינל צריכה לפעול כמה דקות לפני שקלאסטר האתחול יופיע כחבר רשום. אם אחרי כמה דקות הוא עדיין לא זמין, צריך לבדוק את שם אשכול ה-bootstrap ואת מזהה הפרויקט שבהם השתמשתם. אם אתם צריכים לשנות את שם אשכול ה-bootstrap או את מזהה הפרויקט, מזיניםCtrl-Cבחלון הטרמינל השני כדי לצאת מ-bmctl register bootstrapולהריץ מחדש את הפקודה.לוחצים על אימות ויצירה.
במסוף מוצגות הודעות סטטוס בזמן שההגדרות מאומתות והאשכול נוצר.
כשיוצרים את אשכול הניהול, אשכול האתחול בתחנת העבודה של האדמין נמחק. הפלט של הפקודה
bmctl register bootstrapבחלון המסוף השני דומה לזה:... [2024-04-15 23:10:48+0000] Waiting for cluster to become ready OK [2024-04-15 23:16:38+0000] Please run [2024-04-15 23:16:38+0000] kubectl --kubeconfig bmctl-workspace/gce-admin-gcloud-001/gce-admin-gcloud-001-kubeconfig get nodes [2024-04-15 23:16:38+0000] to get cluster nodes status. [2024-04-15 23:16:38+0000] Waiting for node pools to become ready OK [2024-04-15 23:16:58+0000] Waiting for metrics to become ready in GCP OK [2024-04-15 23:21:58+0000] Waiting for cluster API provider to install in the created admin cluster OK [2024-04-15 23:22:08+0000] Moving admin cluster resources to the created admin cluster [2024-04-15 23:22:10+0000] Waiting for node update jobs to finish OK [2024-04-15 23:24:30+0000] Flushing logs... OK [2024-04-15 23:24:30+0000] Unregistering bootstrap cluster. [2024-04-15 23:24:30+0000] Deleting membership... OK [2024-04-15 23:24:32+0000] Deleting bootstrap cluster.
אימות של אשכול האדמין
קובץ ה-kubeconfig של אשכול האדמין נמצא בתחנת העבודה של האדמין בספרייה bmctl-workspace של חשבון הבסיס. כדי לאמת את הפריסה, מבצעים את השלבים הבאים:
משתמשים ב-SSH כדי לגשת לתחנת העבודה של האדמין כ-root:
gcloud compute ssh root@abm-ws --zone ZONEמוודאים שנוצר אשכול אדמין והוא פועל:
kubectl --kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig get nodesהפלט אמור להיראות כך:
NAME STATUS ROLES AGE VERSION abm-admin-cluster-cp Ready control-plane 94m 1.31.300-gke.81כשמסיימים את הבדיקה, מזינים
exitכדי להתנתק מתחנת העבודה של האדמין.
CLI של gcloud
כדי לבצע את הפעולות האלה תצטרכו להשתמש בשני חלונות טרמינל. בחלון מסוף אחד, מריצים את הפקודה bmctl register bootstrap כדי ליצור אשכול bootstrap. בזמן שהפקודה bmctl register bootstrap פועלת, מריצים את הפקודה gcloud container
bare-metal admin-clusters create בחלון טרמינל אחר כדי ליצור את אשכול האדמין.
יצירת אשכול האתחול
כשמשתמשים בלקוח API של GKE On-Prem, כמו ה-CLI של gcloud, כדי ליצור אשכול אדמין, צריך ליצור אשכול bootstrap בתחנת העבודה של האדמין. אשכול האתחול מארח את בקרי Kubernetes שנדרשים ליצירת אשכול האדמין.
משורת הפקודה, משתמשים ב-SSH כדי לגשת למכונה הווירטואלית של תחנת העבודה של האדמין כ-root:
gcloud compute ssh root@abm-ws --zone ZONEאפשר להתעלם מהודעות לגבי עדכון המכונה הווירטואלית ולהשלים את המדריך הזה. אם אתם מתכננים להשתמש במכונות הווירטואליות כסביבת בדיקה, כדאי לעדכן את מערכת ההפעלה או לשדרג לגרסה הבאה, כמו שמתואר במסמכי Ubuntu.
מגדירים את פרטי הכניסה של המשתמש כ-Application Default Credentials (ADC):
gcloud auth application-default loginפועלים לפי ההנחיות כדי לבחור את חשבון Google ל-ADC.
עוברים לספרייה
baremetal/ומריצים את הפקודה הבאה כדי ליצור את אשכול האתחול.שם אשכול ה-bootstrap נגזר משם אשכול האדמין על ידי הוספת הקידומת
bootstrap-.bmctl register bootstrap \ --ssh-key=/root/.ssh/id_rsa \ --name=bootstrap-ADMIN_CLUSTER_NAME \ --project-id=PROJECT_IDאחרי ש-
bmctlיוצר בהצלחה את אשכול האתחול, מוצגת פלט שדומה לזה:[2023-03-22 17:35:24+0000] Waiting for the temporary cluster to be registered... OK [2023-03-22 17:35:37+0000] Please go to https://console.cloud.google.com/home/dashboard?project=example-project-12345 to create the cluster [2023-03-22 17:35:37+0000] Waiting for preflight checks and cluster to run..
יצירת אשכול האדמין
בחלון מסוף חדש, מוודאים שאשכול האתחול נרשם כחבר ב-Fleet:
gcloud container fleet memberships list \ --project=PROJECT_IDהפקודה
gcloud container bare-metal admin-clusters createבשלב הבא תלויה בזמינות של אשכול האתחול. הפקודהbmctl register bootstrapבחלון הטרמינל השני צריכה לפעול במשך כמה דקות לפני שקלאסטר ה-bootstrap יוצג כחבר רשום. אם אחרי כמה דקות הוא עדיין לא מופיע, צריך לבדוק את שם אשכול האתחול ואת מזהה הפרויקט שבהם השתמשתם. אם אתם צריכים לשנות את שם אשכול האתחול או את מזהה הפרויקט, מזיניםCtrl-Cבחלון הטרמינל השני כדי לצאת מ-bmctl register bootstrapולהריץ מחדש את הפקודה.יוצרים את אשכול האדמין באמצעות מאזן העומסים שצורף:
חשוב לוודא שהערכים שציינתם תואמים למשתני הסביבה שציינתם קודם לסקריפט.
gcloud container bare-metal admin-clusters create ADMIN_CLUSTER_NAME \ --project=PROJECT_ID \ --location=ON_PREM_API_REGION \ --version=BMCTL_VERSION \ --max-pods-per-node=110 \ --control-plane-vip=10.200.0.48 \ --control-plane-load-balancer-port=443 \ --control-plane-node-configs node-ip=10.200.0.3 \ --island-mode-service-address-cidr-blocks=10.96.0.0/20 \ --island-mode-pod-address-cidr-blocks=192.168.0.0/16 \ --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בפקודה הזו:
--control-plane-vip: הערך שהוגדר הוא10.200.0.48. זוהי כתובת ה-IP הווירטואלית (VIP) במאזן העומסים של שרת ה-API של Kubernetes באשכול.--control-plane-node-configs: הערך שלnode-ipהוא10.200.0.3. זו כתובת ה-IP של המכונה הווירטואליתabm-admin-cluster-cpב-VXLAN שנוצר על ידי הסקריפט.
רשימה מלאה של הדגלים והתיאורים שלהם זמינה במאמרי העזרה של ה-CLI של gcloud.
הפלט של הפקודה אמור להיראות כך:
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=ON_PREM_API_REGIONאם הפקודה
gcloud container bare-metal admin-clusters createמסתיימת בלי שגיאות, הפלט שלה ייראה כך:Created Anthos on bare metal Admin Cluster [https://gkeonprem.googleapis.com/v1/projects/anonuser-anonproject/locations/us-central1/bareMetalAdminClusters/gce-admin-gcloud-001]. NAME LOCATION VERSION MEMBERSHIP STATE abm-cluster-1 us-central1 1.31.300-gke.81 abm-cluster-1 RUNNINGכשיוצרים את אשכול הניהול, אשכול האתחול בתחנת העבודה של האדמין נמחק. הפלט של הפקודה
bmctl register bootstrapבחלון המסוף השני דומה לזה:... [2024-04-15 23:10:48+0000] Waiting for cluster to become ready OK [2024-04-15 23:16:38+0000] Please run [2024-04-15 23:16:38+0000] kubectl --kubeconfig bmctl-workspace/gce-admin-gcloud-001/gce-admin-gcloud-001-kubeconfig get nodes [2024-04-15 23:16:38+0000] to get cluster nodes status. [2024-04-15 23:16:38+0000] Waiting for node pools to become ready OK [2024-04-15 23:16:58+0000] Waiting for metrics to become ready in GCP OK [2024-04-15 23:21:58+0000] Waiting for cluster API provider to install in the created admin cluster OK [2024-04-15 23:22:08+0000] Moving admin cluster resources to the created admin cluster [2024-04-15 23:22:10+0000] Waiting for node update jobs to finish OK [2024-04-15 23:24:30+0000] Flushing logs... OK [2024-04-15 23:24:30+0000] Unregistering bootstrap cluster. [2024-04-15 23:24:30+0000] Deleting membership... OK [2024-04-15 23:24:32+0000] Deleting bootstrap cluster.
אימות של אשכול האדמין
קובץ ה-kubeconfig של אשכול האדמין נמצא בתחנת העבודה של האדמין בספרייה bmctl-workspace של חשבון הבסיס. כדי לאמת את הפריסה, מבצעים את השלבים הבאים:
משתמשים ב-SSH כדי לגשת לתחנת העבודה של האדמין כ-root:
gcloud compute ssh root@abm-ws --zone ZONEמוודאים שנוצר אשכול אדמין והוא פועל:
kubectl --kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig get nodesהפלט אמור להיראות כך:
NAME STATUS ROLES AGE VERSION abm-admin-cluster-cp Ready control-plane 94m 1.31.300-gke.81כשמסיימים את הבדיקה, מזינים
exitכדי להתנתק מתחנת העבודה של האדמין.
Terraform
כדי לבצע את הפעולות האלה תצטרכו להשתמש בשני חלונות טרמינל. בחלון מסוף אחד, מריצים את הפקודה bmctl register bootstrap כדי ליצור אשכול bootstrap. בזמן שהפקודה bmctl register bootstrap פועלת, מריצים את פקודות Terraform בחלון טרמינל אחר כדי ליצור את אשכול האדמין.
שינוי קובצי דוגמה של אשכול משתמשים כדי שיתאימו לאשכול אדמין
מאגר anthos-samples לא כולל דוגמה שמתייחסת ספציפית ליצירת אשכול אדמין ב-Google Distributed Cloud. בשלבים הבאים מוסבר איך ליצור אשכול אדמין על ידי שינוי דוגמה קיימת של Terraform לאשכול משתמשים.
בספרייה שבה שיבטתם את
anthos-samples, מריצים את הפקודה הבאה כדי להעתיק את קובצי הדוגמה של אשכול המשתמשים של MetalLB לתיקייה חדשה של אשכול הניהול:cp -r anthos-samples/anthos-onprem-terraform/abm_user_cluster_metallb \ anthos-samples/anthos-onprem-terraform/abm_admin_cluster_basicעוברים לספרייה
abm_admin_cluster_basic:cd anthos-samples/anthos-onprem-terraform/abm_admin_cluster_basicעורכים את קובצי Terraform:
variables.tf:מגדירים משתנה לכתובות ה-IP של הצומת במישור הבקרה (למרות שבסרטון ההדגמה הזה אנחנו משתמשים רק באחת). המשתנה הזה צריך להיות דומה לרשומה
variable "control_plane_ips" { ... }.מגדירים משתנה לכתובת ה-VIP של מישור הבקרה. המשתנה הזה צריך להיות דומה לרשומה
variable "control_plane_vip" { ... }.
terraform.tfvars:הקצאת ערכי משתנים להגדרות הבאות של אשכולות אדמין:
כתובות ה-IP של צומתי מישור הבקרה:
10.200.0.3כתובת VIP של מישור הבקרה:
10.200.0.48
main.tf:מחליפים את המשאב
google_gkeonprem_bare_metal_clusterבמשאבgoogle_gkeonprem_bare_metal_admin_cluster.מוחקים את המשאב
google_gkeonprem_bare_metal_node_poolואת הקטעlifecycleשקשור אליו.מעדכנים את המשאב כך שישתמש במשתנים שהוגדרו.
דוגמה לאופן שבו קובץ
main.tfעשוי להיראות אחרי עריכה כדי ליצור אשכול אדמין:/** * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #[START anthos_onprem_terraform_bare_metal_admin_cluster_basic_main] module "enable_google_apis_primary" { source = "terraform-google-modules/project-factory/google//modules/project_services" version = "~> 14.0" project_id = var.project_id activate_apis = [ "anthos.googleapis.com", "anthosaudit.googleapis.com", "anthosgke.googleapis.com", "cloudresourcemanager.googleapis.com", "compute.googleapis.com", "connectgateway.googleapis.com", "container.googleapis.com", "file.googleapis.com", "gkehub.googleapis.com", "iam.googleapis.com", "kubernetesmetadata.googleapis.com", "logging.googleapis.com", "monitoring.googleapis.com", "opsconfigmonitoring.googleapis.com", "serviceusage.googleapis.com", "stackdriver.googleapis.com" ] disable_services_on_destroy = false } # Enable GKE OnPrem API resource "google_project_service" "default" { project = var.project_id service = "gkeonprem.googleapis.com" disable_on_destroy = false } # Create a baremetal admin cluster and enroll it with the gkeonprem API resource "google_gkeonprem_bare_metal_admin_cluster" "admin-cluster-basic" { name = var.admin_cluster_name description = "Bare metal admin cluster" provider = google depends_on = [google_project_service.default] location = var.region bare_metal_version = var.bare_metal_version network_config { island_mode_cidr { service_address_cidr_blocks = ["0.96.0.0/20"] pod_address_cidr_blocks = ["192.168.0.0/16"] } } node_config { max_pods_per_node = 250 } control_plane { control_plane_node_pool_config { node_pool_config { operating_system = "LINUX" dynamic "node_configs" { for_each = var.admin_cp_ips content { node_ip = node_configs.value } } } } } load_balancer { port_config { control_plane_load_balancer_port = 443 } vip_config { control_plane_vip = var.admin_cp_vip } } 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" } } dynamic "security_config" { for_each = length(var.admin_user_emails) == 0 ? [] : [1] content { authorization { dynamic "admin_users" { for_each = var.admin_user_emails content { username = admin_users.value } } } } } lifecycle { ignore_changes = [ annotations["onprem.cluster.gke.io/user-cluster-resource-link"], annotations["alpha.baremetal.cluster.gke.io/cluster-metrics-webhook"], annotations["baremetal.cluster.gke.io/operation"], annotations["baremetal.cluster.gke.io/operation-id"], annotations["baremetal.cluster.gke.io/start-time"], annotations["baremetal.cluster.gke.io/upgrade-from-version"] ] } } #[END anthos_onprem_terraform_bare_metal_admin_cluster_basic_main]מידע נוסף על משאב Terraform לאשכולות אדמין זמין במאמר google_gkeonprem_bare_metal_admin_cluster במאגר Terraform.
יצירת אשכול האתחול
כשמשתמשים בלקוח GKE On-Prem API, כמו Terraform, כדי ליצור אשכול אדמין, צריך ליצור אשכול bootstrap בתחנת העבודה של האדמין. אשכול האתחול מארח את בקרי Kubernetes שנדרשים ליצירת אשכול האדמין.
משורת הפקודה, משתמשים ב-SSH כדי לגשת למכונה הווירטואלית של תחנת העבודה של האדמין כ-root:
gcloud compute ssh root@abm-ws --zone ZONEאפשר להתעלם מהודעות לגבי עדכון המכונה הווירטואלית ולהשלים את המדריך הזה. אם אתם מתכננים להשתמש במכונות הווירטואליות כסביבת בדיקה, כדאי לעדכן את מערכת ההפעלה או לשדרג לגרסה הבאה, כמו שמתואר במסמכי Ubuntu.
מגדירים את פרטי הכניסה של המשתמש כ-Application Default Credentials (ADC):
gcloud auth application-default loginפועלים לפי ההנחיות כדי לבחור את חשבון Google ל-ADC.
עוברים לספרייה
baremetal/ומריצים את הפקודה הבאה כדי ליצור את אשכול האתחול.שם אשכול ה-bootstrap נגזר משם אשכול האדמין על ידי הוספת הקידומת
bootstrap-.bmctl register bootstrap \ --ssh-key=/root/.ssh/id_rsa \ --name=bootstrap-ADMIN_CLUSTER_NAME \ --project-id=PROJECT_IDאחרי ש-
bmctlיוצר בהצלחה את אשכול האתחול, מוצגת פלט שדומה לזה:[2023-03-22 17:35:24+0000] Waiting for the temporary cluster to be registered... OK [2023-03-22 17:35:37+0000] Please go to https://console.cloud.google.com/home/dashboard?project=example-project-12345 to create the cluster [2023-03-22 17:35:37+0000] Waiting for preflight checks and cluster to run..
יצירת אשכול האדמין
מפעילים את Terraform ויוצרים תוכנית ב-Terraform:
terraform initTerraform מתקין את כל הספריות הנדרשות, כמו פלאגין שמתממשק עם שירותים חיצוניים Google Cloud .
בודקים את ההגדרות ומבצעים שינויים לפי הצורך:
terraform planמחילים את תוכנית Terraform כדי ליצור את אשכול האדמין:
terraform applyיצירת אשכול האדמין נמשכת 15 דקות או יותר. בסיום יצירת האשכול, תופיע הודעה כמו הבאה:
... google_gkeonprem_bare_metal_admin_cluster.admin-cluster-basic: Still creating... [20m10s elapsed] google_gkeonprem_bare_metal_admin_cluster.admin-cluster-basic: Creation complete after 20m11s [id=projects/anonuser-anonproject/locations/us-central1/bareMetalAdminClusters/gce-admin-terra002] Apply complete! Resources: 1 added, 0 changed, 0 destroyed.כשיוצרים את אשכול הניהול, אשכול האתחול בתחנת העבודה של האדמין נמחק. הפלט של הפקודה
bmctl register bootstrapבחלון המסוף השני דומה לזה:... [2024-04-15 23:10:48+0000] Waiting for cluster to become ready OK [2024-04-15 23:16:38+0000] Please run [2024-04-15 23:16:38+0000] kubectl --kubeconfig bmctl-workspace/gce-admin-gcloud-001/gce-admin-gcloud-001-kubeconfig get nodes [2024-04-15 23:16:38+0000] to get cluster nodes status. [2024-04-15 23:16:38+0000] Waiting for node pools to become ready OK [2024-04-15 23:16:58+0000] Waiting for metrics to become ready in GCP OK [2024-04-15 23:21:58+0000] Waiting for cluster API provider to install in the created admin cluster OK [2024-04-15 23:22:08+0000] Moving admin cluster resources to the created admin cluster [2024-04-15 23:22:10+0000] Waiting for node update jobs to finish OK [2024-04-15 23:24:30+0000] Flushing logs... OK [2024-04-15 23:24:30+0000] Unregistering bootstrap cluster. [2024-04-15 23:24:30+0000] Deleting membership... OK [2024-04-15 23:24:32+0000] Deleting bootstrap cluster.במסוף, עוברים לדף GKE clusters.
מוודאים שהפרויקט שבו יצרתם את אשכול המשתמשים נבחר. אשכול האדמין אמור להופיע ברשימה.
נכנסים לאשכול הניהול:
לוחצים על הקישור בשם האשכול ובחלונית הצדדית לוחצים על כניסה.
בוחרים באפשרות שימוש בזהות שלכם ב-Google כדי להיכנס.
לוחצים על התחברות.
אימות של אשכול האדמין
קובץ ה-kubeconfig של אשכול האדמין נמצא בתחנת העבודה של האדמין בספרייה bmctl-workspace של חשבון הבסיס. כדי לאמת את הפריסה, מבצעים את השלבים הבאים:
משתמשים ב-SSH כדי לגשת לתחנת העבודה של האדמין כ-root:
gcloud compute ssh root@abm-ws --zone ZONEמוודאים שנוצר אשכול אדמין והוא פועל:
kubectl --kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig get nodesהפלט אמור להיראות כך:
NAME STATUS ROLES AGE VERSION abm-admin-cluster-cp Ready control-plane 94m 1.31.300-gke.81כשמסיימים את הבדיקה, מזינים
exitכדי להתנתק מתחנת העבודה של האדמין.
4. יצירת אשכול המשתמשים
אפשר להשתמש במסוף, ב-Google Cloud CLI או ב-Terraform כדי ליצור את אשכול המשתמשים. כדי לפשט את התהליך, משתמשים ב-abm-user-cluster-metallb כשם של אשכול המשתמשים, כדי שיתאים לשם שמוגדר בהארדקוד בסקריפטים של Terraform. Google Cloud
bmctl
משתמשים ב-SSH כדי לגשת למכונה הווירטואלית של תחנת העבודה לאדמין,
abm-ws, כמשתמש root:gcloud compute ssh root@abm-ws --zone ZONEיוצרים קובץ תצורה של האשכול:
bmctl create config -c abm-user-cluster-metallb \ --project-id=PROJECT_ID
בקובץ ההגדרות של אשכול המשתמשים הבא, מגדירים את כתובת האימייל בקטע
clusterSecurityומאמתים את שאר ההגדרות:קובץ התצורה הבא של האשכול מלא בערכים שהזנתם בטבלת התכנון קודם לכן. בנוסף לערכים שהזנתם, שימו לב להבדלים הבאים מקובץ ההגדרות שנוצר:
- התגובות הוסרו מהדוגמה הזו כדי לשפר את הקריאות.
- הוסר הקטע של פרטי הכניסה, כמו שקורה בדרך כלל באשכולות משתמשים.
- סוג האשכול,
spec.type, הוגדר לערךuser. - השדה
spec.clusterSecurity.authorization.clusterAdmin.gcpAccountsנוסף כדי להעניק לחשבון שלך את התפקידclusterrole/cluster-admin. בין היתר, השדה הזה מאפשר לכם להיכנס לאשכול במסוףGoogle Cloud כדי לראות פרטים נוספים על האשכול.
--- apiVersion: v1 kind: Namespace metadata: name: cluster-abm-user-cluster-metallb --- apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: abm-user-cluster-metallb namespace: cluster-abm-user-cluster-metallb spec: type: user profile: default anthosBareMetalVersion: BMCTL_VERSION gkeConnect: projectID: PROJECT_ID controlPlane: nodePoolSpec: nodes: - address: 10.200.0.4 clusterNetwork: pods: cidrBlocks: - 192.168.0.0/16 services: cidrBlocks: - 10.96.0.0/20 loadBalancer: mode: bundled ports: controlPlaneLBPort: 443 vips: controlPlaneVIP: 10.200.0.50 ingressVIP: 10.200.0.51 addressPools: - name: pool1 addresses: - 10.200.0.51-10.200.0.70 clusterOperations: projectID: PROJECT_ID location: ON_PREM_API_REGION clusterSecurity: authorization: clusterAdmin: gcpAccounts: - YOUR_EMAIL_ADDRESS storage: lvpNodeMounts: path: /mnt/localpv-disk storageClassName: local-disks lvpShare: path: /mnt/localpv-share storageClassName: local-shared numPVUnderSharedPath: 5 nodeConfig: podDensity: maxPodsPerNode: 250 --- apiVersion: baremetal.cluster.gke.io/v1 kind: NodePool metadata: name: node-pool-1 namespace: cluster-abm-user-cluster-metallb spec: clusterName: abm-user-cluster-metallb nodes: - address: 10.200.0.5מחליפים את התוכן של קובץ ההגדרות שנוצר בתחנת העבודה של האדמין בתוכן מהדוגמה הקודמת.
פותחים את הקובץ שנוצר,
bmctl-workspace/abm-user-cluster-metallb/abm-user-cluster-metallb.yaml, ומחליפים את התוכן שלו בתוכן של הדוגמה שבדקתם בשלב הקודם.יוצרים את אשכול המשתמשים:
bmctl create cluster -c abm-user-cluster-metallb \ --kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig
הפקודה
bmctlמציגה פלט על המסך בזמן שהיא מריצה בדיקות מקדימות ויוצרת את האשכול. מידע מפורט נכתב ליומנים בתיקייהbaremetal/bmctl-workspace/abm-user-cluster-metallb/logבמחשב של האדמין.יצירת האשכול יכולה להימשך כמה דקות.
נכנסים לדף GKE clusters במסוף Google Cloud .
מוודאים שהפרויקט שבו יצרתם את אשכול המשתמשים נבחר. אמורים לראות ברשימה גם את האדמין וגם את אשכול המשתמשים.
נכנסים אל אשכול המשתמשים:
לוחצים על הקישור בשם האשכול ובחלונית הצדדית לוחצים על כניסה.
בוחרים באפשרות שימוש בזהות שלכם ב-Google כדי להיכנס.
לוחצים על התחברות.
חוזרים על אותם השלבים כדי להיכנס לאשכול הניהול.
המסוף
כדי ליצור אשכול משתמשים במסוף:
במסוף, נכנסים לדף Create a bare metal cluster.
מוודאים שבחרתם את Google Cloud הפרויקט שבו יצרתם את אשכול האדמין.
לוחצים על יצירת אשכול.
בתיבת הדו-שיח, לוחצים על On-premises (בשרת מקומי).
לצד Bare metal, לוחצים על Configure (הגדרה). יוצג הדף Prerequisites (דרישות מוקדמות).
בקטע Choose your cluster type (בחירת סוג האשכול), בוחרים באפשרות Create a user cluster for an existing admin cluster (יצירת אשכול משתמשים עבור אשכול אדמין קיים).
לוחצים על הבא.
מידע בסיסי על אשכולות
מזינים שם לאשכול המשתמשים או משתמשים בשם ברירת המחדל.
מוודאים שנבחרה קבוצת האדמינים החדשה שיצרתם. אפשר להשתמש בהגדרות ברירת המחדל לכל שאר ההגדרות בדף הזה.
בסרגל הניווט הימני, לוחצים על Networking (רשת).
Networking
הסקריפט שהפעלתם כדי ליצור מכונות וירטואליות ואת אשכול האדמין יצר גם VXLAN בשכבה 2 עם כתובות IP ברשת המשנה 10.200.0.0/24.
בקטע מישור הבקרה, מזינים את הפרטים הבאים בשדה Control plane node IP 1:
10.200.0.4זו כתובת ה-IP של המכונה הווירטואלית
abm-user-cluster-cp1ב-VXLAN שנוצר על ידי הסקריפט.בקטע Load balancer, משתמשים במאזן העומסים שמוגדר כברירת מחדל, Bundled with MetalLB.
בקטע New address pool, מזינים את טווח כתובות ה-IP הבא בשדה IP address range 1:
10.200.0.51-10.200.0.70לוחצים על סיום.
בקטע Virtual IPs, מזינים את כתובת ה-IP הבאה בשדה Control Plane VIP:
10.200.0.50מזינים את כתובת ה-IP הבאה בשדה Ingress VIP:
10.200.0.51משתמשים בכתובות ה-IP שמוגדרות כברירת מחדל בקטע Service and Pod CIDRs.
בסרגל הניווט הימני, לוחצים על מאגר ברירת המחדל.
יצירת מאגר צמתים
בקטגוריית המשתמשים חייבת להיות לפחות קבוצת צמתים אחת לצמתים של עובדים.
מזינים את כתובת ה-IP הבאה בשדה Nodes address 1:
10.200.0.5זו כתובת ה-IP של המכונה הווירטואלית abm-user-cluster-w1 ב-VXLAN שנוצר על ידי הסקריפט.
יצירת האשכול
לוחצים על Verify and Create (אימות ויצירה) כדי ליצור את אשכול המשתמשים.
יצירת אשכול המשתמשים נמשכת 15 דקות או יותר. במסוף מוצגות הודעות סטטוס בזמן שההגדרות מאומתות והאשכול נוצר.
אם יש בעיה בהגדרה, במסוף מוצגת הודעת שגיאה שאמורה להיות ברורה מספיק כדי שתוכלו לתקן את בעיית ההגדרה ולנסות שוב ליצור את האשכול.
כדי לראות מידע נוסף על תהליך היצירה, לוחצים על הצגת פרטים כדי להציג חלונית צדדית. לוחצים על כדי לסגור את חלונית הפרטים.
כשיוצרים את האשכול, מוצג הכיתוב סטטוס האשכול: פועל.
אחרי שיוצרים את האשכול, לוחצים על Clusters כדי לחזור לדף Clusters.
נכנסים אל אשכול המשתמשים:
לוחצים על הקישור בשם האשכול ובחלונית הצדדית לוחצים על כניסה.
בוחרים באפשרות שימוש בזהות שלכם ב-Google כדי להיכנס.
לוחצים על התחברות.
חוזרים על אותם השלבים כדי להיכנס לאשכול הניהול.
CLI של gcloud
כדי ליצור את אשכול המשתמשים:
מריצים את הפקודה הבאה כדי ליצור את אשכול המשתמשים:
gcloud container bare-metal clusters create abm-user-cluster-metallb \ --project=PROJECT_ID \ --admin-cluster-membership=projects/PROJECT_ID/locations/ON_PREM_API_REGION/memberships/ADMIN_CLUSTER_NAME \ --location=ON_PREM_API_REGION \ --version=BMCTL_VERSION \ --admin-users=YOUR_EMAIL_ADDRESS \ --metal-lb-address-pools='pool=lb-pool-1,manual-assign=True,addresses=10.200.0.51-10.200.0.70' \ --control-plane-node-configs='node-ip=10.200.0.4' \ --control-plane-vip=10.200.0.50 \ --control-plane-load-balancer-port=443 \ --ingress-vip=10.200.0.51 \ --island-mode-service-address-cidr-blocks=10.96.0.0/20 \ --island-mode-pod-address-cidr-blocks=192.168.0.0/16 \ --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/PROJECT_ID/locations/ON_PREM_API_REGION/operations/operation-1678304606537-5f668bde5c57e-341effde-b612ff8a] to complete...בפלט לדוגמה, המחרוזת
operation-1678304606537-5f668bde5c57e-341effde-b612ff8aהיאOPERATION_IDשל הפעולה ארוכת הטווח.כדי לברר את סטטוס הפעולה, פותחים חלון טרמינל נוסף ומריצים את הפקודה.
gcloud container bare-metal operations describe OPERATION_ID \ --project=PROJECT_ID \ --location=ON_PREM_API_REGIONמחליפים את
OPERATION_IDבמחרוזת המתאימה מהפלט של השלב הקודם.יצירת האשכול נמשכת כ-15 דקות או יותר. במהלך יצירת האשכול, אפשר להריץ את הפקודה הקודמת מדי פעם כדי לקבל את הסטטוס הנוכחי.
כשיוצרים את האשכול, מוצג פלט כמו זה:
Created Anthos cluster on bare metal [https://gkeonprem.googleapis.com/v1/projects/PROJECT_ID/locations/ON_PREM_API_REGION/bareMetalClusters/abm-user-cluster-metallb].
מידע נוסף על הפקודה
gcloud container bare-metal clusters create, כולל תיאורים של כל דגל, זמין בדף container bare-metal clusters create של משאב האשכולות במדריך העזר ל-CLI של gcloud.
יצירת מאגר צמתים
אחרי שהאשכול נוצר בהצלחה, אפשר ליצור מאגר צמתים לאשכול.
כדי ליצור מאגר צמתים:
מריצים את הפקודה הבאה כדי ליצור מאגר צמתים:
gcloud container bare-metal node-pools create NODE_POOL_NAME \ --cluster=abm-user-cluster-metallb \ --project=PROJECT_ID \ --location=ON_PREM_API_REGION \ --node-configs='node-ip=10.200.0.5'מחליפים את
NODE_POOL_NAMEבשם של מאגר הצמתים.אחרי הרצת הפקודה, הפלט אמור להיראות כך:
Waiting for operation [projects/PROJECT_ID/locations/ON_PREM_API_REGION/operations/operation-1678308682052-5f669b0d132cb-6ebd1c2c-816287a7] to complete...יצירת מאגר הצמתים נמשכת כ-5 דקות או פחות. כשמאגר הצמתים נוצר, מוצג פלט כמו זה שבהמשך:
Created node pool in Anthos cluster on bare metal [https://gkeonprem.googleapis.com/v1/projects/PROJECT_ID/locations/ON_PREM_API_REGION/bareMetalClusters/abm-user-cluster-metallb/bareMetalNodePools/NODE_POOL_NAME].נכנסים לדף Kubernetes clusters במסוף:
כניסה לדף Create a bare metal cluster
מוודאים שהפרויקט שבו יצרתם את אשכול המשתמשים נבחר. אמורים לראות ברשימה גם את האדמין וגם את אשכול המשתמשים.
נכנסים אל אשכול המשתמשים:
לוחצים על הקישור בשם האשכול ובחלונית הצדדית לוחצים על כניסה.
בוחרים באפשרות שימוש בזהות שלכם ב-Google כדי להיכנס.
לוחצים על התחברות.
חוזרים על אותם השלבים כדי להיכנס לאשכול הניהול.
Terraform
אפשר להשתמש בדוגמה הבסיסית הבאה להגדרה כדי ליצור אשכול משתמשים עם איזון עומסים של MetalLB בחבילה. מידע נוסף מופיע בgoogle_gkeonprem_bare_metal_clusterמאמרי העזרה.
בספרייה שבה שיבטתם את
anthos-samples, עוברים לספרייה שבה נמצאת הדוגמה של Terraform:cd anthos-samples/anthos-onprem-terraform/abm_user_cluster_metallbבדוגמה יש קובץ משתנים לדוגמה שאפשר להעביר אל
main.tf.יוצרים עותק של הקובץ
terraform.tfvars.sample:cp terraform.tfvars.sample terraform.tfvarsבודקים את הערכים בדוגמה הבאה.
קובץ המשתנים הבא של Terraform,
terraform.tfvars.sample, מאוכלס מראש בכתובות IP ובערכים שהזנתם בקטעים הקודמים של המדריך הזה.מחליפים את
ADMIN_2_EMAIL_ADDRESSבכתובת אימייל שמשויכת לחשבון Google Cloud , או מסירים אותה כשעורכים את קובץ המשתנים.למידע נוסף על הארגומנטים בדוגמה הזו שבהם מגדירים משתנים, אפשר לעיין בהפניה לארגומנטים במסמכי Terraform בנושא אשכולות משתמשים של Bare Metal.
מחליפים את התוכן של העותק של קובץ המשתנים בתוכן מהדוגמה הקודמת.
מפעילים את Terraform ויוצרים תוכנית ב-Terraform:
terraform initTerraform מתקין את כל הספריות הנדרשות, כמו פלאגין שמתממשק עם שירותים חיצוניים Google Cloud .
בודקים את ההגדרות ומבצעים שינויים לפי הצורך:
terraform planמחילים את התוכנית של Terraform כדי ליצור את אשכול המשתמשים:
terraform applyיצירת אשכול המשתמשים נמשכת 15 דקות או יותר. אפשר לראות את האשכול במסוף Google Cloud בדף GKE clusters.
נכנסים לדף GKE clusters במסוף Google Cloud .
מוודאים שהפרויקט שבו יצרתם את אשכול המשתמשים נבחר. אמורים לראות ברשימה גם את האדמין וגם את אשכול המשתמשים.
נכנסים אל אשכול המשתמשים:
לוחצים על הקישור בשם האשכול ובחלונית הצדדית לוחצים על כניסה.
בוחרים באפשרות שימוש בזהות שלכם ב-Google כדי להיכנס.
לוחצים על התחברות.
חוזרים על אותם השלבים כדי להיכנס לאשכול הניהול.
5. הסרת המשאבים
כדי להסיר את האשכולות והמכונות הווירטואליות שיצרתם באמצעות המדריך הזה, פועלים לפי ההוראות הבאות.
מחיקת אשכול המשתמש
bmctl
כדי למחוק את אשכול המשתמשים באמצעות
bmctl, מריצים את הפקודה הבאה ממכונת ה-VM של תחנת העבודה של האדמין,abm-ws:bmctl reset \ --cluster abm-user-cluster-metallb \ --admin-kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig
המסוף
במסוף, עוברים לדף GKE clusters.
ברשימת האשכולות, לוחצים על אשכול המשתמשים.
בחלונית פרטים, לוחצים על הצגת פרטים נוספים.
בחלק העליון של החלון, לוחצים על מחיקה.
כשמופיעה בקשה לאישור, מזינים את שם האשכול ולוחצים על מחיקה.
לוחצים על בפינה השמאלית העליונה כדי לראות את סטטוס המחיקה. יכול להיות שתצטרכו לרענן את הדף כדי לעדכן את רשימת האשכולות.
CLI של gcloud
מחיקת האשכול:
gcloud container bare-metal clusters delete abm-user-cluster-metallb \ --project=PROJECT_ID \ --location=ON_PREM_API_REGION \ --forceהדגל
--forceמאפשר למחוק אשכול שיש בו מאגרי צמתים. בלי הדגל--force, צריך למחוק קודם את מאגרי הצמתים ואז למחוק את האשכול.
מידע על דגלים אחרים זמין במאמר בנושא gcloud container bare-metal clusters delete.
Terraform
הפקודה terraform destroy מסיימת את המשאבים שנוצרו כשמריצים את הפקודה terraform apply כדי ליצור את אשכול המשתמשים.
מריצים את הפקודה הבאה מהספרייה שבה נמצאים קובצי הדוגמה של אשכול משתמשים ב-Terraform, כמו
main.tf:terraform destroy
צריך להמתין עד שמחיקת אשכול המשתמשים תושלם לפני שממשיכים למחיקת אשכול האדמין והמכונות הווירטואליות.
מחיקת אשכול האדמין והמכונות הווירטואליות
ביטול ההרשמה של אשכול הניהול ל-GKE On-Prem API:
gcloud container bare-metal admin-clusters unenroll ADMIN_CLUSTER_NAME \ --project=PROJECT_ID \ --location=ON_PREM_API_REGIONמתחברים לתחנת העבודה של האדמין:
gcloud compute ssh root@abm-ws --zone ZONEמוחקים את אשכול האדמין:
bmctl reset -c ADMIN_CLUSTER_NAME
bmctlמבטל את הרישום של האשכול מה-Fleet ואז מוחק את האשכול. צריך להמתין עד שהאשכול יימחק לפני שמוחקים את מכונות ה-VM.יוצאים מתחנת העבודה לאדמינים:
exitמציגים רשימה של כל המכונות הווירטואליות שהשם שלהן כולל את
abm:gcloud compute instances list | grep 'abm'מוודאים שאתם רוצים למחוק את כל המכונות הווירטואליות שמכילות את
abmבשם.אחרי האימות, אפשר למחוק מכונות וירטואליות של
abmעל ידי הפעלת הפקודה הבאה:gcloud compute instances list --format="value(name)" | \ grep 'abm' | \ xargs gcloud compute instances delete --quiet --zone ZONEמריצים את הפקודה הבאה כדי למחוק את חשבון השירות, וכשמופיעה בקשה, מזינים
y:gcloud iam service-accounts delete baremetal-gcr@PROJECT_ID.iam.gserviceaccount.comהמאמרים הבאים
כדי להתחיל ליצור אשכולות בציוד שלכם, אפשר לעיין במאמרים תכנון התקנה בסיסית בציוד שלכם ויצירת אשכולות בסיסיים בציוד שלכם.
במאמר דרישות מוקדמות להתקנה – סקירה כללית מפורטות דרישות ההתקנה.
מידע נוסף על התקנה זמין במאמר סקירה כללית על יצירת אשכול.
הוראות לפריסה באשכול מופיעות במאמר פריסת אפליקציה.