הדף הזה הוא החלק השני במדריך שמסביר איך להשתמש ב-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. יכול להיות שההתקנה המינימלית הזו לא מתאימה לצרכים שלכם בסביבת הייצור ולתרחישי השימוש שלכם. מידע על התקנות בסביבת ייצור זמין במדריכי ההתקנה.
לפני שמתחילים
חשוב לוודא שהגדרתם את החומרה ותכננתם את כתובות ה-IP כמו שמתואר בחלק הקודם של המדריך הזה, הגדרת תשתית מינימלית. אפשר גם להשתמש בכלי לתכנון דרישות הרשת בקטע דרישות מוקדמות בתהליך יצירת אשכול אדמין מסוג Bare Metal במסוף 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במזהה הפרויקט המארח של הצי.אם מופיעה השגיאה
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. איסוף מידע
משתמשים במידע שהכנתם בשלב הגדרת תשתית מינימלית או במידע ממתכנן הרשת כדי למלא כל 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 ניתן לשינוי, כך שאפשר לבטל את ההרשמה של האשכול בכל שלב אחרי שהוא נוצר.
כדי ליצור אשכול אדמין להתקנה מינימלית:
מגדירים את פרטי ברירת המחדל שאפשר להשתמש בהם ב-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. יצירת אשכול משתמשים
בשלבים הבאים יוצרים אשכול משתמשים להתקנה מינימלית של אשכול אדמינים ואשכול משתמשים. לפני שממשיכים, חשוב לוודא שסיפקתם ערכים לכל 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 ניתן לשינוי, כך שאפשר לבטל את ההרשמה של האשכול בכל שלב אחרי שהוא נוצר.
יוצרים קובץ תצורה של האשכול:
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 list נבחרה.
PROJECT_IDלוחצים על יצירת אשכול.
בתיבת הדו-שיח, לוחצים על 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 (מיקום GCP API), בוחרים באפשרות us-central1.
בקטע Google Distributed Cloud version, בוחרים באפשרות
CLUSTER_VERSIONאו משתמשים בברירת המחדל. אפשר להשתמש בהגדרות ברירת המחדל לכל שאר ההגדרות בדף הזה.בסרגל הניווט הימני, לוחצים על Networking (רשת).
Networking
בקטע מישור הבקרה, מזינים את הכתובת הבאה בשדה Control plane node IP 1:
USER_CP_NODE_IPבקטע Load balancer, משתמשים במאזן העומסים שמוגדר כברירת מחדל, Bundled with MetalLB.
עוברים לקטע מאגר כתובות חדש. מזינים את טווח כתובות ה-IP בשדה טווח כתובות IP 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בסרגל הניווט הימני, לוחצים על מאגר ברירת המחדל.
יצירת מאגר צמתים
ב-cluster צריך להיות לפחות מאגר צמתים אחד לצמתי עובד. מאגר צמתים הוא תבנית לקבוצות של צמתי עובדים שנוצרים באשכול הזה.
מזינים את כתובת ה-IP של צומת העובד באשכול המשתמשים בשדה כתובת 1 של צמתים:
USER_WORKER_NODE_IP
יצירת האשכול
לוחצים על Verify and Create (אימות ויצירה) כדי ליצור את אשכול המשתמשים.
יצירת אשכול המשתמשים נמשכת 15 דקות או יותר. המסוף מציג הודעות סטטוס בזמן שהוא מאמת את ההגדרות ויוצר את האשכול.
אם יש בעיה בהגדרה, במסוף מוצגת הודעת שגיאה שאמורה להיות ברורה מספיק כדי שתוכלו לתקן את בעיית ההגדרה ולנסות שוב ליצור את האשכול.
כדי לראות מידע נוסף על תהליך היצירה, לוחצים על הצגת פרטים כדי להציג חלונית צדדית. לוחצים על כדי לסגור את חלונית הפרטים.
כשיוצרים את האשכול, מוצג הכיתוב 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.מסוף Google Cloud: כתובת האימייל שלכם, כיוצרי האשכול, נכללת באופן אוטומטי בדף Cluster basics בקטע Authorization.
למרות שצוינה רק כתובת האימייל שלכם, אתם יכולים לכלול כתובות אימייל אחרות כדי להעניק למשתמשים אחרים גישת אדמין לאשכול.
מדיניות RBAC שהוענקה לכתובת האימייל שלכם מאפשרת לכם:
הקצאת תפקיד Kubernetes
clusterrole/cluster-adminבאשכול.מאפשרת לכם להיכנס לאשכול במסוף Google Cloud באמצעות הזהות שלכם ב-Google. אפשר לראות את האשכול בדף 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 של אשכול האדמין. תצטרכו להריץ את הפקודות האלה בתחנת העבודה של האדמין.