בדף הזה מוסבר איך ליצור מלאי של אשכולות עבור צי קיים. מלאי של אשכולות בצי מאפשר לכם לעבוד עם שילובים בקוד פתוח ועם שילובים של צד שלישי שמשתמשים במפרט ClusterProfile.
מלאי אשכולות הוא המקבילה בקוד פתוח לצי: קבוצה לוגית של אשכולות Kubernetes ומשאבים אחרים שאפשר לנהל יחד. המפרט של ClusterProfile מכיל מידע שהוא קבוצת משנה של המידע בצי.
התכונה ClusterProfile sync היא סנכרון חד-כיווני בין צי לבין מלאי של אשכולות. כשהסנכרון של ClusterProfile מופעל, הצי הוא מקור האמת, וכל שינוי בצי מוחל אוטומטית על מלאי האשכולות באמצעות הסנכרון של ClusterProfile. שינויים שמבוצעים ישירות במשאבי פרופיל האשכול לא חלים על צי המכונות.
לפני שמתחילים
חשוב לוודא שפעלתם לפי דרישות הסף הכלליות לעבודה עם צי רכבים.
יוצרים צי או מזהים צי קיים שאיתו רוצים לעבוד.
הפעלת סנכרון של ClusterProfile
סנכרון ClusterProfile מופעל מול אשכול אחד בצי. האשכול הזה נקרא אשכול מרכזי, ואפשר להשתמש בו כדי להפעיל בקרי ריבוי אשכולות שזקוקים למידע על שאר האשכולות ב-Fleet. דוגמאות ל-controllers של כמה אשכולות כוללות את Argo CD controllers ו-multi-cluster orchestrator. מומלץ לא להריץ עומסי עבודה אחרים באשכול המרכזי.
כדי להפעיל סנכרון של ClusterProfile באשכול, מוסיפים את התווית
fleet-clusterinventory-management-cluster=true. אפשר לבצע את הפעולות הבאות:
- יוצרים אשכול חדש לשימוש כאשכול מרכזי. בקטע הבא מוסבר איך מפעילים סנכרון של ClusterProfile באשכול חדש.
- מזהים אשכול בצי לשימוש כאשכול מרכזי. בקטע הבא מוסבר איך מפעילים סנכרון של ClusterProfile באשכול קיים.
אחרי שמפעילים את תכונת הסנכרון של ClusterProfile בצי, נוצר באופן אוטומטי פרופיל אשכול לכל אשכול בצי באמצעות ה-API של ClusterProfile. פרופילי האשכול האלה נוצרים, מתעדכנים ונמחקים באופן אוטומטי כשמבצעים שינויים בצי.
הפעלת סנכרון של ClusterProfile באשכול חדש
כדי ליצור אשכול עבור אשכול ה-hub ולהפעיל סנכרון של ClusterProfile, משתמשים בפקודה הבאה:
gcloud container clusters create CLUSTER --location LOCATION --enable-fleet
--labels=fleet-clusterinventory-management-cluster=true
מחליפים את מה שכתוב בשדות הבאים:
- CLUSTER: השם של
google_container_clusterהמשאב. - LOCATION: המיקום שבו נוצר האשכול.
כברירת מחדל, פרופילי האשכול נוצרים במרחב השמות fleet-cluster-inventory. כדי לשנות את מרחב השמות, מציינים את התווית fleet-clusterinventory-namespace.
gcloud container clusters update CLUSTER --location LOCATION
--update-labels=fleet-clusterinventory-namespace=NAMESPACE
מחליפים את מה שכתוב בשדות הבאים:
- CLUSTER: השם של
google_container_clusterהמשאב. - LOCATION: המיקום שבו נוצר האשכול.
- NAMESPACE: מרחב השמות שבו נוצרים פרופילי האשכול.
אם לא מציינים את השם, פרופילי האשכול נוצרים במרחב השמות
fleet-cluster-inventory.
הפעלת סנכרון של ClusterProfile באשכול קיים
כדי להפעיל סנכרון של ClusterProfile באשכול קיים, משתמשים בפקודה הבאה:
gcloud container clusters update CLUSTER --location LOCATION
--update-labels=fleet-clusterinventory-management-cluster=true
מחליפים את מה שכתוב בשדות הבאים:
- CLUSTER: השם של
google_container_clusterהמשאב. - LOCATION: המיקום שבו נוצר האשכול.
כברירת מחדל, פרופילי האשכול נוצרים במרחב השמות fleet-cluster-inventory. כדי לשנות את מרחב השמות, מציינים את התווית fleet-clusterinventory-namespace.
gcloud container clusters update CLUSTER --location LOCATION
--update-labels=fleet-clusterinventory-namespace=NAMESPACE
מחליפים את מה שכתוב בשדות הבאים:
- CLUSTER: השם של
google_container_clusterהמשאב. - LOCATION: המיקום שבו נוצר האשכול.
- NAMESPACE: מרחב השמות שבו נוצרים פרופילי האשכול.
אם לא מציינים את השם, פרופילי האשכול נוצרים במרחב השמות
fleet-cluster-inventory.
מוודאים שהסנכרון של ClusterProfile מופעל
מוודאים שסנכרון ClusterProfile מופעל. לשם כך, בודקים שאשכול ה-Hub כולל את התווית fleet-clusterinventory-management-cluster = true. כדי לעשות זאת, משתמשים בפקודה הבאה:
gcloud container clusters describe CLUSTER --location LOCATION
מחליפים את מה שכתוב בשדות הבאים:
- CLUSTER: השם של
google_container_clusterהמשאב. - LOCATION: המיקום שבו נוצר האשכול.
הפלט אמור להיראות כך:
resourceLabels:
fleet-clusterinventory-management-cluster: 'true'
אימות המשאבים של פרופיל האשכול שנוצר
כדי לוודא שמשאבי פרופיל האשכול נוצרו באשכול המרכזי, מריצים את הפקודה הבאה:
gcloud container clusters get-credentials CLUSTER --location LOCATION
kubectl get clusterprofiles -n fleet-cluster-inventory
מחליפים את מה שכתוב בשדות הבאים:
- CLUSTER: השם של
google_container_clusterהמשאב. - LOCATION: המיקום שבו נוצר האשכול.
הפלט אמור להיראות כך:
NAME AGE
cluster-1-us-west1 10s
cluster-2-us-west1 20s
הפלט הזה צריך לכלול פרופיל אשכול לכל אשכול בצי.
הפורמט של שם פרופיל האשכול הוא
MEMBERSHIP-LOCATION.
הצגת התוכן של פרופיל האשכול
כדי להציג את התוכן של פרופיל האשכול עבור אשכול ספציפי, משתמשים בפקודה הבאה:
kubectl get clusterprofile CLUSTER-LOCATION -n fleet-cluster-inventory -o yaml
מחליפים את מה שכתוב בשדות הבאים:
- CLUSTER: השם של
google_container_clusterהמשאב. - LOCATION: המיקום שבו נוצר האשכול.
הפלט אמור להיראות כך:
apiVersion: multicluster.x-k8s.io/v1alpha1
kind: ClusterProfile
metadata:
annotations:
fleet.gke.io/membershipName: projects/123456789/locations/us-west1/memberships/cluster-1
labels:
x-k8s.io/cluster-manager: gke-fleet
name: cluster-1-us-west1
namespace: fleet-cluster-inventory
השבתת הסנכרון של ClusterProfile
כדי להשבית את הסנכרון של ClusterProfile במרכז של צי האשכולות, מסירים את התווית fleet-clusterinventory-management-cluster:
gcloud container clusters update CLUSTER --location LOCATION \
--remove-labels=fleet-clusterinventory-management-cluster
מחליפים את מה שכתוב בשדות הבאים:
- CLUSTER: השם של
google_container_clusterהמשאב. - LOCATION: המיקום שבו נוצר האשכול.
המאמרים הבאים
- פרטים על שילוב של סנכרון ClusterProfile עם Argo CD זמינים במאמר בנושא Argo CD ClusterProfile Syncer.
- הכלי Multi-cluster Orchestrator משתמש בפרופילים של אשכולות. הוא עוזר לתזמן פריסות של כמה אשכולות ובמספר אזורים. פרטים נוספים זמינים במאמר סקירה כללית של Multi-Cluster Orchestrator.