בדף הזה מוסבר איך ליצור אשכול משתמש באמצעות מסוף Google Cloud , ה-CLI של gcloud (gcloud CLI) או Terraform.
מה זה 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, כפי שמתואר במאמר יצירת אשכול משתמשים.
אם אתם רוצים להשתמש ב-Terraform, במסוף או ב-CLI של gcloud כדי לנהל את מחזור החיים של אשכולות שנוצרו באמצעות bmctl, קראו את המאמר הגדרת אשכול משתמש לניהול באמצעות GKE On-Prem API.
לפני שמתחילים
בקטע הזה מוסבר איך יוצרים אשכול משתמש באמצעות לקוחות API של GKE On-Prem.
מתן הרשאות IAM
אם אתם לא הבעלים של הפרויקט, צריך להקצות לכם את התפקיד roles/gkeonprem.admin.
כדי לגשת לדפים של Google Kubernetes Engine במסוף, צריך גם את התפקידים הבאים:
אחרי שיוצרים את האשכול, אם אתם לא Project Owner ואתם רוצים להשתמש בשער הקישור כדי להתחבר לאשכול המשתמש באמצעות שורת הפקודה, אתם צריכים את התפקידים הבאים:
roles/gkehub.gatewayAdmin: התפקיד הזה מאפשר גישה ל-Connect Gateway API. אם אתם צריכים רק גישת קריאה לאשכול, מספיק להשתמש ב-
roles/gkehub.gatewayReader.roles/gkehub.viewer: התפקיד הזה מאפשר לאחזר את פרטי הכניסה לאשכול.
איך נותנים גישה לפרויקטים, לתיקיות ולארגונים
ממשקי ה-API הנדרשים של Google
מוודאים שכל ממשקי ה-API הנדרשים של Google מופעלים בפרויקט המארח של הצי.
אם אתם משתמשים ב-CLI של gcloud כדי ליצור את האשכול, אתם צריכים להפעיל את GKE On-Prem API. אם אתם משתמשים במסוף כדי ליצור את האשכול, הוא מפעיל את GKE On-Prem API באופן אוטומטי.
gcloud services enable --project FLEET_HOST_PROJECT_ID \
gkeonprem.googleapis.com
דרישות מוקדמות לאשכול אדמין
כדי ליצור אשכול משתמשים, צריך קודם אשכול אדמין פעיל. אשכול האדמין חייב:
גישה לשרת ה-API של Kubernetes באשכול המשתמש אחרי שהוא נוצר.
חיבור לרשת לכל הצמתים באשכול המשתמש אחרי שהוא נוצר.
חייב להיות רשום בצי. מזהה הפרויקט שמוגדר בשדה
gkeConnect.projectIDשל אשכול האדמין, שנקרא הפרויקט המארח של ה-fleet, חייב להיות אותו פרויקט שבו תיצרו את אשכול המשתמשים.
דרישות מוקדמות למכונות של צומתי אשכולות
בודקים את הדרישות המוקדמות למכונות של צומתי אשכול כדי לוודא שהמכונות שיריצו את אשכול המשתמש עומדות בדרישות המוקדמות.
גישה לשורת פקודה
אחרי שיוצרים את האשכול, אם רוצים להשתמש בשער הקישור כדי להריץ את kubectl באשכול המשתמש במחשבים אחרים, ולא בתחנת העבודה של האדמין, צריך להתקין את הכלים הבאים של שורת הפקודה במחשב שבו רוצים להשתמש.
- הגרסה העדכנית של ה-CLI של gcloud.
-
kubectlלהרצת פקודות באשכולות של Kubernetes. אם אתם צריכים להתקין אתkubectl, תוכלו להיעזר בהוראות האלה.
יצירת אשכול משתמשים
אתם יכולים להשתמש ב-Terraform, במסוף Google Cloud או ב-CLI של gcloud כדי ליצור אשכול שמנוהל על ידי GKE On-Prem API. אם זו הפעם הראשונה שאתם מתקינים את Google Distributed Cloud, יכול להיות שהמסוף יהיה הכלי שהכי קל להשתמש בו.
אחרי שתכירו טוב יותר את המידע שצריך לספק כדי ליצור אשכולות, יכול להיות שיהיה לכם נוח יותר להשתמש ב-Terraform או ב-CLI של gcloud, במיוחד אם אתם מתכננים ליצור יותר מאשכול אחד. Terraform הוא כלי מקובל בתחום של תשתית כקוד. אם הארגון שלכם כבר משתמש ב-Terraform, סביר להניח שתרצו להשתמש בו כדי ליצור אשכולות ולנהל את מחזור החיים של האשכולות.
באמצעות ה-CLI של gcloud, אתם יכולים לשמור את הפקודה עם הארגומנטים שלה בקובץ טקסט ולבצע שינויים לפי הצורך כדי ליצור אשכולות נוספים. אם אתם משתמשים בכלי CI/CD, כמו Cloud Build, אתם יכולים להשתמש בפקודות gcloud כדי ליצור אשכול ומאגר צמתים, ולציין את הדגל --impersonate-service-account כדי להפוך את היצירה לאוטומטית.
המסוף
רוב ההגדרות במסוף תואמות לשדות בקובץ התצורה של האשכול.
נכנסים לדף Create a bare metal cluster במסוף.
בוחרים את הפרויקט ב- Google Cloud שבו רוצים ליצור את האשכול. הפרויקט שנבחר משמש גם כפרויקט המארח של ה-fleet. זה צריך להיות אותו פרויקט שאליו רשום אשכול האדמין. אחרי שיוצרים את אשכול המשתמש, הוא נרשם באופן אוטומטי ל-fleet של הפרויקט שנבחר.
לוחצים על Next כדי להתחיל להגדיר את האשכול.
בקטעים הבאים מוסבר איך להגדיר את אשכול המשתמשים.
מידע בסיסי על אשכולות
מזינים מידע בסיסי על האשכול.
- מזינים שם לאשכול המשתמשים.
בקטע Admin cluster, בוחרים את אשכול האדמין מהרשימה.
בשדה 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 (
בוחרים את הגרסה של אשכול המשתמשים. אשכולות המשתמשים חייבים להיות באותה גרסה משנית כמו אשכול האדמין, או בגרסה משנית אחת נמוכה יותר מאשכול האדמין.
כיוצרי האשכול, אתם מקבלים הרשאות אדמין באשכול. אם רוצים, מזינים בשדה משתמש עם הרשאת אדמין את כתובת האימייל של משתמש אחר שינהל את האשכול.
כשיוצרים את האשכול, GKE On-Prem API מחיל על האשכול את כללי המדיניות של בקרת גישה מבוססת-תפקידים (RBAC) של Kubernetes, כדי להקצות לכם ולמשתמשים אחרים עם הרשאת אדמין את התפקיד
clusterrole/cluster-adminשל Kubernetes, שנותן גישה מלאה לכל משאב באשכול בכל מרחבי השמות.בקטע Node configuration, מציינים את הפרטים הבאים:
Maximum Pods per node: מזינים את המספר המקסימלי של Pods שאפשר להריץ בצומת אחד. הערכים המותרים הם בין
32ל-250, כולל. Kubernetes מקצה בלוק Classless Inter-Domain Routing (CIDR) לכל צומת, כדי שלכל pod תהיה כתובת IP ייחודית. הגודל של בלוק ה-CIDR תואם למספר המקסימלי של Pods לכל צומת. למידע נוסף על הגדרת המספר המקסימלי של Pods לכל צומת, קראו את המאמר רשתות של Pods ושירותים.סביבת זמן ריצה של קונטיינר: containerd היא סביבת זמן הריצה היחידה של קונטיינר שזמינה לאשכול.
לוחצים על Next כדי לעבור לקטע Networking.
Networking
בקטע הזה מציינים את כתובות ה-IP של הצמתים, ה-Pods והשירותים של האשכול. אם אתם משתמשים באיזון עומסים בחבילה עם MetalLB, אתם צריכים להגדיר גם אותו.
בקטע Control plane, מזינים את כתובת ה-IPv4 של כל צומת במישור הבקרה. צמתים של מישור הבקרה מריצים את עומס העבודה של המערכת. בדרך כלל מדובר במכונה אחת אם משתמשים בפריסה מינימלית, או בשלוש מכונות אם משתמשים בפריסה עם זמינות גבוהה (HA). כדי שיהיה קוורום של רוב לזמינות גבוהה, צריך לציין מספר אי-זוגי של צמתים. אפשר לשנות את השדה הזה בכל פעם שמעדכנים או משדרגים אשכול.
לוחצים על + הוספת כתובת IP לפי הצורך כדי להזין עוד כתובות IP.
בקטע Load balancer, בוחרים את מאזן העומסים מהרשימה Mode כדי להגדיר את האשכול. מידע נוסף זמין במאמר סקירה כללית של מאזני עומסים.
כלול ב-MetalLB
הגדרת איזון עומסים באמצעות מאזן העומסים המצורף MetalLB. באפשרות הזו, Google Distributed Cloud פורס מאזני עומסים בשכבה 4 שפועלים במאגר ייעודי של צומתי עובדים או באותם צמתים כמו מישור הבקרה.
בקטע מאגרי צמתים של מאזן עומסים, בוחרים אחת מהאפשרויות הבאות:
Use control plane nodes: בוחרים באפשרות הזו כדי להריץ את מאזני העומסים באותם צמתים של מישור הבקרה.
Create load balancer node pool: בוחרים באפשרות המתקדמת הזו אם צריך להריץ את מאזני העומסים במאגר ייעודי של צמתים עובדים. כל הצמתים במאגר הצמתים של מאזן העומסים חייבים להיות באותה רשת משנה של שכבה 2 כמו כתובות ה-IP הווירטואליות (VIP) של מאזן העומסים, שאותן מגדירים בקטע Load balancer address pools.
בשדה Load balancer node pool IP 1, מזינים כתובת IPv4 של צומת במאגר הצמתים של מאזן העומסים.
לוחצים על + Add IP address כדי להוסיף עוד כתובות IP.
בקטע Load balancer address pools, מוסיפים מאגר כתובות אחד או יותר לבקר MetalLB כדי לבחור מתוכו ולהקצות לשירותים מסוג
LoadBalancer. כתובת ה-VIP של תעבורת הנתונים הנכנסת, שמציינים בקטע Virtual IPs, חייבת להיות באחד מהמאגרים האלה.מזינים שם למאגר הכתובות.
מזינים טווח של כתובות IP בסימון CIDR (לדוגמה: 192.0.2.0/26) או בסימון טווח (לדוגמה: 192.0.2.64-192.0.2.72). כדי לציין כתובת IP אחת במאגר, משתמשים ב-/32 בסימון CIDR (לדוגמה: 192.0.2.1/32).
אם כתובת ה-VIP של ה-Ingress לא נמצאת בטווח הכתובות, לוחצים על + Add IP Address Range ומזינים טווח כתובות אחר שכולל את כתובת ה-VIP של ה-Ingress.
כתובות ה-IP בכל מאגר לא יכולות לחפוף, והן חייבות להיות באותה רשת משנה כמו הצמתים באשכול.
בקטע הקצאת כתובות IP, בוחרים אחת מהאפשרויות הבאות:
- אוטומטי: בוחרים באפשרות הזו אם רוצים שהבקר של MetalLB יקצה באופן אוטומטי כתובות IP ממאגר הכתובות לשירותים מסוג
LoadBalancer. - ידני: בוחרים באפשרות הזו אם רוצים להשתמש בכתובות מהמאגר כדי לציין ידנית כתובות לשירותים מסוג
LoadBalancer.
- אוטומטי: בוחרים באפשרות הזו אם רוצים שהבקר של MetalLB יקצה באופן אוטומטי כתובות IP ממאגר הכתובות לשירותים מסוג
לוחצים על Avoid buggy IP addresses אם רוצים שבבקר MetalLB לא ייעשה שימוש בכתובות IP מהמאגר שמסתיימות ב- .0 או ב- .255. כך אפשר להימנע מהבעיה שבה מכשירים של צרכנים עם באגים משמיטים בטעות תעבורת נתונים שנשלחת לכתובות ה-IP המיוחדות האלה.
כשמסיימים, לוחצים על סיום.
אם צריך, לוחצים על Add Address Pool.
מאזן עומסים ידני
באיזון עומסים ידני, אתם מגדירים פתרונות משלכם לאיזון עומסים לתנועה במישור הבקרה ובמישור הנתונים. לפני שיוצרים אשכול, צריך להגדיר את כתובת ה-VIP של מישור הבקרה במאזן העומסים החיצוני. אפשר להשתמש במאזן העומסים החיצוני של מישור הבקרה גם לתנועה במישור הנתונים, או להגדיר מאזן עומסים נפרד למישור הנתונים. מידע נוסף זמין במאמר הגדרה של איזון עומסים ידני.
בקטע Virtual IPs, מזינים את הפרטים הבאים:
כתובת ה-VIP של מישור הבקרה: כתובת ה-IP של היעד שאליה תישלח תעבורת הנתונים לשרת ה-API של Kubernetes באשכול המשתמש. כתובת ה-VIP של מישור הבקרה צריכה להיות באותה רשת משנה כמו הצמתים של מאזן העומסים, ולא יכולה להיות באף אחד מטווחי הכתובות שמשמשים למאגרי הכתובות של מאזן העומסים.
Port: יציאת היעד שמשמשת לתעבורת הנתונים שנשלחת לשרת ה-API של Kubernetes. ברירת המחדל היא 443.
Ingress VIP: כתובת ה-IP שצריך להגדיר במאזן העומסים בשביל שרת ה-proxy של Ingress. מזינים כתובת מאחד ממאגרי הכתובות של מאזן העומסים.
בקטע Service and Pod CIDRs, מציינים את טווחי כתובות ה-IP של שירות Kubernetes ו-Pod בסימון CIDR. הם לא יכולים לחפוף אחד לשני, או לכל כתובת מחוץ לאשכול שרוצים להגיע אליה מתוך האשכול. מומלץ להשתמש בטווחי כתובות ה-IP הפרטיות שמוגדרים ב-RFC 1918. במסוף מוצגים טווחי הכתובות הבאים כברירת מחדל, אבל אפשר לשנות אותם:
Service CIDR:
10.96.0.0/20אם אתם לא מקבלים את ברירת המחדל, הזינו טווח CIDR בין /24 ל-/12, כאשר /12 מספק את המספר הגדול ביותר של כתובות IP.Pod CIDR:
192.168.0.0/16אם אתם לא מקבלים את ברירת המחדל, הזינו טווח CIDR בין /18 ל-/8, כאשר /8 מספק את המספר הגדול ביותר של כתובות IP.
בקטע Advanced attributes, אפשר לציין את הפרטים הבאים:
כתובת ה-URL של שרת ה-Proxy: כתובת ה-HTTP של שרת ה-Proxy. צריך לכלול את מספר היציאה גם אם הוא זהה ליציאת ברירת המחדל של הסכימה, לדוגמה:
http://my-proxy.example.local:80כתובות URL: רשימה מופרדת בפסיקים של כתובות IP, טווחי כתובות IP, שמות מארחים ושמות דומיינים שלא צריכים לעבור דרך שרת ה-Proxy. כש-Google Distributed Cloud שולח בקשה לאחת מהכתובות, המארחים או הדומיינים האלה, הבקשה נשלחת ישירות.
לוחצים על הבא.
אחסון
תוכנת Distributed Cloud מספקת רק ממשקים לאחסון בלוקים וקבצים. יש להם אפשרויות שמוגדרות כברירת מחדל, אבל אפשר להתאים אישית את ההגדרות האישיות. מידע נוסף זמין במאמר הגדרת אחסון מקומי.
אפשר גם להגדיר את האפשרויות הבאות:
Local volume provisioner node mounts: הגדרת
PersistentVolumes(PVs) מקומיים שמגובים בדיסקים שנטענו. צריך לפרמט ולטעון את הדיסקים האלה, ואפשר לעשות את זה לפני או אחרי שיוצרים את האשכול.Local volume provisioner share: מציין את ההגדרה של
PersistentVolumesמקומי שמגובה על ידי ספריות משנה במערכת קבצים משותפת. ספריות המשנה האלה נוצרות באופן אוטומטי במהלך יצירת האשכול.
לוחצים על הבא.
תכונות
כדי לעזור לכם לעקוב אחרי האשכול, לפתור בו בעיות ולהפעיל אותו, האפשרויות הבאות מופעלות באופן אוטומטי ואי אפשר להשבית אותן:
- Cloud Logging של שירותי המערכת
- מעקב בענן אחרי שירותי המערכת
- יומן הביקורת Admin Activity
יצירת מאגר צמתים במסוף
באשכול חייב להיות לפחות מאגר צמתים אחד עבור צומתי עובדים. מאגר צמתים הוא תבנית לקבוצות של צומתי עובדים שנוצרו באשכול הזה.
במסוף, מגדירים לפחות מאגר צמתים אחד (או מאשרים את ערכי ברירת המחדל) ואז יוצרים את האשכול. אחרי שיוצרים את האשכול, אפשר להוסיף עוד מאגרי צמתים. ב-CLI של gcloud, קודם יוצרים את האשכול ואז מוסיפים מאגר צמתים אחד או יותר לאשכול החדש שנוצר.
בסרגל הניווט הימני, לוחצים על default pool.
בקטע Node pool defaults, מזינים את השם של מאגר הצמתים בשדה Node pool name או משאירים את השם default-pool.
בקטע צומתי עובד, מזינים את כתובות ה-IP של המכונות שהאשכול יפעל בהן.
בקטע מטא-נתונים של מאגר צמתים (אופציונלי), אם רוצים להוסיף תוויות ודחיות (taints) של Kubernetes:
- לוחצים על + Add Kubernetes Labels. מזינים את Key ו-Value של התווית. חוזרים לפי הצורך.
- לוחצים על + Add Taint. מזינים את הערכים של Key, Value ו-Effect של הטולרנטיות. חוזרים לפי הצורך.
לוחצים על Verify and Complete כדי ליצור את אשכול המשתמשים. יצירת אשכול המשתמשים נמשכת 15 דקות או יותר. במסוף מוצגות הודעות סטטוס בזמן אימות ההגדרות ויצירת האשכול במרכז הנתונים.
אם יש בעיה בהגדרה, במסוף תוצג הודעת שגיאה שאמורה להיות ברורה מספיק כדי שתוכלו לתקן את הבעיה בהגדרה ולנסות שוב ליצור את האשכול.
CLI של gcloud
כדי ליצור אשכול משתמש, משתמשים בפקודה הבאה:
gcloud container bare-metal clusters create
אחרי שיוצרים את האשכול, צריך ליצור לפחות מאגר צמתים אחד באמצעות הפקודה הבאה:
gcloud container bare-metal node-pools create
רוב הדגלים ליצירת האשכול ומאגר הצמתים תואמים לשדות בקובץ התצורה של אשכול המשתמש. כדי להתחיל, אתם יכולים לבדוק את הפקודה המלאה בקטע דוגמאות. מידע על הדגלים מופיע בקטעים שאחרי הדוגמאות, או במדריך העזר ל-CLI של gcloud.
לפני שמתחילים
הגרסה שבוחרים כשיוצרים אשכול משתמשים חייבת להיות גרסה שנתמכת באשכול האדמין. בנוסף, גרסאות התיקון או הגרסאות המשניות האחרונות לא זמינות ב-GKE On-Prem API עד 7 עד 14 ימים אחרי ההשקה. אתם יכולים להריץ פקודת gcloud כדי לקבל רשימה של גרסאות אשכולות נתמכות שאפשר להתקין.
חשוב לעדכן את הרכיבים:
gcloud components update
מאתרים את השם ואת מיקום החברות ב-Fleet של אשכול האדמין:
gcloud container fleet memberships list \ --project=FLEET_HOST_PROJECT_ID
מחליפים את
FLEET_HOST_PROJECT_IDבמזהה הפרויקט שאליו רשום אשכול האדמין.הפלט אמור להיראות כך:
NAME EXTERNAL_ID LOCATION admin-cluster-1 bb7803b4-8438-4b22-859f-4559b4b29072 global admin-cluster-2 ee16ee2b-6ec0-49fc-9413-3c89cbc70854 global admin-cluster-3 fc2b7ef5-39ff-4b63-b919-04c5adc67be4 us-west1
המיקום מציין איפה פועלים שירותי Fleet ו-Connect. אשכולות אדמין שנוצרו לפני גרסה 1.28 מנוהלים על ידי שירותי Fleet ו-Connect הגלובליים. בגרסה 1.28 ואילך, אפשר לציין
globalאו אזור ב- Google Cloud כשיוצרים את אשכול האדמין. בדוגמאות לפקודות שבהמשך, מציינים את האזור בדגל--admin-cluster-membership-location.מציגים רשימה של הגרסאות שאפשר להתקין באשכול המשתמש:
gcloud container bare-metal clusters query-version-config \ --admin-cluster-membership=ADMIN_CLUSTER_NAME \ --admin-cluster-membership-project=FLEET_HOST_PROJECT_ID \ --admin-cluster-membership-location=ADMIN_CLUSTER_REGION \ --location=REGION
מחליפים את מה שכתוב בשדות הבאים:
ADMIN_CLUSTER_NAME: השם של אשכול האדמין.
FLEET_HOST_PROJECT_ID: מזהה הפרויקט שאליו רשום אשכול האדמין.
ADMIN_CLUSTER_REGION: האזור של אשכול הניהול ב-Fleet. הערך יכול להיות גלובלי או אזור ב- Google Cloud. משתמשים במיקום של אשכול האדמין מהפלט שלgcloud container fleet memberships list.
REGION: האזור ( Google Cloud ) שבו תשתמשו כשתצרו את האשכול. זה האזור שבו פועלים GKE On-Prem API והשירותים Fleet ו-Connect. מציינים אתus-west1או אזור נתמך אחר.
הפלט של הפקודה אמור להיראות כך:
versions: - version: 1.16.2 - version: 1.16.1 - version: 1.16.0 - version: 1.15.7 - version: 1.15.6 - version: 1.15.5
כדי ליהנות מהתיקונים והשיפורים האחרונים, מומלץ להשתמש בגרסה העדכנית ביותר שנתמכת.
דוגמאות
בקטע הזה מופיעה דוגמה לפקודה שיוצרת אשכול באמצעות מאזן העומסים MetalLB, ודוגמה לשימוש במאזן עומסים ידני. המידע שצריך לציין משתנה בהתאם לסוג מאזן העומסים שבו משתמשים. למידע נוסף, ראו סקירה כללית של מאזני עומסים.
בדוגמאות האלה נוצר אשכול בלי מאגרי צמתים. אחרי שהאשכול פועל, צריך להוסיף מאגר צמתים לפני פריסת עומסי העבודה.
MetalLB
בדוגמה הזו מוסבר איך ליצור אשכול משתמש עם מאזן העומסים המצורף MetalLB.
gcloud container bare-metal clusters create USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --admin-cluster-membership=ADMIN_CLUSTER_NAME \ --admin-cluster-membership-project=FLEET_HOST_PROJECT_ID \ --admin-cluster-membership-location=ADMIN_CLUSTER_REGION \ --location=REGION \ --version=VERSION \ --admin-users=YOUR_EMAIL_ADDRESS \ --admin-users=ANOTHER_EMAIL_ADDRESS \ --metal-lb-address-pools='pool=NAME,avoid-buggy-ips=True|False,manual-assign=True|False,addresses=IP_ADDRESS_RANGE_1;IP_ADDRESS_RANGE_2;...' \ --control-plane-node-configs='node-ip=CP_IP_ADDRESS_1,labels=CP_KEY_1.1=CP_VALUE_1.1;CP_KEY_1.2=CP_VALUE_1.2;...' \ --control-plane-vip=CONTROL_PLANE_VIP \ --control-plane-load-balancer-port=CONTROL_PLANE_LB_PORT \ --ingress-vip=INGRESS_VIP \ --island-mode-service-address-cidr-blocks=SERVICE_CIDR_BLOCK \ --island-mode-pod-address-cidr-blocks=POD_CIDR_BLOCK \ --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
מחליפים את מה שכתוב בשדות הבאים:
-
USER_CLUSTER_NAME: השם שבחרתם לאשכול המשתמש. אי אפשר לשנות את השם אחרי שיוצרים את האשכול. השם צריך:- לכלול עד 40 תווים
- להכיל רק תווים אלפאנומריים באותיות קטנות או מקף (
-) - להתחיל באות
- להסתיים בתו אלפאנומרי
-
FLEET_HOST_PROJECT_ID: מזהה הפרויקט שבו רוצים ליצור את האשכול. הפרויקט שצוין משמש גם כפרויקט המארח של ה-fleet. זה צריך להיות אותו פרויקט שאליו רשום אשכול האדמין. אחרי שיוצרים את אשכול המשתמש, הוא נרשם באופן אוטומטי ל-fleet של הפרויקט שנבחר. אי אפשר לשנות את הפרויקט המארח של ה-fleet אחרי שיוצרים את האשכול. -
ADMIN_CLUSTER_NAME: השם של אשכול האדמין שמנהל את אשכול המשתמש. בדגל--admin-cluster-membership, אפשר להשתמש בשם המלא של האשכול, בפורמט הבא:projects/FLEET_HOST_PROJECT_ID/locations/ADMIN_CLUSTER_REGION/memberships/ADMIN_CLUSTER_NAMEלחלופין, אפשר להגדיר את
--admin-cluster-membershipלשם של אשכול האדמין, כמו בפקודה לדוגמה. כשמשתמשים רק בשם של אשכול האדמין, צריך להגדיר את מזהה הפרויקט של אשכול האדמין באמצעות--admin-cluster-membership-projectואת המיקום באמצעות--admin-cluster-membership-location. המיקום של אשכול האדמין הואglobalאו אזור Google Cloud . אם אתם צריכים למצוא את האזור, הריצו את הפקודהgcloud container fleet memberships list. -
REGION: האזור ב- Google Cloud שבו פועלים GKE On-Prem API (gkeonprem.googleapis.com), שירות Fleet (gkehub.googleapis.com) ושירות Connect (gkeconnect.googleapis.com). צריך לציין אתus-west1או אזור נתמך אחר. אי אפשר לשנות את האזור אחרי שיוצרים את האשכול. ההגדרה הזו מציינת את האזור שבו מאוחסנים הפריטים הבאים:- המטא-נתונים של אשכול המשתמשים שנדרשים ל-GKE On-Prem API כדי לנהל את מחזור החיים של האשכול.
- נתוני Cloud Logging ו-Cloud Monitoring של רכיבי המערכת
- יומן הביקורת של האדמין שנוצר על ידי יומני הביקורת של Cloud
שם האשכול, הפרויקט והמיקום מזהים באופן ייחודי את האשכול ב- Google Cloud.
-
VERSION: הגרסה של Google Distributed Cloud באשכול המשתמשים. -
YOUR_EMAIL_ADDRESSו-ANOTHER_EMAIL_ADDRESS: אם לא תכללו את הדגל--admin-users, כיוצרי האשכול תקבלו כברירת מחדל הרשאות אדמין באשכול. אבל אם אתם כוללים את--admin-usersכדי להגדיר משתמש אחר כאדמין, אתם מבטלים את ברירת המחדל וצריכים לכלול גם את כתובת האימייל שלכם וגם את כתובת האימייל של האדמין האחר. לדוגמה, כדי להוסיף שני אדמינים:--admin-users=sara@example.com \ --admin-users=amal@example.comאחרי שהאשכול נוצר, GKE On-Prem API מחיל את מדיניות בקרת הגישה מבוססת-התפקידים (RBAC) של Kubernetes על האשכול, כדי להקצות לכם ולמשתמשים אחרים עם הרשאת אדמין את התפקיד
clusterrole/cluster-adminשל Kubernetes, שנותן גישה מלאה לכל משאב באשכול בכל מרחבי השמות.
מאגרי כתובות של MetalLB
-
--metal-lb-address-pools: מציינים את ההגדרות של מאגרי הכתובות שבהם ישתמש מאזן העומסים MetalLB. הערך של הדגל הוא בפורמט הבא:
'pool=NAME,avoid-buggy-ips=True|False,manual-assign=True|False,addresses=IP_ADDRESS_RANGE_1;IP_ADDRESS_RANGE_2;...' \
הערך מכיל פלחים שמתחילים במילות המפתח pool, avoid-buggy-ip, manual-assign ו-addresses. מפרידים בין הפלחים באמצעות פסיקים.
pool: שם המאגר שבחרתם.
avoid-buggy-ips: אם מגדירים את הערךTrue, בקר MetalLB לא מקצה לשירותים כתובות IP שמסתיימות ב- .0 או ב- .255. כך נמנעת הבעיה של מכשירים צרכניים עם באגים, שעלולים להפיל בטעות תנועה שנשלחת לכתובות ה-IP המיוחדות האלה. אם לא מציינים ערך, ברירת המחדל היאFalse.
manual-assign: אם אתם לא רוצים שבקר MetalLB יקצה באופן אוטומטי כתובות IP מהמאגר הזה לשירותים, הגדירו את הערךTrue. לאחר מכן, מפתח יכול ליצור שירות מסוגLoadBalancerולציין באופן ידני את אחת מהכתובות במאגר. אם לא מציינים ערך,manual-assignמוגדר כ-False.ברשימה של
addresses: כל כתובת צריכה להיות טווח בפורמט CIDR או בפורמט של טווח עם מקפים. כדי לציין כתובת IP אחת במאגר (למשל, ל-VIP של הכניסה), משתמשים ב-/32 בסימון CIDR (למשל, 192.0.2.1/32).
שימו לב לכללי התחביר הבאים:
- תוחמים את הערך כולו במירכאות בודדות.
- אי אפשר להשתמש ברווח לבן.
- מפרידים בין טווחי כתובות ה-IP באמצעות נקודה-פסיק.
אפשר לציין יותר ממופע אחד של הדגל, כמו בדוגמה הבאה:
--metal-lb-address-pools='pool=pool1,avoid-buggy-ips=False,manual-assign=True,addresses=192.0.2.0/26;192.0.2.64-192.0.2.72' --metal-lb-address-pools='pool=pool2,avoid-buggy-ips=True,manual-assign=True,addresses=10.251.133.0/24;10.251.134.80/32'
צומתי MetalLB
אופציונלי:
--metal-lb-load-balancer-node-configs: כברירת מחדל, מאזן העומסים פועל באותם צמתים כמו מישור הבקרה. אם אתם צריכים להריץ את מאזן העומסים במאגר ייעודי של צומתי עובדים, ציינו את הדגל הזה לכל צומת. כל הצמתים במאגר הצמתים של מאזן העומסים צריכים להיות באותה רשת משנה של שכבה 2 כמו כתובות ה-IP הווירטואליות (VIP) של מאזן העומסים.הערך של הדגל הוא בפורמט הבא:
'node-ip=LB_IP_ADDRESS_1,labels=LB_KEY_1.1=LB_VALUE_1.1;LB_KEY_1.2=LB_VALUE_1.2;...' \
הערך מכיל פלחים שמתחילים במילות המפתח
node-ipו-labels. מפרידים בין הפלחים באמצעות פסיקים.
node-ip: כתובת ה-IP של צומת במאגר הצמתים של מאזן העומסים. אפשר לציין רקnode-ipאחד לכל דגל. אם צריך לציין יותר מצומת אחד, מוסיפים את הדגל שוב לכל צומת.
labels: צמד אחד או יותר של מפתח=ערך שמצורפים לצומת.
שימו לב לכללי התחביר הבאים:
- תוחמים את הערך כולו במירכאות בודדות.
- אי אפשר להשתמש ברווח לבן.
- מפרידים בין כל צמד של מפתח=ערך בקטע
labelsבאמצעות נקודה-פסיק.
אם מציינים את
--metal-lb-load-balancer-node-configs, אפשר לכלול את הדגלים הבאים:
--metal-lb-load-balancer-node-labels: משתמשים בדגל הזה כדי להוסיף תוויות לכל הצמתים במאגר הצמתים של מאזן העומסים. מפרידים בין צמדי המפתח=ערך באמצעות פסיק.--metal-lb-load-balancer-node-labels=KEY_1=VALUE_1,KEY_2=VALUE_2
--metal-lb-load-balancer-node-taints: משתמשים בדגל הזה כדי להוסיף taints לכל הצמתים במאגר הצמתים של מאזן העומסים. כל taint הוא צמד של key=value שמשויך להשפעה, שיכולה להיות אחת מהאפשרויות הבאות:PreferNoSchedule,NoScheduleאוNoExecute.--metal-lb-load-balancer-node-taints=KEY_1=VALUE_1:EFFECT_1,KEY_2=VALUE_2:EFFECT_2
בדוגמה הבאה מוסיפים שלושה צמתים למאגר הצמתים של מאזן העומסים. כל הצמתים מסומנים בתווית
lb-pool-key=lb-pool-valueויש להם את ה-taintdedicated=experimental:PreferNoSchedule,--metal-lb-load-balancer-node-configs='node-ip=192.0.2.1' \ --metal-lb-load-balancer-node-configs='node-ip=192.0.2.2,labels=key2.1=value2.1' \ --metal-lb-load-balancer-node-configs='node-ip=192.0.2.3,labels=key3.1=value3.1;key3.2=value3.2' \ --metal-lb-load-balancer-node-labels=lb-pool-key=lb-pool-value \ --metal-lb-load-balancer-node-taints=dedicated=experimental:PreferNoSchedule \
צומתי מישור הבקרה
-
--control-plane-node-configs: כתובת ה-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-labels: משתמשים בדגל הזה כדי להוסיף תוויות לכל הצמתים של מישור הבקרה. צריך להפריד בין צמדי מפתח=ערך באמצעות פסיק.--control-plane-node-labels=KEY_1=VALUE_1,KEY_2=VALUE_2
-
--control-plane-node-taints: משתמשים בדגל הזה כדי להוסיף taints לכל הצמתים במישור הבקרה. כל taint הוא צמד של key=value שמשויך להשפעה, שיכולה להיות אחת מהאפשרויות הבאות:PreferNoSchedule,NoScheduleאוNoExecute.בדוגמה הבאה מוסיפים שלושה צמתים לצומתי מישור הבקרה. כל הצמתים מסומנים בתווית
cp-node-pool-key=cp-node-pool-valueויש להם את הטיינטdedicated=experimental:PreferNoSchedule.--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-planer-node-configs='node-ip=192.0.2.3,labels=key3.1=value3.1;key3.2=value3.2' \ --control-plane-node-labels=cp-node-pool-key=cp-node-pool-value \ --control-plane-node-taints=dedicated=experimental:PreferNoSchedule \
כתובות IP וירטואליות
-
CONTROL_PLANE_VIP: כתובת ה-IP שבחרתם להגדיר במאזן העומסים לשרת ה-API של Kubernetes באשכול המשתמש.לדוגמה:
--control-plane-vip=203.0.113.3 -
CONTROL_PLANE_LB_PORT: היציאה שבה מאזן העומסים משרת את שרת ה-API של Kubernetes.לדוגמה:
-control-plane-load-balancer-port=443 -
INGRESS_VIP: כתובת ה-IP שבחרתם להגדיר במאזן העומסים בשביל שרת ה-proxy של תעבורת הנתונים הנכנסת.לדוגמה:
--ingress-vip=10.251.134.80כתובת ה-IP של ה-VIP של הכניסה חייבת להיות באחד ממאגרי הכתובות של MetalLB.
CIDR של שירות ו-Pod
-
SERVICE_CIDR_BLOCK: טווח של כתובות IP בפורמט CIDR, שישמשו לשירותים באשכול. טווח ה-CIDR חייב להיות בין /24 ל-/12, כאשר /12 מספק את מספר כתובות ה-IP הגדול ביותר.לדוגמה:
--island-mode-service-address-cidr-blocks=10.96.0.0/20 -
POD_CIDR_BLOCK: טווח של כתובות IP בפורמט CIDR, שישמשו לפודים באשכול. טווח ה-CIDR חייב להיות בין /18 ל-/8, כאשר /8 מספק את המספר הגדול ביותר של כתובות IP.לדוגמה:
--island-mode-pod-address-cidr-blocks=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: סוג האחסון שבו נוצרים אמצעי האחסון הקבועים במהלך יצירת האשכול.
מידע נוסף על אחסון זמין במאמר הגדרת אחסון מקומי.
גלילה ידנית
באיזון עומסים ידני, אתם מגדירים פתרונות משלכם לאיזון עומסים לתנועה במישור הבקרה ובמישור הנתונים. לפני שיוצרים אשכול, צריך להגדיר את כתובת ה-VIP של מישור הבקרה במאזן העומסים החיצוני. אפשר להשתמש במאזן העומסים החיצוני של מישור הבקרה גם לתנועה במישור הנתונים, או להגדיר מאזן עומסים נפרד למישור הנתונים. מידע נוסף זמין במאמר הגדרה של איזון עומסים ידני.
חשוב לגלול אם צריך כדי למלא את הפלייסהולדר ADMIN_CLUSTER_NAME של הדגל --admin-cluster-membership.
gcloud container bare-metal clusters create USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --admin-cluster-membership=ADMIN_CLUSTER_NAME \ --admin-cluster-membership-project=FLEET_HOST_PROJECT_ID \ --admin-cluster-membership-location=ADMIN_CLUSTER_REGION \ --location=REGION \ --version=VERSION \ --admin-users=YOUR_EMAIL_ADDRESS \ --admin-users=ANOTHER_EMAIL_ADDRESS \ --enable-manual-lb \ --control-plane-node-configs='node-ip=CP_IP_ADDRESS_1,labels=CP_KEY_1.1=CP_VALUE_1.1;CP_KEY_1.2=CP_VALUE_1.2;...' \ --control-plane-vip=CONTROL_PLANE_VIP \ --control-plane-load-balancer-port=CONTROL_PLANE_LB_PORT \ --ingress-vip=INGRESS_VIP \ --island-mode-service-address-cidr-blocks=SERVICE_CIDR_BLOCK \ --island-mode-pod-address-cidr-blocks=POD_CIDR_BLOCK \ --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
מחליפים את מה שכתוב בשדות הבאים:
-
USER_CLUSTER_NAME: השם שבחרתם לאשכול המשתמש. אי אפשר לשנות את השם אחרי שיוצרים את האשכול. השם צריך:- לכלול עד 40 תווים
- להכיל רק תווים אלפאנומריים באותיות קטנות או מקף (
-) - להתחיל באות
- להסתיים בתו אלפאנומרי
-
FLEET_HOST_PROJECT_ID: מזהה הפרויקט שבו רוצים ליצור את האשכול. הפרויקט שצוין משמש גם כפרויקט המארח של ה-fleet. זה צריך להיות אותו פרויקט שאליו רשום אשכול האדמין. אחרי שיוצרים את אשכול המשתמש, הוא נרשם באופן אוטומטי ל-fleet של הפרויקט שנבחר. אי אפשר לשנות את הפרויקט המארח של ה-fleet אחרי שיוצרים את האשכול. -
ADMIN_CLUSTER_NAME: השם של אשכול האדמין שמנהל את אשכול המשתמש. בדגל--admin-cluster-membership, אפשר להשתמש בשם המלא של האשכול, בפורמט הבא:projects/FLEET_HOST_PROJECT_ID/locations/ADMIN_CLUSTER_REGION/memberships/ADMIN_CLUSTER_NAMEלחלופין, אפשר להגדיר את
--admin-cluster-membershipלשם של אשכול האדמין, כמו בפקודה לדוגמה. כשמשתמשים רק בשם של אשכול האדמין, צריך להגדיר את מזהה הפרויקט של אשכול האדמין באמצעות--admin-cluster-membership-projectואת המיקום באמצעות--admin-cluster-membership-location. המיקום של אשכול האדמין הואglobalאו אזור Google Cloud . אם אתם צריכים למצוא את האזור, הריצו את הפקודהgcloud container fleet memberships list. -
REGION: האזור ב- Google Cloud שבו פועלים GKE On-Prem API (gkeonprem.googleapis.com), שירות Fleet (gkehub.googleapis.com) ושירות Connect (gkeconnect.googleapis.com). צריך לציין אתus-west1או אזור נתמך אחר. אי אפשר לשנות את האזור אחרי שיוצרים את האשכול. ההגדרה הזו מציינת את האזור שבו מאוחסנים הפריטים הבאים:- המטא-נתונים של אשכול המשתמשים שנדרשים ל-GKE On-Prem API כדי לנהל את מחזור החיים של האשכול.
- נתוני Cloud Logging ו-Cloud Monitoring של רכיבי המערכת
- יומן הביקורת של האדמין שנוצר על ידי יומני הביקורת של Cloud
שם האשכול, הפרויקט והמיקום מזהים באופן ייחודי את האשכול ב- Google Cloud.
-
VERSION: הגרסה של Google Distributed Cloud באשכול המשתמשים. -
YOUR_EMAIL_ADDRESSו-ANOTHER_EMAIL_ADDRESS: אם לא תכללו את הדגל--admin-users, כיוצרי האשכול תקבלו כברירת מחדל הרשאות אדמין באשכול. אבל אם אתם כוללים את--admin-usersכדי להגדיר משתמש אחר כאדמין, אתם מבטלים את ברירת המחדל וצריכים לכלול גם את כתובת האימייל שלכם וגם את כתובת האימייל של האדמין האחר. לדוגמה, כדי להוסיף שני אדמינים:--admin-users=sara@example.com \ --admin-users=amal@example.comאחרי שהאשכול נוצר, GKE On-Prem API מחיל את מדיניות בקרת הגישה מבוססת-התפקידים (RBAC) של Kubernetes על האשכול, כדי להקצות לכם ולמשתמשים אחרים עם הרשאת אדמין את התפקיד
clusterrole/cluster-adminשל Kubernetes, שנותן גישה מלאה לכל משאב באשכול בכל מרחבי השמות.
צומתי מישור הבקרה
-
--control-plane-node-configs: כתובת ה-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-labels: משתמשים בדגל הזה כדי להוסיף תוויות לכל הצמתים של מישור הבקרה. צריך להפריד בין צמדי מפתח=ערך באמצעות פסיק.--control-plane-node-labels=KEY_1=VALUE_1,KEY_2=VALUE_2
-
--control-plane-node-taints: משתמשים בדגל הזה כדי להוסיף taints לכל הצמתים במישור הבקרה. כל taint הוא צמד של key=value שמשויך להשפעה, שיכולה להיות אחת מהאפשרויות הבאות:PreferNoSchedule,NoScheduleאוNoExecute.בדוגמה הבאה מוסיפים שלושה צמתים לצומתי מישור הבקרה. כל הצמתים מסומנים בתווית
cp-node-pool-key=cp-node-pool-valueויש להם את הטיינטdedicated=experimental:PreferNoSchedule.--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-planer-node-configs='node-ip=192.0.2.3,labels=key3.1=value3.1;key3.2=value3.2' \ --control-plane-node-labels=cp-node-pool-key=cp-node-pool-value \ --control-plane-node-taints=dedicated=experimental:PreferNoSchedule \
כתובות IP וירטואליות
-
CONTROL_PLANE_VIP: כתובת ה-IP שבחרתם להגדיר במאזן העומסים לשרת ה-API של Kubernetes באשכול המשתמש.לדוגמה:
--control-plane-vip=203.0.113.3 -
CONTROL_PLANE_LB_PORT: היציאה שבה מאזן העומסים משרת את שרת ה-API של Kubernetes.לדוגמה:
-control-plane-load-balancer-port=443 -
INGRESS_VIP: כתובת ה-IP שבחרתם להגדיר במאזן העומסים בשביל שרת ה-proxy של תעבורת הנתונים הנכנסת.לדוגמה:
--ingress-vip=10.251.134.80כתובת ה-IP של ה-VIP של הכניסה חייבת להיות באחד ממאגרי הכתובות של MetalLB.
CIDR של שירות ו-Pod
-
SERVICE_CIDR_BLOCK: טווח של כתובות IP בפורמט CIDR, שישמשו לשירותים באשכול. טווח ה-CIDR חייב להיות בין /24 ל-/12, כאשר /12 מספק את מספר כתובות ה-IP הגדול ביותר.לדוגמה:
--island-mode-service-address-cidr-blocks=10.96.0.0/20 -
POD_CIDR_BLOCK: טווח של כתובות IP בפורמט CIDR, שישמשו לפודים באשכול. טווח ה-CIDR חייב להיות בין /18 ל-/8, כאשר /8 מספק את המספר הגדול ביותר של כתובות IP.לדוגמה:
--island-mode-pod-address-cidr-blocks=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: סוג האחסון שבו נוצרים אמצעי האחסון הקבועים במהלך יצירת האשכול.
מידע נוסף על אחסון זמין במאמר הגדרת אחסון מקומי.
לפני שמריצים את הפקודה gcloud כדי ליצור את האשכול, כדאי לכלול את --validate-only כדי לאמת את ההגדרות שציינתם בדגלים של הפקודה 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
יצירת אשכול המשתמשים נמשכת 15 דקות או יותר. אפשר לראות את אשכול ה-GKE בדף GKE clusters במסוף Google Cloud .
רשימה מלאה של הדגלים והתיאורים שלהם מופיעה בחומר העזר של ה-CLI של gcloud.
יצירת מאגר צמתים
אחרי שיוצרים את האשכול, צריך ליצור לפחות מאגר צמתים אחד לפני שפורסים עומסי עבודה. מאגר צמתים הוא תבנית לקבוצות של צומתי עובדים שנוצרו באשכול הזה. ב-CLI של gcloud, קודם יוצרים את האשכול ואז מוסיפים מאגר צמתים אחד או יותר לאשכול החדש שנוצר.
gcloud container bare-metal node-pools create NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=REGION \ --node-configs='node-ip=NP_IP_ADDRESS_1,labels=NP_KEY_1.1=NP_VALUE_1.1;NP_KEY_1.2=NP_VALUE_1.2;...'
מחליפים את מה שכתוב בשדות הבאים:
NODE_POOL_NAME: שם לבחירתכם למאגר הצמתים. השם צריך:- לכלול עד 40 תווים
- להכיל רק תווים אלפאנומריים באותיות קטנות או מקף (
-) - להתחיל באות
- להסתיים בתו אלפאנומרי
USER_CLUSTER_NAME: השם של אשכול המשתמש החדש שנוצר.
FLEET_HOST_PROJECT_ID: מזהה הפרויקט שהאשכול רשום בו.
REGION: האזור של Google Cloud שציינתם כשיצרתם את האשכול.
--node-configs: כתובת ה-IPv4 של מכונת צומת עובד. צריך לציין את הדגל הזה לכל צומת. הערך של הדגל הוא בפורמט הבא:'node-ip=NP_IP_ADDRESS_1,labels=NP_KEY_1.1=NP_VALUE_1.1;NP_KEY_1.2=NP_VALUE_1.2;...' \
הערך מכיל פלחים שמתחילים במילות המפתח
node-ipו-labels. מפרידים בין הפלחים באמצעות פסיקים.
node-ip: כתובת ה-IP של צומת עובד. אפשר לציין רקnode-ipאחד לכל דגל. מוסיפים את הדגל הזה שוב לכל צומת במאגר הצמתים.
labels: צמד אחד או יותר של מפתח=ערך שמצורפים לצומת.
שימו לב לכללי התחביר הבאים:
- תוחמים את הערך כולו במירכאות בודדות.
- אי אפשר להשתמש ברווח לבן.
- מפרידים בין כל צמד של מפתח=ערך בקטע
labelsבאמצעות נקודה-פסיק.
אפשר גם לציין את הפרטים הבאים:
--node-labels=KEY=VALUE,...: רשימה מופרדת בפסיקים של תוויות Kubernetes (צמדי מפתח/ערך) שחלות על כל צומת במאגר.--node-taints=KEY=VALUE:EFFECT,...רשימה מופרדת בפסיקים של Kubernetes taints שחלים על כל צומת במאגר. Taints הם צמדי מפתח=ערך שמשויכים לאפקט. הכתמות משמשות עם סבילות לתזמון Pod. צריך לציין אחד מהערכים הבאים בשבילEFFECT:NoSchedule,PreferNoSchedule,NoExecute.
בדוגמה הבאה נוצר מאגר צמתים בשם default-pool ב-user-cluster-, ונוספים שני צמתים למאגר הצמתים. כל הצמתים מסומנים בתווית node-pool-key=node-pool-value וכוללים את הכתם dedicated=experimental:PreferNoSchedule,
gcloud container bare-metal node-pools create default-pool \ --cluster=user-cluster-1 \ --project=example-project-12345 \ --location=us-west1 \ --node-configs='node-ip=10.200.0.10' \ --node-configs='node-ip=10.200.0.11,labels=key2.1=value2.1' \ --node-labels=node-pool-key=node-pool-value \ --node-taints=dedicated=experimental:PreferNoSchedule
למידע נוסף, קראו את מדריך העזר ל-CLI של gcloud.
Terraform
לפני שמתחילים
גרסת התוכנה של Distributed Cloud ל-bare metal בלבד שאתם בוחרים כשאתם יוצרים אשכול משתמשים, צריכה להיות גרסה שנתמכת באשכול האדמין. בנוסף, הגרסאות המשניות או גרסאות התיקון האחרונות לא זמינות ב-GKE On-Prem API עד 7 עד 14 ימים אחרי ההשקה. אפשר להריץ פקודת gcloud כדי לקבל רשימה של גרסאות נתמכות שבהן אפשר להשתמש כדי להתקין את אשכול המשתמשים.
חשוב לעדכן את הרכיבים:
gcloud components update
מאתרים את השם ואת מיקום החברות ב-Fleet של אשכול האדמין:
gcloud container fleet memberships list \ --project=FLEET_HOST_PROJECT_ID
מחליפים את
FLEET_HOST_PROJECT_IDבמזהה הפרויקט שאליו רשום אשכול האדמין.הפלט אמור להיראות כך:
NAME EXTERNAL_ID LOCATION admin-cluster-1 bb7803b4-8438-4b22-859f-4559b4b29072 global admin-cluster-2 ee16ee2b-6ec0-49fc-9413-3c89cbc70854 global admin-cluster-3 fc2b7ef5-39ff-4b63-b919-04c5adc67be4 us-west1
המיקום מציין איפה פועלים שירותי Fleet ו-Connect. אשכולות אדמין שנוצרו לפני גרסה 1.28 מנוהלים על ידי שירותי Fleet ו-Connect הגלובליים. בגרסה 1.28 ואילך, אפשר לציין
globalאו אזור ב- Google Cloud כשיוצרים את אשכול האדמין. בדוגמאות לפקודות שבהמשך, מציינים את האזור בדגל--admin-cluster-membership-location.מציגים רשימה של הגרסאות שאפשר להתקין באשכול המשתמש:
gcloud container bare-metal clusters query-version-config \ --admin-cluster-membership=ADMIN_CLUSTER_NAME \ --admin-cluster-membership-project=FLEET_HOST_PROJECT_ID \ --admin-cluster-membership-location=ADMIN_CLUSTER_REGION \ --location=REGION
מחליפים את מה שכתוב בשדות הבאים:
ADMIN_CLUSTER_NAME: השם של אשכול האדמין.
FLEET_HOST_PROJECT_ID: מזהה הפרויקט שאליו רשום אשכול האדמין.
ADMIN_CLUSTER_REGION: האזור של אשכול הניהול ב-Fleet. הערך יכול להיות גלובלי או אזור ב- Google Cloud. משתמשים במיקום של אשכול האדמין מהפלט שלgcloud container fleet memberships list.
REGION: האזור ( Google Cloud ) שבו תשתמשו כשתצרו את האשכול. זה האזור שבו פועלים GKE On-Prem API והשירותים Fleet ו-Connect. מציינים אתus-west1או אזור נתמך אחר.
הפלט של הפקודה אמור להיראות כך:
versions: - version: 1.16.2 - version: 1.16.1 - version: 1.16.0 - version: 1.15.7 - version: 1.15.6 - version: 1.15.5
כדי ליהנות מהתיקונים והשיפורים האחרונים, מומלץ להשתמש בגרסה העדכנית ביותר שנתמכת.
דוגמה
אתם יכולים להשתמש בדוגמה הבאה להגדרה בסיסית כדי ליצור אשכול משתמשים עם מאזן עומסים של MetalLB. למידע נוסף, ראו את מאמרי העזרה של google_gkeonprem_bare_metal_cluster.
הגדרת משתנים ב-terraform.tfvars
הדוגמה כוללת קובץ משתנים לדוגמה שאפשר להעביר ל-main.tf, שמראה איך להגדיר את מאזן העומסים MetalLB שמצורף לחבילה.
משכפלים את המאגר
anthos-samplesועוברים לספרייה שבה נמצאת הדוגמה של Terraform:git clone https://github.com/GoogleCloudPlatform/anthos-samples cd anthos-samples/anthos-onprem-terraform/abm_user_cluster_metallbהדוגמה כוללת קובץ משתנים לדוגמה שאפשר להעביר אל
main.tf.יוצרים עותק של הקובץ
terraform.tfvars.sample:cp terraform.tfvars.sample terraform.tfvarsמשנים את ערכי הפרמטרים בקובץ
terraform.tfvarsושומרים את הקובץ.ברשימה הבאה מתוארים המשתנים:
project_id: מזהה הפרויקט שבו רוצים ליצור את האשכול. הפרויקט שצוין משמש גם כפרויקט המארח של הצי. זה צריך להיות אותו פרויקט שאליו רשום אשכול האדמין. אחרי שיוצרים את אשכול המשתמש, הוא נרשם באופן אוטומטי ל-fleet של הפרויקט שנבחר. אי אפשר לשנות את הפרויקט המארח של ה-fleet אחרי שיוצרים את האשכול.
region: האזור ב- Google Cloud שבו פועלים GKE On-Prem API (gkeonprem.googleapis.com), שירות Fleet (gkehub.googleapis.com) ושירות Connect (gkeconnect.googleapis.com). מציינים אתus-west1או אזור נתמך אחר.
admin_cluster_name: השם של אשכול האדמין שמנהל את אשכול המשתמש. בדוגמה הזו, האזור של אשכול האדמין הואglobal. אם יש לכם אשכול אדמין אזורי:פותחים את
main.tfבכלי לעריכת טקסט.מחפשים את
admin_cluster_membership, שנראה כך:admin_cluster_membership = "projects/${var.project_id}/locations/global/memberships/${var.admin_cluster_name}"משנים את
globalלאזור שבו משתמש אשכול האדמין ושומרים את הקובץ.
bare_metal_version: הגרסה של Google Distributed Cloud לאשכול המשתמשים. ציינו גרסה זהה לזו של אשכול האדמין, או גרסה נמוכה יותר בלא יותר מגרסה משנית אחת מזו של אשכול האדמין.
admin_user_emails: רשימה של כתובות האימייל של המשתמשים שרוצים לתת להם הרשאות אדמין באשכול. אם אתם מתכוונים לנהל את האשכול, הקפידו להוסיף את כתובת האימייל שלכם.כשיוצרים את האשכול, ה-API של GKE On-Prem מחיל על האשכול את כללי המדיניות של בקרת גישה מבוססת-תפקידים (RBAC) ב-Kubernetes, כדי להקצות למשתמשים עם הרשאת אדמין את התפקיד
clusterrole/cluster-adminב-Kubernetes, שנותן גישה מלאה לכל משאב באשכול בכל מרחבי השמות. כך המשתמשים יכולים גם להתחבר למסוף באמצעות Google Identity.
cluster_name: שם לבחירתכם לאשכול המשתמש. אי אפשר לשנות את השם אחרי שיוצרים את האשכול. השם צריך:- לכלול עד 40 תווים
- להכיל רק תווים אלפאנומריים באותיות קטנות או מקף (
-) - להתחיל באות
- להסתיים בתו אלפאנומרי
control_plane_ips: רשימה של כתובת IPv4 אחת או יותר לצומתי מישור הבקרה. צמתים של מישור הבקרה מריצים את עומס העבודה של המערכת. בדרך כלל, אם משתמשים בפריסה מינימלית יש מכונה אחת, ואם משתמשים בפריסה של זמינות גבוהה (HA) יש שלוש מכונות. כדי שיהיה קוורום של רוב לזמינות גבוהה, צריך לציין מספר אי-זוגי של צמתים. אפשר לשנות את הכתובות האלה בכל פעם שמעדכנים או משדרגים אשכול.
worker_node_ips: רשימה של כתובת IPv4 אחת או יותר למכונות של צומתי העובדים.
control_plane_vip: כתובת ה-IP הווירטואלית (VIP) שבחרתם להגדיר במאזן העומסים לשרת ה-API של Kubernetes באשכול המשתמש.
ingress_vip: כתובת ה-IP שבחרתם להגדיר במאזן העומסים בשביל שרת ה-proxy של Ingress.
lb_address_pools: רשימה של מפות שמגדירות את מאגרי הכתובות שבהם מאזן העומסים MetalLB ישתמש. כתובת ה-VIP של הכניסה חייבת להיות באחד מהמאגרים האלה.
שומרים את השינויים ב-
terraform.tfvars.מאתחלים ויוצרים את התוכנית ב-Terraform:
terraform initTerraform מתקין את כל הספריות הנדרשות, כמו הספק Google Cloud .
בודקים את ההגדרות ומשנים אותן לפי הצורך:
terraform planמפעילים את התוכנית של Terraform כדי ליצור את אשכול המשתמש:
terraform applyיצירת אשכול המשתמשים נמשכת 15 דקות או יותר. אפשר לראות את אשכול ה-GKE בדף GKE clusters במסוף Google Cloud .
התחברות לאשכול המשתמשים
כשיוצרים אשכול משתמשים במסוף, האשכול מוגדר עם כללי מדיניות של בקרת גישה מבוססת-תפקידים (RBAC) ב-Kubernetes, כדי שתוכלו להתחבר לאשכול באמצעות הזהות שלכם ב- Google Cloud . כשיוצרים אשכול משתמש באמצעות ה-CLI של gcloud, מקבלים את כללי המדיניות האלה של RBAC כברירת מחדל אם לא כוללים את הדגל --admin-users. אם אתם כוללים את --admin-users כדי להגדיר משתמש אחר כאדמין, אתם מבטלים את ברירת המחדל וצריכים לכלול גם את כתובת האימייל שלכם וגם את כתובת האימייל של האדמין האחר. למידע נוסף על כללי המדיניות הנדרשים של IAM ו-RBAC, קראו את המאמר הגדרת אימות Google Identity.
לכל האשכולות יש נקודת קצה קנונית. נקודת הקצה חושפת את שרת ה-API של Kubernetes, שמשמש את kubectl ושירותים אחרים כדי לתקשר עם מישור הבקרה של האשכול דרך יציאת TCP 443. אי אפשר לגשת לנקודת הקצה הזו דרך האינטרנט הציבורי. אם יש לכם גישה לנקודת הקצה הפרטית של האשכול דרך ה-VPC, אתם יכולים להתחבר ישירות לנקודת הקצה הפרטית וליצור קובץ kubeconfig ישירות. אחרת, אתם יכולים להשתמש ב-Connect Gateway.
כדי לגשת לאשכול המשתמש משורת הפקודה, צריך קובץ kubeconfig.
יש שתי דרכים לקבל קובץ kubeconfig:
משתמשים בשער הקישוריות כדי לגשת לאשכול ממחשב שמותקן בו Google Cloud CLI. במקרה כזה,
kubectlמשתמש ב-kubeconfigשל שער Connect, שמעביר באופן מאובטח את התנועה לנקודת הקצה הפרטית בשמכם.כדי לקבל גישה ישירה לנקודות קצה פרטיות, יוצרים קובץ
kubeconfigבתחנת העבודה של האדמין ומנהלים את האשכול מתחנת העבודה של האדמין.
חשוב להמתין עד שבמסוף Google Cloud יצוין שהסטטוס של אשכול המשתמשים תקין.
חיבור השער
מאתחלים את ה-CLI של gcloud לשימוש עם הפרויקט המארח של ה-fleet, או מריצים את הפקודות הבאות כדי להתחבר באמצעות חשבון Google, להגדיר את הפרויקט המארח של ה-fleet כברירת המחדל ולעדכן רכיבים:
gcloud auth login gcloud config set project PROJECT_ID gcloud components updateאחזור פרטי הכניסה של האשכול שמשמשים לאינטראקציה עם Connect gateway. בפקודה הבאה, מחליפים את
MEMBERSHIP_NAMEבשם האשכול. ב-Distributed Cloud לתוכנת Bare Metal בלבד, שם המינוי זהה לשם האשכול.gcloud container fleet memberships get-credentials MEMBERSHIP_NAMEהפקודה הזו מחזירה שער ספציפי לחיבור
kubeconfigשמאפשר להתחבר לאשכול דרך השער.
אחרי שקיבלתם את פרטי הכניסה הנדרשים, אתם יכולים להריץ פקודות באמצעות kubectl כמו שאתם עושים בדרך כלל בכל אשכול Kubernetes, ואין צורך לציין את השם של הקובץ kubeconfig, לדוגמה:
kubectl get namespaces
תחנת עבודה של אדמין
משתמשים בפקודה bmctl get credentials כדי לאחזר קובץ kubeconfig לאשכול המשתמשים החדש שנוצר.
bmctl get credentials --cluster CLUSTER_NAME --admin-kubeconfig ADMIN_KUBECONFIG_PATH
מחליפים את מה שכתוב בשדות הבאים:
CLUSTER_NAME: השם של אשכול המשתמשים המטורגט.
ADMIN_KUBECONFIG_PATH: הנתיב לקובץ
kubeconfigשל אשכול האדמין.
kubeconfig עם פרטי הכניסה של אשכול המשתמשים נכתב בקובץ bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-TIMESTAMP-kubeconfig.
הערך TIMESTAMP בשם הקובץ מציין את התאריך והשעה שבהם הקובץ נוצר.
הקובץ הזה מכיל את פרטי הכניסה לאימות של האשכול, ולכן צריך לאחסן אותו במיקום מאובטח עם גישה מוגבלת.