ב-Distributed Cloud software only, אתם יכולים להעריך אשכולות של GKE בחומרת Bare Metal על ידי יצירת אשכול אדמין ואשכול משתמש להוכחת היתכנות (PoC). המדריך הזה הוא החלק השני מתוך שני חלקים, והוא מתבסס על ההגדרה שמופיעה במאמר הגדרת תשתית מינימלית. אחרי הפריסה, אפשר להמשיך אל יצירת שירות ו-Ingress.
המסמך הזה מיועד לאדמינים, לאדריכלים ולמפעילים שמגדירים, מנטרים ומנהלים את מחזור החיים של התשתית. אל תשתמשו באשכול הוכחת היתכנות מינימלי בסביבת ייצור. כדי להעריך ארכיטקטורות של סביבות ייצור, קראו את המאמר בחירת מודל פריסה.
לפני שמתחילים
חשוב לוודא שהגדרתם את החומרה ותכננתם את כתובות ה-IP כמו שמתואר בחלק הקודם של המדריך, הגדרת תשתית מינימלית. לחלופין, אתם יכולים להשתמש בכלי לתכנון דרישות הרשת בקטע Prerequisites בתהליך Create a bare metal admin cluster במסוף Google Cloud .
אם אתם רוצים להשתמש ב-Terraform כדי ליצור את אשכול המשתמש, אתם צריכים את Terraform בתחנת העבודה של האדמין או במחשב אחר.
מוודאים שמותקנים הרכיבים העדכניים של Google Cloud CLI:
gcloud components update
כדי להפעיל את GKE On-Prem API ולהשתמש בו:
מפעילים את ה-API בפרויקט:
gcloud services enable \ --project PROJECT_ID \ gkeonprem.googleapis.comמחליפים את
PROJECT_IDבמזהה הפרויקט המארח של ה-fleet.אם מופיעה השגיאה
PERMISSION_DENIED, צריך לבדוק שוב את מזהה הפרויקט שהזנתם. אם מזהה הפרויקט נכון, מריצים את הפקודהgcloud auth loginכדי להיכנס ל-Google Cloud CLI באמצעות החשבון שיש לו גישה לפרויקט.אם זו הפעם הראשונה שאתם מפעילים את GKE On-Prem API בפרויקט, אתם צריכים לאתחל את ה-API. כדי לעשות את זה, מפעילים פקודה ב-CLI של gcloud שמציגה את הגרסאות הזמינות שאפשר להשתמש בהן כדי ליצור אשכול:
gcloud container bare-metal clusters query-version-config \ --project=PROJECT_ID \ --location="us-central1"
סקירה כללית של התהליך
כדי ליצור אשכולות בסיסיים, צריך לבצע את השלבים העיקריים הבאים:
אוספים מידע שמשמש להגדרת האשכולות.
יוצרים אשכול אדמין לניהול אשכול המשתמשים.
יוצרים אשכול משתמשים שיכול להריץ את עומסי העבודה.
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 ניתן לשינוי, כך שאפשר לבטל את ההרשמה של האשכול בכל שלב לאחר יצירתו.
כדי ליצור אשכול אדמין להתקנה מינימלית:
מגדירים את פרטי הכניסה שמוגדרים כברירת מחדל, שבהם Google Distributed Cloud יכול להשתמש כדי ליצור את האשכול באמצעות הפקודה הבאה:
gcloud auth application-default login
כדי ליצור קובץ תצורה של אשכול, מריצים את הפקודה הבאה מהספרייה
/baremetalבתחנת העבודה של האדמין:bmctl create config -c ADMIN_CLUSTER_NAME \ --enable-apis --create-service-accounts --project-id=PROJECT_ID
מאמתים את קובץ התצורה של אשכול האדמין:
קובץ התצורה הבא של האשכול מכיל את הערכים שהזנתם בטבלת התכנון בקטע הקודם. בנוסף לערכים שהזנתם, שימו לב להבדלים הבאים מקובץ התצורה שנוצר:
- ההערות הוסרו מהדוגמה הזו כדי לשפר את הקריאוּת.
- המפרט
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
מחליפים את התוכן של קובץ התצורה שנוצר בתחנת העבודה של האדמין בתוכן מהדוגמה שלמעלה.
פותחים את הקובץ שנוצר,
bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME.yaml, ומחליפים את התוכן שלו בתוכן של הדוגמה שאימתתם בשלב הקודם.כדי ליצור את אשכול האדמין, מריצים את הפקודה הבאה מהספרייה
/baremetalבתחנת העבודה של האדמין:bmctl create cluster -c ADMIN_CLUSTER_NAME
הפקודה
bmctlמציגה פלט במסך בזמן שהיא מריצה בדיקות מקדימות ויוצרת את האשכול. מידע מפורט נכתב ביומנים בתיקייהbaremetal/bmctl-workspace/ADMIN_CLUSTER_NAME/logבתחנת העבודה של האדמין.יצירת האשכול יכולה להימשך כמה דקות.
מוודאים שהאשכול נוצר ופועל:
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
כדי להקצות לחשבון המשתמש את התפקיד
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, כך שאפשר לבטל את ההרשמה של האשכול בכל שלב אחרי שהוא נוצר.
יוצרים קובץ תצורה של אשכול:
bmctl create config -c USER_CLUSTER_NAME \ --project-id=PROJECT_ID
מאמתים את קובץ התצורה של אשכול המשתמש:
קובץ התצורה הבא של האשכול מכיל את הערכים שהזנתם בטבלת התכנון בשלב הקודם. בנוסף לערכים שהזנתם, שימו לב להבדלים הבאים מקובץ התצורה שנוצר:
- ההערות הוסרו מהדוגמה הזו כדי לשפר את הקריאוּת.
- סוג האשכול,
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מחליפים את התוכן של קובץ התצורה שנוצר בתחנת העבודה של האדמין בתוכן מהדוגמה שלמעלה.
פותחים את הקובץ שנוצר,
bmctl-workspace/USER_CLUSTER_NAME/USER_CLUSTER_NAME.yaml, ומחליפים את התוכן שלו בתוכן של הדוגמה שאימתתם בשלב הקודם.יוצרים את אשכול המשתמשים:
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בתחנת העבודה של האדמין.יצירת האשכול יכולה להימשך כמה דקות.
מוודאים שהאשכול נוצר ופועל:
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
המסוף
כדי ליצור אשכול משתמשים במסוף:
נכנסים לדף Create a bare metal cluster במסוף.
מוודאים שברשימת הפרויקטים Google Cloud נבחר הפרויקט
PROJECT_ID.לוחצים על Create Cluster.
בתיבת הדו-שיח, לוחצים על On-premises.
לצד Bare metal, לוחצים על Configure. הדף Prerequisites ייפתח.
בקטע Choose your cluster type, בוחרים באפשרות Create a user cluster for an existing admin cluster.
לוחצים על הבא.
מידע בסיסי על אשכולות
מזינים את השם
USER_CLUSTER_NAMEלאשכול המשתמש או משתמשים בברירת המחדל.מוודאים שאשכול האדמין החדש שנוצר נבחר.
בשדה GCP API Location, בוחרים באפשרות us-central1.
בקטע Google Distributed Cloud version, בוחרים את
CLUSTER_VERSIONאו משתמשים בברירת המחדל. אפשר להשתמש בערכי ברירת המחדל בשאר ההגדרות בדף הזה.בסרגל הניווט הימני, לוחצים על Networking.
Networking
בקטע מישור הבקרה, מזינים את הערך הבא בשדה Control plane node IP 1:
USER_CP_NODE_IPבקטע 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:
USER_CP_VIPמזינים את כתובת ה-IP של Ingress VIP:
USER_INGRESS_VIPבקטע Service and Pod CIDRs, אם לא שיניתם את ה-Service ואת ה-Pod CIDRs בכלי התכנון, אתם יכולים להשתמש בברירות המחדל.
אם שיניתם את ה-CIDR, הזינו את ה-CIDR שאתם רוצים להשתמש בהם:
- Service CIDR:
10.96.0.0/20- Pod CIDR:
192.168.0.0/16בסרגל הניווט הימני, לוחצים על default pool (מאגר ברירת המחדל).
יצירת מאגר צמתים
באשכול חייב להיות לפחות מאגר צמתים אחד עבור צומתי עובדים. מאגר צמתים הוא תבנית לקבוצות של צומתי עובדים שנוצרו באשכול הזה.
בשדה Nodes address 1, מזינים את כתובת ה-IP של צומת העובד באשכול המשתמש:
USER_WORKER_NODE_IP
יצירת האשכול
לוחצים על Verify and Create כדי ליצור את אשכול המשתמשים.
יצירת אשכול המשתמשים נמשכת 15 דקות או יותר. במסוף יוצגו הודעות סטטוס בזמן אימות ההגדרות ויצירת האשכול.
אם יש בעיה בהגדרה, במסוף תוצג הודעת שגיאה שאמורה להיות ברורה מספיק כדי שתוכלו לתקן את הבעיה בהגדרה ולנסות שוב ליצור את האשכול.
כדי לראות מידע נוסף על תהליך היצירה, לוחצים על Show details כדי להציג חלונית צדדית. לוחצים על כדי לסגור את חלונית הפרטים.
אחרי שהאשכול נוצר, מוצג הסטטוס Cluster status: running.
אחרי שהאשכול נוצר, לוחצים על Clusters כדי לחזור לדף Clusters.
CLI של gcloud
בקטע הזה מוסבר איך ליצור אשכול משתמש ומאגר צמתים באמצעות ה-CLI של gcloud.
מריצים את הפקודה הבאה כדי ליצור אשכול משתמש:
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].
אחרי שיוצרים את האשכול, מריצים את הפקודה הבאה כדי ליצור מאגר צמתים באשכול החדש.
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.
יוצרים ספרייה חדשה ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת
.tf. במדריך הזה, הקובץ נקראmain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tfמאמתים את המשאב של 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" } } }מעתיקים את המשאב של Terraform לקובץ
main.tfושומרים את הקובץ.מאתחלים ויוצרים את התוכנית ב-Terraform:
terraform initTerraform מתקין את כל הספריות הנדרשות, כמו הספק Google Cloud .
בודקים את ההגדרות ומשנים אותן לפי הצורך:
terraform planמפעילים את התוכנית של Terraform כדי ליצור את אשכול המשתמש:
terraform applyכשתופיע בקשה, כותבים
yes.יצירת אשכול המשתמשים הבסיסי ומאגר הצמתים נמשכת כ-15 דקות (או יותר, בהתאם לרשת).
כדי ליצור קובץ 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בשם הקובץ מציין את התאריך והשעה שבהם הקובץ נוצר.הקובץ הזה מכיל את פרטי הכניסה לאימות של האשכול, ולכן צריך לאחסן אותו במיקום מאובטח עם גישה מוגבלת.
מוודאים שהאשכול נוצר ופועל:
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 של שער הקישור, מריצים את הפקודות הבאות מהמחשב המקומי:
מקבלים את הרשומה של 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.עכשיו אפשר להריץ פקודות של
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 של אשכול האדמין. תצטרכו להריץ את הפקודות האלה בתחנת העבודה של האדמין.
המאמרים הבאים
למידע נוסף על: