הדף הזה הוא החלק השני במדריך בן שני חלקים שבו מוסבר איך להשתמש ב-Google Distributed Cloud (תוכנה בלבד) כדי ליצור התקנה קטנה של אשכולות GKE בשרתים פיזיים לצורך הוכחת היתכנות. בחלק השני הזה, יוצרים אשכול אדמין ואשכול משתמשים, על סמך ההגדרה והתכנון מהחלק הראשון, הגדרת תשתית מינימלית. אחר כך אפשר להמשיך אל יצירת שירות ו-Ingress.
המדריך הזה מיועד לאדמינים, לארכיטקטים ולמפעילים שמגדירים, מנטרים ומנהלים את מחזור החיים של התשתית. מידע נוסף על תפקידים ומשימות נפוצים זמין במאמר תפקידים ומשימות נפוצים של משתמשי GKE.
יכול להיות שההתקנה שהגדרתם באמצעות המדריך הזה לא מתאימה לצרכים שלכם בסביבת הייצור. מידע נוסף על התקנות בסביבת ייצור זמין במאמר בחירת מודל פריסה.
לפני שמתחילים
חשוב לוודא שהגדרתם את החומרה ותכננתם את כתובות ה-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במזהה הפרויקט המארח של 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. איסוף מידע
משתמשים במידע שהכנתם בשלב הגדרת תשתית מינימלית או במידע ממתכנן הרשת כדי למלא כל 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 |
| כתובת IP וירטואלית (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_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 (מיקום ה-API של GCP), בוחרים באפשרות 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 דקות או יותר. במסוף מוצגות הודעות סטטוס בזמן האימות של ההגדרות ויצירת האשכול.
אם יש בעיה בהגדרה, במסוף מוצגת הודעת שגיאה שצריכה להיות ברורה מספיק כדי שתוכלו לתקן את בעיית ההגדרה ולנסות שוב ליצור את האשכול.
כדי לראות מידע נוסף על תהליך היצירה, לוחצים על הצגת פרטים כדי להציג חלונית צדדית. לוחצים על כדי לסגור את חלונית הפרטים.
כשיוצרים את האשכול, מוצג הכיתוב סטטוס האשכול: פועל.
אחרי שיוצרים את האשכול, לוחצים על 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:
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 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 של אשכול האדמין. תצטרכו להריץ את הפקודות האלה בתחנת העבודה של האדמין.