בדף הזה מוסבר איך ליצור אשכול אדמין באמצעות מסוף Google Cloud או ה-CLI של Google Cloud (gcloud CLI). שני לקוחותGoogle Cloud סטנדרטיים אלה משתמשים ב-GKE On-Prem API כדי ליצור את האשכול.
מה זה GKE On-Prem API?
GKE On-Prem API הוא API שמתארח ב- Google Cloud, ומאפשר לכם לנהל את מחזור החיים של האשכולות המקומיים באמצעות Terraform ויישומים סטנדרטיים שלGoogle Cloud . ממשק ה-API של GKE On-Prem פועל בתשתית של Google Cloud. Terraform, המסוף וה-CLI של gcloud הם לקוחות של ה-API, והם משתמשים ב-API כדי ליצור אשכולות במרכז הנתונים שלכם.
כדי לנהל את מחזור החיים של האשכולות, GKE On-Prem API צריך לאחסן מטא-נתונים לגבי מצב האשכול ב- Google Cloud, באמצעותGoogle Cloud האזור שציינתם כשאתם יוצרים את האשכול. הנתונים האלה מאפשרים לממשק ה-API לנהל את מחזור החיים של האשכול, והם לא כוללים נתונים ספציפיים לעומס העבודה.
כשיוצרים אשכול באמצעות לקוח GKE On-Prem API, מצייניםGoogle Cloud פרויקט. אחרי שיוצרים את האשכול, הוא נרשם אוטומטית ל-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. אם זו הפעם הראשונה שאתם מתקינים את Google Distributed Cloud (תוכנה בלבד) על שרת Bare Metal, יכול להיות שיהיה לכם קל יותר להשתמש במסוף מאשר ב-CLI של gcloud.
אחרי שתכירו טוב יותר את המידע שצריך לספק כדי ליצור אשכולות, יכול להיות שתגלו שה-CLI של gcloud נוח יותר לשימוש כי אפשר לשמור את הפקודה עם הארגומנטים שלה בקובץ טקסט. אם אתם משתמשים בכלי CI/CD, כמו Cloud Build, אתם יכולים להשתמש בפקודות gcloud כדי ליצור אשכול ולציין את הדגל --impersonate-service-account כדי לבצע את היצירה באופן אוטומטי.
דרישות מוקדמות
המסוף
במסוף, נכנסים לדף Create a bare metal cluster.
בוחרים את Google Cloud הפרויקט שבו רוצים ליצור את האשכול. הפרויקט שנבחר משמש גם כפרויקט המארח של צי המכונות.
בדף דרישות מוקדמות מוצגות הדרישות לגבי תחנת העבודה של האדמין ומכונות הצמתים של האשכול. בעזרת הכלי לתכנון כתובות IP שבקטע דרישות רשת תוכלו לתכנן את כתובות ה-IP שנדרשות להתקנה מינימלית של אשכול אדמין אחד ואשכול משתמשים אחד.
דרישות מוקדמות ל-Admin workstation
כדי להציג את דרישות החומרה, מערכת ההפעלה והקישוריות של תחנת העבודה של האדמין, מרחיבים את הקטע הזה.
דרישות מוקדמות למכונות של צמתים באשכול
כדי להציג את דרישות החומרה, מערכת ההפעלה והקישוריות של מכונות צומת האשכול, אפשר להרחיב את הקטע הזה.
דרישות הרשת
בקטע הזה מוסבר איך לתכנן את כתובות ה-IP שנדרשות לסביבה מינימלית. אופציונלית, בקטע Node IP and Virtual IP addresses, אפשר לספק כתובת IP של צומת התחלה וכתובת IP וירטואלית (VIP), והמסוף יציג טבלה של כתובות ה-IP שאתם צריכים. כתובות ה-IP האלה לא חלות על ההגדרה של אשכול האדמין. הם נועדו לשמש כמדריך שיעזור לכם לתכנן את כתובות ה-IP שאתם צריכים להתקנה. אפשר להוריד את הטבלה לקובץ CSV ולייבא אותה לגיליון אלקטרוני או לכלי לתכנון כתובות IP, כדי להשתמש בה כנקודת התחלה למעקב אחרי כתובות ה-IP שדרושות לאשכולות.
בדיקת המשאבים ב-Google Cloud:
מוודאים שכל ממשקי Google API הנדרשים מופעלים בפרויקט המארח של צי המכונות. בנוסף, צריך להפעיל את 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 (התקנת סביבת bootstrap) בסרגל הניווט הימני.
CLI של gcloud
דרישות מוקדמות שקשורות לחומרה, לרשת ולמערכת ההפעלה
כדי ליצור אשכול אדמין באמצעות לקוח GKE On-Prem API, צריך לעמוד באותם תנאים מוקדמים של חומרה, רשת ומערכת הפעלה כמו כשיוצרים את האשכול באמצעות bmctl. פרטים נוספים מופיעים במאמר בנושא דרישות מוקדמות להתקנה.
ממשקי Google APIs שנדרשים
מוודאים שכל ממשקי Google API הנדרשים מופעלים בפרויקט המארח של צי המכונות. בנוסף, צריך להפעיל את 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-.
בוחרים את הגרסה של אשכול האדמין.
בשדה Google Cloud API Location (מיקום Google Cloud API), בוחרים את Google Cloud האזור מהרשימה. בהגדרה הזו מצוין האזור שבו פועלים ממשקי ה-API והשירותים הבאים:
- GKE On-Prem API (
gkeonprem.googleapis.com) - שירות לצי רכב (
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
כדי לראות את הגרסאות הזמינות של אשכולות Bare Metal שאפשר להתקין:
גרסת
bmctlשאתם מורידים כדי ליצור את סביבת ה-bootstrap צריכה להיות זהה לגרסה שתתקינו באשכול האדמין.gcloud container bare-metal admin-clusters query-version-config \ --location=REGION
מחליפים את
REGIONב Google Cloud אזור שבו תשתמשו כשתיצרו את האשכול. זה האזור שבו פועלים GKE On-Prem API ושירותי Fleet ו-Connect. מצייניםus-west1או אזור נתמך אחר.
יצירת אשכול האתחול
מבצעים את השלבים הבאים בתחנת העבודה של האדמין. הפקודות האלה מוצגות במסוף.
מגדירים את פרטי הכניסה של המשתמש כ-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בגרסה של אשכול Bare Metal שרוצים להתקין. אם העתקתם את הפקודה מהמסוף, הגרסה כבר מופיעה בפקודה.יוצרים את אשכול האתחול. אתם יכולים לאפשר ל-
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 משתמש בחשבון השירות הזה כדי לשמור על חיבור בין האשכול שלך לבין Google Cloud. | roles/gkehub.connect |
| anthos-baremetal-register | הסוכן Connect משתמש בחשבון השירות הזה כדי לרשום את האשכולות שלכם ב-Google Cloud fleet. | roles/gkehub.admin |
| anthos-baremetal-cloud-ops | סוכן Stackdriver משתמש בחשבון השירות הזה כדי לייצא יומנים ומדדים מאשכולות אל 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 יוצר בהצלחה את אשכול האתחול, מוצגת פלט שדומה לזה:
[2023-03-22 17:35:24+0000] Waiting for the temporary cluster to be registered... OK [2023-03-22 17:35:37+0000] Please go to https://console.cloud.google.com/home/dashboard?project=example-project-12345 to create the cluster [2023-03-22 17:35:37+0000] Waiting for preflight checks and cluster to run..
יצירת אשכול האדמין
המסוף
בדף Install bootstrap environment (התקנת סביבת bootstrap), לוחצים על Check Connection (בדיקת החיבור).
אם הפעולה מצליחה, במסוף מוצגת ההודעה Connection established.
צריך ליצור את החיבור לאשכול bootstrap לפני שממשיכים. אם החיבור לא נוצר, צריך לבדוק את הארגומנטים שצוינו בפקודה
bmctl register bootstrap:מוודאים שהערך של
--target-cluster-nameזהה לשם אשכול האדמין שמוצג בקטע Bootstrap environment basics (היסודות של סביבת האתחול).מוודאים שהערך של
--project-idתואם למזהה של הפרויקט שבחרתם במסוף.
אם אתם צריכים לשנות את שם אשכול ה-bootstrap או את מזהה הפרויקט, מזינים
Ctrl-Cכדי לצאת מ-bmctl register bootstrapומריצים מחדש את הפקודה.לוחצים על הבא כדי להתחיל להגדיר את אשכול הניהול. רוב ההגדרות במסוף תואמות לשדות בקובץ התצורה של האשכול.
בקטע 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
אם אשכול האתחול לא מופיע ברשימה, בודקים את השם של אשכול האתחול ואת מזהה הפרויקט שצוינו ב-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: הפרויקט שאליו אשכול האדמין יירשם אוטומטית אחרי יצירת האשכול. אי אפשר לשנות את פרויקט המארח של הצי אחרי שיוצרים את האשכול.
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 עבור клаסטרים שאינם HA. ערך ברירת המחדל אם הפרמטר--max-pods-per-nodeלא נכלל בפקודה הוא 110. אחרי שיוצרים את האשכול, אי אפשר לעדכן את הערך הזה.גם מספר ה-Pods המקסימלי לכל צומת (שנקרא צפיפות Pods) מוגבל על ידי משאבי ה-IP הזמינים של האשכול. פרטים נוספים זמינים במאמר רשתות של Pod.
CONTROL_PLANE_VIP: כתובת ה-IP הווירטואלית (VIP) במאזן העומסים של שרת Kubernetes API של האשכול. כוללים את ה-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, לשימוש ב-Pods באשכול המשתמשים. טווח ה-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: סוג האחסון שבו נוצרים כרכי PV במהלך יצירת האשכול.
לרשימה מלאה של הדגלים והתיאורים שלהם, ראו את המאמר העזר של ה-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.
פתרון שגיאות בבדיקה המקדימה
לפני יצירת האשכול, 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
לדוגמה, נניח שבדיקת Preflight נכשלה כי לא הייתה אפשרות להגיע לצומת של מישור הבקרה. בתחנת העבודה של האדמין, יופיעו נתונים שדומים לנתונים הבאים:
[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 כדי להיכנס לאשכול, אפשר להגדיר את שער החיבור באופן הבא:
בתחנת העבודה של האדמין, מגדירים את משתנה הסביבה
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. בנוסף, אפשר להריץ פקודות 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