לקוחות Standard Google Cloud יכולים ליצור אשכול אדמין כדי לנהל את מחזור החיים של אשכולות המשתמשים. גם מסוף Google Cloud וגם ה-CLI של gcloud (gcloud CLI) קוראים ל-GKE On-Prem API כדי להקצות את האשכול.
מה זה GKE On-Prem API?
GKE On-Prem API הוא API שמתארח ב- Google Cloudומאפשר לנהל את מחזור החיים של האשכולות המקומיים באמצעות Terraform ואפליקציותGoogle Cloud רגילות. GKE On-Prem API פועל בתשתית של Google Cloud. Terraform, המסוף וה-CLI של gcloud הם לקוחות של ה-API, והם משתמשים ב-API כדי ליצור אשכולות במרכז הנתונים שלכם.
כדי לנהל את מחזור החיים של האשכולות, ה-API של GKE On-Prem צריך לאחסן מטא-נתונים על מצב האשכול ב- Google Cloud, באמצעות האזור ב-Google Cloud שציינתם כשנוצר האשכול. המטא-נתונים האלה מאפשרים ל-API לנהל את מחזור החיים של האשכול, והם לא כוללים נתונים ספציפיים לעומס העבודה.
כשיוצרים אשכול באמצעות לקוח GKE On-Prem API, מציינים פרויקט ב-Google Cloud . אחרי שיוצרים את האשכול, הוא נרשם באופן אוטומטי ל-fleet של הפרויקט שצוין. הפרויקט הזה נקרא פרויקט המארח של ה-Fleet. אי אפשר לשנות את הפרויקט המארח של ה-fleet אחרי שיוצרים את האשכול.
אם אתם מעדיפים, אתם יכולים ליצור אשכול אדמין על ידי יצירת קובץ תצורה של אשכול אדמין ושימוש ב-bmctl, כפי שמתואר במאמר יצירת אשכול אדמין.
אם אתם רוצים להשתמש במסוף או ב-CLI של gcloud כדי לנהל את מחזור החיים של אשכולות שנוצרו באמצעות bmctl, קראו את המאמר הגדרת אשכולות לניהול באמצעות GKE On-Prem API.
הרשאות IAM
אם אתם לא הבעלים של הפרויקט ב- Google Cloud , אתם צריכים לבקש מבעלי הפרויקט להקצות לכם את התפקידים הבאים:
כדי לגשת לדפים של Google Kubernetes Engine במסוף, צריך גם את התפקיד roles/container.viewer.
איך נותנים גישה לפרויקטים, לתיקיות ולארגונים
גישה לשורת פקודה
אחרי שיוצרים את האשכול, אם רוצים להשתמש בשער הקישור כדי להריץ פקודות kubectl באשכול במחשבים אחרים שאינם תחנת העבודה של האדמין, צריך להתקין את כלי שורת הפקודה הבאים במחשב שבו מתכוונים להשתמש.
הגרסה העדכנית של ה-CLI של gcloud.
kubectlלהרצת פקודות באשכולות של Kubernetes. אם אתם צריכים להתקין אתkubectl, תוכלו להיעזר בהוראות האלה.
בחירת הלקוח ליצירת אשכול האדמין
אפשר להשתמש במסוף או ב-CLI של gcloud כדי ליצור אשכול אדמין שמנוהל על ידי GKE On-Prem API. אם זו הפעם הראשונה שאתם מתקינים את תוכנת Distributed Cloud רק ל-bare metal, יכול להיות שיהיה לכם קל יותר להשתמש במסוף מאשר ב-CLI של gcloud.
אחרי שתכירו טוב יותר את המידע שצריך לספק כדי ליצור אשכולות, יכול להיות שיהיה לכם נוח יותר להשתמש ב-CLI של gcloud כי אפשר לשמור את הפקודה עם הארגומנטים שלה בקובץ טקסט. אם אתם משתמשים בכלי CI/CD, כמו Cloud Build, אתם יכולים להשתמש בפקודות gcloud כדי ליצור אשכול ולציין את הדגל --impersonate-service-account כדי להפוך את היצירה לאוטומטית.
דרישות מוקדמות
המסוף
נכנסים לדף Create a bare metal cluster במסוף.
בוחרים את הפרויקט ב- Google Cloud שבו רוצים ליצור את האשכול. הפרויקט שנבחר משמש גם כפרויקט המארח של ה-fleet.
בדף Prerequisites מוצגות הדרישות לתחנת העבודה של האדמין ולמכונות של צומתי האשכול. הכלי לתכנון כתובות IP בקטע דרישות הרשת עוזר לתכנן את כתובות ה-IP שנדרשות להתקנה מינימלית של אשכול אדמין אחד ואשכול משתמש אחד.
דרישות מוקדמות לתחנת עבודה של אדמין
הרחיבו את הקטע הזה כדי להציג את דרישות החומרה, מערכת ההפעלה והקישוריות של תחנת הניהול.
דרישות מוקדמות למכונות של צומתי אשכול
הרחיבו את הקטע הזה כדי להציג את דרישות החומרה, מערכת ההפעלה והקישוריות של מכונות הצומת באשכול.
דרישות הרשת
בקטע הזה מוסבר איך לתכנן את כתובות ה-IP שנדרשות לסביבה מינימלית. בקטע Node IP and Virtual IP addresses, אתם יכולים לספק כתובת IP של צומת התחלה וכתובת IP וירטואלית (VIP), ובמסוף תוצג טבלה של כתובות ה-IP שאתם צריכים. כתובות ה-IP האלה לא חלות על ההגדרות של אשכול האדמין. הן נועדו לשמש כמדריך שיעזור לכם לתכנן את כתובות ה-IP שאתם צריכים להתקנה. אתם יכולים להוריד את הטבלה לקובץ CSV ולייבא אותה לגיליון אלקטרוני או לכלי לתכנון כתובות IP, כדי להשתמש בה כנקודת התחלה למעקב אחרי כתובות ה-IP שנדרשות לאשכולות שלכם.
בדיקת המשאבים ב-Google Cloud:
מוודאים שכל ממשקי ה-API הנדרשים של Google מופעלים בפרויקט המארח של הצי. בנוסף, צריך להפעיל את GKE On-Prem API:
gcloud services enable --project FLEET_HOST_PROJECT_ID \ gkeonprem.googleapis.com
מחליפים את FLEET_HOST_PROJECT_ID במזהה הפרויקט המארח של הצי.
לפני שיוצרים את האשכול, מריצים את הפקודה bmctl register bootstrap בתחנת העבודה של האדמין, כמו שמתואר בקטע הכנת סביבת האתחול. הפקודה הזו יכולה ליצור את חשבונות השירות הנדרשים עם הרשאות ה-IAM המינימליות שנדרשות כדי ליצור את אשכול האדמין.
אם אתם מעדיפים, אתם יכולים להגדיר חשבונות שירות באופן ידני.
כשתהיו מוכנים להתחיל, לחצו על Install bootstrap environment בסרגל הניווט שמימין.
CLI של gcloud
דרישות מוקדמות בנוגע לחומרה, לרשת ולמערכת ההפעלה
כדי ליצור אשכול אדמין באמצעות לקוח API של GKE On-Prem, צריך את אותן דרישות מוקדמות של חומרה, רשת ומערכת הפעלה כמו ליצירת האשכול באמצעות bmctl. למידע נוסף, קראו את המאמר דרישות מוקדמות להתקנה.
ממשקי Google API נדרשים
חשוב לוודא שכל ממשקי ה-API הנדרשים של Google מופעלים בפרויקט המארח של הצי. בנוסף, צריך להפעיל את GKE On-Prem API:
gcloud services enable --project FLEET_HOST_PROJECT_ID \ gkeonprem.googleapis.com
מחליפים את FLEET_HOST_PROJECT_ID במזהה הפרויקט המארח של הצי.
חשבונות שירות והרשאות נדרשים
לפני שיוצרים את האשכול, מריצים את הפקודה bmctl register bootstrap בתחנת העבודה של האדמין, כמו שמתואר בקטע הכנת סביבת האתחול. הפקודה הזו יכולה ליצור את חשבונות השירות הנדרשים עם הרשאות ה-IAM המינימליות שנדרשות כדי ליצור את אשכול האדמין.
אם אתם מעדיפים, אתם יכולים להגדיר חשבונות שירות באופן ידני.
תכנון כתובות IP
לפני שיוצרים את אשכול האדמין, צריך לתכנן את כתובות ה-IP של האשכולות. במאמר תכנון כתובות ה-IP מופיעה דוגמה להקצאת כתובות IP לאשכול אדמין בזמינות גבוהה (HA) ולשני אשכולות משתמשים בזמינות גבוהה. גם אם אתם משתמשים ב-CLI של gcloud כדי ליצור את אשכול האדמין, כדאי לפעול לפי השלבים במסוף שבקטע הזה כדי להשתמש בכלי לתכנון כתובות ה-IP.
הכנת סביבת האתחול
לפני שיוצרים את אשכול האדמין, צריך להריץ את הפקודה bmctl register bootstrap בתחנת העבודה של האדמין. הפקודה הזו פורסת אשכול Kubernetes in Docker (kind) בתחנת העבודה של האדמין. אשכול האתחול הזה מארח את בקרי Kubernetes שנדרשים כדי ליצור את אשכול האדמין. כשיוצרים את אשכול האדמין, הבקרים באשכול ה-bootstrap מקצים צמתים, מריצים בדיקות מקדימות ורושמים את אשכול האדמין ב-fleet. אשכול ה-bootstrap נמחק באופן אוטומטי אחרי שהאשכול נוצר בהצלחה.
המסוף
מזינים שם לאשכול האדמין. שימו לב ששם אשכול ה-bootstrap נגזר מהוספת bootstrap- לשם אשכול הניהול.
בוחרים את הגרסה של אשכול האדמין.
בשדה Google Cloud API Location, בוחרים את האזור של Google Cloudמהרשימה. ההגדרה הזו קובעת את האזור שבו פועלים ממשקי ה-API והשירותים הבאים:
- GKE On-Prem API (
gkeonprem.googleapis.com) - שירות Fleet (
gkehub.googleapis.com) - קישור השירות (
gkeconnect.googleapis.com)
ההגדרה הזו קובעת גם את האזור שבו יאוחסנו:
- המטא-נתונים של האשכול שנדרשים ל-GKE On-Prem API כדי לנהל את מחזור החיים של האשכול
- נתוני Cloud Logging ו-Cloud Monitoring של רכיבי המערכת
- יומן הביקורת של האדמין שנוצר על ידי יומני הביקורת של Cloud
שם האשכול, הפרויקט והמיקום מזהים באופן ייחודי את האשכול ב- Google Cloud.
- GKE On-Prem API (
במסוף מוצגות הפקודות שצריך להריץ בתחנת העבודה של האדמין. כלי שורת הפקודה
bmctlצריך להתאים לגרסת האשכול שאתם יוצרים. אם כבר הורדתם את הגרסה הרלוונטית שלbmctlלתחנת העבודה של האדמין, אתם לא צריכים להוריד אותה שוב.
CLI של gcloud
חשוב לעדכן את הרכיבים:
gcloud components update
מריצים את הפקודה הבאה כדי להיכנס באמצעות חשבון Google:
gcloud auth login
מציגים את הגרסאות הזמינות של אשכולות בשרת פיזי שאפשר להתקין:
גרסת
bmctlשמורידים כדי ליצור את סביבת האתחול חייבת להתאים לגרסה שמתקינים באשכול האדמין.gcloud container bare-metal admin-clusters query-version-config \ --location=REGION
מחליפים את
REGIONב Google Cloud האזור שבו תשתמשו כשתצרו את האשכול. זה האזור שבו פועלים GKE On-Prem API והשירותים Fleet ו-Connect. מציינים אתus-west1או אזור נתמך אחר.
יצירת אשכול ה-bootstrap
מבצעים את השלבים הבאים בתחנת העבודה של האדמין. הפקודות האלה מוצגות במסוף.
מגדירים את פרטי הכניסה של המשתמש כ-Application Default Credentials (ADC):
gcloud auth application-default login
פועלים לפי ההנחיות כדי לבחור את חשבון Google ל-ADC.
אם צריך, מורידים את כלי שורת הפקודה
bmctlלספריית העבודה הנוכחית.gcloud storage cp gs://anthos-baremetal-release/bmctl/VERSION/linux-amd64/bmctl . chmod a+x ./bmctl
מחליפים את
VERSIONבגרסת האשכול במחשב פיזי שרוצים להתקין. אם העתקתם את הפקודה מהמסוף, הגרסה כבר נמצאת בפקודה.יוצרים את אשכול ה-bootstrap. אתם יכולים לאפשר ל-
bmctlליצור את חשבונות השירות (SA) הנדרשים, או ליצור את חשבונות השירות ואת קובצי המפתחות בעצמכם ולהעביר אותם לפקודהbmctl register bootstrap.
bmctl יוצר חשבונות שירות
אם רוצים ש-bmctl ייצור את חשבונות השירות הנדרשים עם ההרשאות המינימליות שנדרשות כדי ליצור את אשכול האדמין, משתמשים בפקודה הבאה. הפקודה הזו מניחה ש-bmctl נמצא בספריית העבודה הנוכחית.
./bmctl register bootstrap \ --ssh-key=YOUR_PRIVATE_KEY \ --target-cluster-name=ADMIN_CLUSTER_NAME \ --project-id=FLEET_HOST_PROJECT_ID
מחליפים את מה שכתוב בשדות הבאים:
-
YOUR_PRIVATE_KEY: הנתיב למפתח ה-SSH הפרטי. מפתח ה-SSH נוצר כשהגדרתם גישת SSH ברמה הבסיסית (root) לצמתים.
אם העתקתם את הפקודה שמוצגת במסוף, השדות הבאים כבר מלאים.
ADMIN_CLUSTER_NAME: השם של אשכול האדמין.
FLEET_HOST_PROJECT_ID: הפרויקט שאליו אשכול האדמין יירשם באופן אוטומטי אחרי שיוצרים את האשכול.
הפקודה bmctl register bootstrap יוצרת את חשבונות השירות הבאים.
המפתחות של חשבונות השירות מאוחסנים בספרייה bmctl-workspace/.sa-keys.
| חשבון שירות | מטרה | תפקידי IAM |
|---|---|---|
| anthos-baremetal-gcr | ב-Google Distributed Cloud משתמשים בחשבון השירות הזה כדי להוריד קובצי אימג' של קונטיינרים מ-Artifact Registry. | ללא |
| anthos-baremetal-connect | Connect Agent משתמש בחשבון השירות הזה כדי לשמור על החיבור בין האשכול לבין Google Cloud. | roles/gkehub.connect |
| anthos-baremetal-register | Connect Agent משתמש בחשבון השירות הזה כדי לרשום את האשכולות ל-Google Cloud fleet. | roles/gkehub.admin |
| anthos-baremetal-cloud-ops | ה-Stackdriver Agent משתמש בחשבון השירות הזה כדי לייצא יומנים ומדדים מאשכולות ל-Cloud Logging ול-Cloud Monitoring. |
roles/logging.logWriter roles/monitoring.metricWriter roles/stackdriver.resourceMetadata.writer roles/opsconfigmonitoring.resourceMetadata.writer roles/monitoring.dashboardEditor roles/monitoring.viewer roles/serviceusage.serviceUsageViewer roles/kubernetesmetadata.publisher |
ציון קובצי מפתחות של חשבון שירות
אם אתם מעדיפים, אתם יכולים להעביר ל-bmctl את קובצי המפתחות של חשבונות השירות שיצרתם. בפקודה הבאה נעשה שימוש בשמות של קובצי המפתחות בקטע הגדרה ידנית של חשבונות שירות, בהנחה ש-bmctl וקובצי המפתחות נמצאים בספריית העבודה הנוכחית.
./bmctl register bootstrap \ --ssh-key=YOUR_PRIVATE_KEY \ --target-cluster-name=ADMIN_CLUSTER_NAME \ --project-id=FLEET_HOST_PROJECT_ID \ --gcr-service-account-key=anthos-baremetal-gcr.json \ --gke-agent-service-account-key=connect-agent.json \ --gke-register-service-account-key=connect-register.json \ --cloud-operation-service-account-key=anthos-baremetal-cloud-ops.json
מחליפים את מה שכתוב בשדות הבאים:
YOUR_PRIVATE_KEY: הנתיב למפתח ה-SSH הפרטי. מפתח ה-SSH נוצר כשהגדרתם גישת SSH ברמה הבסיסית (root) לצמתים.
ADMIN_CLUSTER_NAME: השם של אשכול האדמין.
FLEET_HOST_PROJECT_ID: הפרויקט שאליו אשכול האדמין יירשם באופן אוטומטי אחרי שיוצרים את האשכול.
הדגלים הבאים מציינים את הנתיב לקובצי המפתחות:
-gcr-service-account-key: הנתיב לקובץ המפתח של חשבון השירות שמושך קובצי אימג' של קונטיינרים (anthos-baremetal-gcr).
--gke-agent-service-account-key: הנתיב לקובץ המפתח של חשבון השירות של Connect Agent (anthos-baremetal-connect).
--gke-register-service-account-key: הנתיב לקובץ המפתח של חשבון השירות של Connect Agent שרושם את האשכול ל-fleet (anthos-baremetal-register).
--cloud-operation-service-account-key: הנתיב לקובץ המפתח של חשבון השירות, כדי לבדוק את יומני הביקורת ולעקוב אחרי פרויקטים (anthos-baremetal-cloud-ops).
אחרי ש-bmctl יוצר בהצלחה את אשכול ה-bootstrap, הפלט שמופיע דומה לזה:
[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, לוחצים על Check Connection.
אם החיבור הצליח, במסוף תופיע ההודעה Connection established.
לפני שממשיכים, צריך ליצור את החיבור לאשכול ה-bootstrap. אם החיבור לא נוצר, בודקים את הארגומנטים שצוינו בפקודה
bmctl register bootstrap:חשוב לוודא שהערך של
--target-cluster-nameתואם לערך של Admin cluster name שמוצג בקטע Bootstrap environment basics.מוודאים שהערך של
--project-idתואם למזהה הפרויקט שבחרתם במסוף.
אם אתם צריכים לשנות את שם אשכול ה-bootstrap או את מזהה הפרויקט, הזינו
Ctrl-Cכדי לצאת מ-bmctl register bootstrapוהריצו מחדש את הפקודה.לוחצים על Next כדי להתחיל להגדיר את אשכול האדמין. רוב ההגדרות במסוף תואמות לשדות בקובץ התצורה של האשכול.
בקטע Node configuration, מזינים ערך בין 64 ל-250 בשדה Maximum Pods per node, או משאירים את ערך ברירת המחדל, 110. אי אפשר לעדכן את הערך הזה אחרי שיוצרים את האשכול.
המספר המקסימלי של Pods לכל צומת (שנקרא צפיפות Pods) מוגבל גם על ידי משאבי ה-IP הזמינים של האשכול. פרטים נוספים זמינים במאמר רשתות Pod.
לוחצים על הבא.
בדף Networking, מגדירים איך הצמתים והרכיבים באשכול מתקשרים זה עם זה ועם מישור הבקרה של Kubernetes.
כדי לראות מידע מפורט, מעבירים את הסמן מעל הסמל שליד כל שדה.
לוחצים על אימות ויצירה.
במסוף מוצגות הודעות סטטוס בזמן שההגדרות מאומתות והאשכול נוצר במרכז הנתונים.
אם יש בעיה בהגדרה, במסוף תוצג הודעת שגיאה שאמורה להיות ברורה מספיק כדי שתוכלו לתקן את הבעיה בהגדרה ולנסות שוב ליצור את האשכול.
CLI של gcloud
לפני שיוצרים את אשכול האדמין, צריך לוודא שאשכול ה-bootstrap רשום כחבר ב-fleet:
gcloud container fleet memberships list \ --project=FLEET_HOST_PROJECT_ID
אם אשכול ה-bootstrap לא מופיע ברשימה, צריך לבדוק את השם של אשכול ה-bootstrap ואת מזהה הפרויקט שציינתם ב-bmctl register bootstrap. אם אתם צריכים לשנות את שם אשכול ה-bootstrap או את מזהה הפרויקט, הזינו Ctrl-C כדי לצאת מ-bmctl register bootstrap והריצו מחדש את הפקודה.
כדי ליצור אשכול אדמין, משתמשים בפקודה הבאה:
gcloud container bare-metal admin-clusters create
רוב הדגלים שאתם מציינים בפקודה תואמים לשדות בקובץ התצורה של אשכול המשתמש.
כדי ליצור אשכול אדמין עם מאזן העומסים המצורף:
gcloud container bare-metal admin-clusters create ADMIN_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=REGION \ --version=VERSION \ --max-pods-per-node=MAX_PODS_PER_NODE \ --control-plane-vip=CONTROL_PLANE_VIP \ --control-plane-load-balancer-port=CONTROL_PLANE_LOAD_BALANCER_PORT \ --control-plane-node-configs 'CONTROL_PLANE_NODE_CONFIG' \ --island-mode-service-address-cidr-blocks=SERVICE_ADDR_CIDR \ --island-mode-pod-address-cidr-blocks=POD_ADDR_CIDR \ --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
אם רוצים להשתמש באיזון עומסים ידני, מוסיפים את --enable-manual-lb לפקודה.
מחליפים את מה שכתוב בשדות הבאים:
ADMIN_CLUSTER_NAME: השם של אשכול האדמין. אי אפשר לשנות את השם אחרי שיוצרים את האשכול.
FLEET_HOST_PROJECT_ID: הפרויקט שאליו אשכול האדמין יירשם באופן אוטומטי אחרי שיוצרים את האשכול. אי אפשר לשנות את הפרויקט המארח של ה-Fleet אחרי שיוצרים את האשכול.
REGION: האזור ב- Google Cloud שבו פועל GKE On-Prem API. צריך לציין אתus-west1או אזור נתמך אחר. אי אפשר לשנות את האזור אחרי שיוצרים את האשכול. ההגדרה הזו מציינת את האזור שבו מאוחסנים:- המטא-נתונים של האשכול שנדרשים ל-GKE On-Prem API כדי לנהל את מחזור החיים של האשכול
- נתוני Cloud Logging ו-Cloud Monitoring של רכיבי המערכת
- יומן הביקורת של האדמין שנוצר על ידי יומני הביקורת של Cloud
שם האשכול, הפרויקט והמיקום מזהים באופן ייחודי את האשכול ב- Google Cloud.
VERSION: גרסת האשכול של Bare Metal. הגרסה צריכה להיות זהה לגרסתbmctlשבה השתמשתם כדי להריץ אתbmctl register bootstrap. כדי לבדוק את הגרסה שלbmctl, מריצים אתbmctl versionבתחנת העבודה של האדמין.
MAX_PODS_PER_NODE: באשכולות אדמין, הערכים המותרים הם 32-250 ו-64-250 באשכולות ללא זמינות גבוהה. ערך ברירת המחדל אם לא כוללים את--max-pods-per-nodeבפקודה הוא 110. אחרי שיוצרים את האשכול, אי אפשר לעדכן את הערך הזה.מספר ה-Pods המקסימלי לכל צומת (שנקרא צפיפות Pods) מוגבל גם על ידי משאבי ה-IP הזמינים של האשכול. פרטים נוספים זמינים במאמר רשתות Pod.
CONTROL_PLANE_VIP: כתובת ה-IP הווירטואלית (VIP) במאזן העומסים של שרת ה-API של Kubernetes באשכול. צריך לכלול את ה-VIP של מישור הבקרה באותה רשת משנה שבה נמצאים צומתי מאזן העומסים. אל תכללו את כתובת ה-VIP של מישור הבקרה במאגרי הכתובות של מאזן העומסים.
CONTROL_PLANE_LOAD_BALANCER_PORT: היציאה שבה מאזן העומסים משרת את מישור הבקרה. אפשר להגדיר ערך אחר, אבל יציאה443היא היציאה הרגילה שמשמשת לחיבורי HTTPS.
CONTROL_PLANE_NODE_CONFIG: כתובת ה-IPv4 של צומת במישור הבקרה. צמתים של מישור הבקרה מריצים את עומס העבודה של המערכת. צריך לציין את הדגל הזה לכל צומת במישור הבקרה. בדרך כלל, אם משתמשים בפריסה מינימלית יש מכונה אחת, ואם משתמשים בפריסה עם זמינות גבוהה (HA) יש שלוש מכונות. כדי שיהיה קוורום של רוב לזמינות גבוהה, צריך לציין מספר אי-זוגי של צמתים. אפשר לשנות את הכתובות האלה בכל פעם שמעדכנים או משדרגים את האשכול.הערך של הדגל הוא בפורמט הבא:
'node-ip=CP_IP_ADDRESS_1,labels=CP_KEY_1.1=CP_VALUE_1.1;CP_KEY_1.2=CP_VALUE_1.2;...' \
הערך מכיל פלחים שמתחילים במילות המפתח
node-ipו-labels. מפרידים בין הפלחים באמצעות פסיקים.
node-ip: כתובת ה-IP של צומת במישור הבקרה. אפשר לציין רקnode-ipאחד לכל דגל. אם צריך לציין יותר מצומת אחד, צריך לכלול את הדגל שוב לכל צומת.
labels: צמד אחד או יותר של מפתח=ערך שמצורפים לצומת.
שימו לב לכללי התחביר הבאים:
- תוחמים את הערך כולו במירכאות בודדות.
- אי אפשר להשתמש ברווח לבן.
- מפרידים בין כל צמד של מפתח=ערך בקטע
labelsבאמצעות נקודה-פסיק.
לדוגמה:
--control-plane-node-configs 'node-ip=192.0.2.1' \ --control-plane-node-configs 'node-ip=192.0.2.2,labels=key2.1=value2.1' \ --control-plane-node-configs 'node-ip=192.0.2.3,labels=key3.1=value3.1;key3.2=value3.2' \
SERVICE_ADDR_CIDR: טווח של כתובות IPv4 בפורמט CIDR, לשירותים באשכול. טווח ה-CIDR חייב להיות בין /24 ל- /12, כאשר /12 מספק את מספר כתובות ה-IP הגדול ביותר. מומלץ להשתמש בטווח במרחב כתובות ה-IP לרשתות אינטרנט פרטיות, שמוגדר ב-RFC 1918, לדוגמה10.96.0.0/20.
POD_ADDR_CIDR: טווח של כתובות IPv4 בפורמט CIDR, שישמשו לפודים באשכול המשתמשים. טווח ה-CIDR חייב להיות בין /18 ל- /8, כאשר /8 מספק את המספר הגדול ביותר של כתובות IP. מומלץ להשתמש בטווח במרחב כתובות ה-IP לרשתות אינטרנט פרטיות, שמוגדר ב-RFC 1918, לדוגמה192.168.0.0/16.
צריך לציין את דגלי האחסון הבאים. הפקודה לדוגמה כוללת ערכים אופייניים. מידע נוסף זמין במאמר הגדרת אחסון מקומי.
--lvp-share-path: הנתיב של המכונה המארחת שבו אפשר ליצור ספריות משנה. נוצר PersistentVolume (PV) מקומי לכל ספריית משנה.
--lvp-share-storage-class: זהו ה-StorageClass שמשמש ליצירת נפחים קבועים. ה-StorageClass נוצר במהלך יצירת האשכול.
--lvp-node-mounts-config-path: הנתיב של המכונה המארחת שבו אפשר למצוא דיסקים שנטענו. לכל טעינה נוצר PersistentVolume (PV) מקומי.
--lvp-node-mounts-config-storage: סוג האחסון שבו נוצרים אמצעי האחסון הקבועים במהלך יצירת האשכול.
רשימה מלאה של הדגלים והתיאורים שלהם מופיעה בחומר העזר של ה-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=FLEET_HOST_PROJECT_ID \ --location=REGION
למידע נוסף, ראו gcloud container bare-metal operations.
תיקון שגיאות לפני ההעלאה
לפני יצירת האשכול, bmctl מריץ סדרה של בדיקות מקדימות כדי לאמת את ההגדרות האישיות. אם יש בעיה בהגדרה, הפקודה gcloud ... create מסתיימת עם שגיאה דומה לזו:
ERROR: (gcloud.container.bare-metal.admin-clusters.create) Invalid resource state for "projects/694677185633/locations/us-west1/bareMetalAdminClusters/abm-cluster-1": cluster preflight checks failed
לדוגמה, נניח שבדיקה מקדימה נכשלה כי לא הייתה גישה לצומת של מישור הבקרה. בתחנת העבודה של האדמין, תראו משהו דומה לזה:
[2023-03-27 20:34:38+0000] Waiting for preflight check job to finish... OK [2023-03-27 20:35:58+0000] - Validation Category: machines and network [2023-03-27 20:35:58+0000] - [PASSED] pod-cidr [2023-03-27 20:35:58+0000] - [FAILED] node-network (log: bmctl-workspace/log/register-bootstrap-20230327-201548/node-network) [2023-03-27 20:35:58+0000] - Failed to connect to the host via ssh: ssh: connect to host 10.100.0.5 port 22: Connection timed out [2023-03-27 20:35:58+0000] Flushing logs... OK [2023-03-27 20:35:58+0000] Error polling the preflight check abm-cluster-mar-27 in the cluster-abm-cluster-mar-27: preflight check failed
בתחנת העבודה של האדמין, מוודאים שהתהליך
bmctl register bootstrapעדיין פועל. אם לא, מריצים מחדש את הפקודה עם אותם ארגומנטים ומוסיפים את הדגל--reuse-bootstrap-cluster=true.מריצים את הפקודה
gcloud ... updateכדי לתקן את כתובת ה-IP הלא תקינה:gcloud container bare-metal admin-clusters update ADMIN_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=REGION \ --control-plane-node-configs 'node-ip=NEW_NODE_ID_ADDRESS'
למידע נוסף, ראו gcloud container bare-metal admin-clusters update.
פרטים על תהליך יצירת האשכול מופיעים בתחנת העבודה של האדמין. אם הבדיקות המקדימות עברו בהצלחה, תראו משהו כזה:
[2023-03-22 23:12:47+0000] Waiting for cluster kubeconfig to become ready OK [2023-03-22 23:15:47+0000] Writing kubeconfig file [2023-03-22 23:15:47+0000] kubeconfig of cluster being created is present at bmctl-workspace/abm-cluster-1/abm-cluster-1-kubeconfig [2023-03-22 23:15:47+0000] Please restrict access to this file as it contains authentication credentials of your cluster. [2023-03-22 23:15:47+0000] Waiting for cluster to become ready OK [2023-03-22 23:20:17+0000] Please run [2023-03-22 23:20:17+0000] kubectl --kubeconfig bmctl-workspace/abm-cluster-1/abm-cluster-1-kubeconfig get nodes [2023-03-22 23:20:17+0000] to get cluster nodes status. [2023-03-22 23:20:17+0000] Waiting for node pools to become ready OK [2023-03-22 23:20:37+0000] Waiting for metrics to become ready in GCP OK [2023-03-22 23:25:38+0000] Waiting for cluster API provider to install in the created admin cluster OK [2023-03-22 23:25:48+0000] Moving admin cluster resources to the created admin cluster [2023-03-22 23:25:51+0000] Waiting for node update jobs to finish OK [2023-03-22 23:27:41+0000] Flushing logs... OK [2023-03-22 23:27:41+0000] Deleting membership... OK [2023-03-22 23:27:42+0000] Deleting bootstrap cluster.
התחברות לאשכול האדמין
הפקודה bmctl register bootstrap יוצרת קובץ kubeconfig לאשכול האדמין בתחנת העבודה של האדמין. הספרייה שבה נמצא kubeconfig ושם הקובץ מבוססים על השם של אשכול האדמין, באופן הבא:
bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig
צריך להגביל את הגישה ל-kubeconfig הזה כי הוא מכיל פרטי כניסה לאימות של האשכול.
אם אתם רוצים להשתמש ב-Google Identity כדי להיכנס לאשכול, אתם יכולים להגדיר את שער הקישור באופן הבא:
בתחנת העבודה של האדמין, מגדירים את משתנה הסביבה
KUBECONFIG:export KUBECONFIG=$HOME/bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig
מגדירים את ההקשר הנוכחי במשתנה סביבה:
export CONTEXT="$(kubectl config current-context)"מריצים את הפקודה הבאה ב-
gcloud. הפקודה הזו מבצעת את הפעולות הבאות:- מקצה לחשבון המשתמש את התפקיד
clusterrole/viewשל Kubernetes באשכול. - מגדירה את האשכול כך שתוכלו להריץ פקודות
kubectlלקריאה בלבד במחשב המקומי, בלי שתצטרכו להשתמש ב-SSH לתחנת העבודה של האדמין.
מחליפים את
GOOGLE_ACCOUNT_EMAILבכתובת האימייל שמשויכת לחשבון Google Cloud . לדוגמה:--users=alex@example.com.gcloud container fleet memberships generate-gateway-rbac \ --membership=ADMIN_CLUSTER_NAME \ --role=clusterrole/view \ --users=GOOGLE_ACCOUNT_EMAIL \ --project=FLEET_HOST_PROJECT_ID \ --kubeconfig=$KUBECONFIG \ --context=$CONTEXT\ --applyהפלט של הפקודה הזו דומה לפלט הבא, שקוצר כדי שיהיה קריא יותר:
Validating input arguments. Specified Cluster Role is: clusterrole/view Generated RBAC policy is: -------------------------------------------- ... Writing RBAC policy for user: GOOGLE_ACCOUNT_EMAIL to cluster. Successfully applied the RBAC policy to cluster.- מקצה לחשבון המשתמש את התפקיד
אחרי שמגדירים את כללי המדיניות האלה של RBAC, אפשר להיכנס לאשכול מהמסוף באמצעות Google Identity. בנוסף, אתם יכולים להריץ פקודות kubectl לקריאה בלבד במחשבים שאינם תחנת העבודה של האדמין, באמצעות kubeconfig מיוחד שמנתב בקשות דרך שער הקישור.
מריצים את הפקודה הבאה במחשב שהוא לא תחנת העבודה של האדמין, כדי לקבל את הרשומה
kubeconfigשיכולה לגשת לאשכול דרך שער הקישור.gcloud container fleet memberships get-credentials ADMIN_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_IDהפלט אמור להיראות כך:
Starting to build Gateway kubeconfig... Current project_id: FLEET_HOST_PROJECT_ID A new kubeconfig entry "connectgateway_FLEET_HOST_PROJECT_ID_global_ADMIN_CLUSTER_NAME" has been generated and set as the current context.עכשיו אפשר להריץ פקודות של
kubectlדרך שער הקישור:kubectl get pods -A
המאמרים הבאים
- מחיקה של אשכול אדמין
- ביטול הרישום של אשכול לא זמין
- הוספת אשכול משתמשים
- ניהול אשכולות דרך מסוף Google Cloud