בדף הזה מוסבר איך ליצור אשכול אדמין באמצעות Google Cloud המסוף או ה-CLI של gcloud (gcloud CLI). שני לקוחותGoogle Cloud סטנדרטיים אלה משתמשים ב-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 כדי ליצור אשכולות במרכז הנתונים שלכם.
כדי לנהל את מחזור החיים של האשכולות, GKE On-Prem API צריך לאחסן מטא-נתונים לגבי מצב האשכול ב 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. אם זו הפעם הראשונה שאתם מתקינים את Google Distributed Cloud (תוכנה בלבד) על שרת Bare Metal, יכול להיות שיהיה לכם קל יותר להשתמש במסוף מאשר ב-CLI של gcloud.
אחרי שתכירו טוב יותר את המידע שצריך לספק כדי ליצור אשכולות, יכול להיות שתגלו שנוח יותר להשתמש ב-CLI של gcloud, כי אפשר לשמור את הפקודה עם הארגומנטים שלה בקובץ טקסט. אם אתם משתמשים בכלי CI/CD, כמו Cloud Build, אתם יכולים להשתמש בפקודות gcloud כדי ליצור אשכול ולציין את הדגל --impersonate-service-account כדי לבצע אוטומציה של היצירה.
דרישות מוקדמות
המסוף
במסוף, נכנסים לדף Create a bare metal cluster.
בוחרים את Google Cloud הפרויקט שבו רוצים ליצור את האשכול. הפרויקט שנבחר משמש גם כפרויקט המארח של Fleet.
בדף דרישות מוקדמות מוצגות הדרישות עבור תחנת העבודה של האדמין והמכונות של צומתי האשכול. מתכנן כתובות ה-IP שבקטע דרישות רשת עוזר לתכנן את כתובות ה-IP שנדרשות להתקנה מינימלית של אשכול אדמין אחד ואשכול משתמשים אחד.
דרישות מוקדמות ל-Admin workstation
כדי להציג את דרישות החומרה, מערכת ההפעלה והקישוריות של תחנת העבודה של האדמין, מרחיבים את הקטע הזה.
דרישות מוקדמות למכונות של צמתים באשכול
כדי להציג את דרישות החומרה, מערכת ההפעלה והקישוריות של מכונות צומת האשכול, אפשר להרחיב את הקטע הזה.
דרישות הרשת
בקטע הזה תוכלו לתכנן את כתובות ה-IP שדרושות לכם לסביבה מינימלית. לחלופין, בקטע Node IP and Virtual IP addresses (כתובות IP של צומת וכתובות IP וירטואליות), תוכלו לספק כתובת 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 בסרגל הניווט הימני.
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) בתחנת העבודה של האדמין. באשכול bootstrap מתארחים בקרי Kubernetes שנדרשים ליצירת אשכול הניהול. כשיוצרים את אשכול הניהול, הבקרים באשכול bootstrap יקצו צמתים, יריצו בדיקות קדם-הפעלה וירשמו את אשכול הניהול ב-Fleet. אשכול bootstrap נמחק אוטומטית אחרי שהאשכול נוצר בהצלחה.
המסוף
מזינים שם לאשכול הניהול. שימו לב שהשם של אשכול ה-bootstrap נגזר מהשם של אשכול הניהול, עם הקידומת bootstrap-.
בוחרים את הגרסה של אשכול האדמין.
בשדה Google Cloud API Location (מיקום Google Cloud API), בוחרים את האזור 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
כדי לראות את הגרסאות הזמינות של אשכולות Bare Metal שאפשר להתקין:
הגרסה של
bmctlשאתם מורידים כדי ליצור את סביבת האתחול צריכה להיות זהה לגרסה שתתקינו באשכול האדמין.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 Agent כדי לרשום את האשכולות שלכם ב-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: הפרויקט שאליו אשכול האדמין יירשם באופן אוטומטי אחרי יצירת האשכול. אי אפשר לשנות את פרויקט המארח של ה-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 עבור אשכולות שאינם HA. ערך ברירת המחדל אם--max-pods-per-nodeלא נכלל בפקודה הוא 110. אחרי יצירת האשכול, אי אפשר לעדכן את הערך הזה.גם מספר ה-Pods המקסימלי לכל צומת (שנקרא צפיפות Pods) מוגבל על ידי משאבי ה-IP הזמינים של האשכול. פרטים נוספים זמינים במאמר בנושא רשתות של Pod.
CONTROL_PLANE_VIP: כתובת ה-IP הווירטואלית (VIP) במאזן העומסים של שרת ה-Kubernetes API של האשכול. צריך לכלול את כתובת ה-IP הווירטואלית של מישור הבקרה באותה רשת משנה כמו הצמתים של מאזן העומסים. אל תכללו את כתובת ה-IP הווירטואלית של מישור הבקרה במאגרי הכתובות של מאזן העומסים.
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
לדוגמה, נניח שבדיקת טרום-ההמראה נכשלה כי לא הייתה אפשרות להגיע לצומת של מישור הבקרה. בתחנת העבודה של האדמין יוצג משהו דומה לזה:
[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