ב-Google Distributed Cloud (GDC) עם air gap, אתם יכולים לנהל את אשכולות Kubernetes אחרי שאתם יוצרים אותם באמצעות GKE ב-GDC. השירות הזה מאפשר לכם להתאים את עצמכם לדרישות המשתנות של עומסי העבודה בקונטיינרים, ולתחזק את הצמתים הקיימים באשכול באמצעות תהליכי העבודה הבאים:
צירוף אשכולות משותפים לפרויקטים וניתוק שלהם: אחרי שיוצרים אשכול משותף, אפשר לצרף אותו לכמה פרויקטים ולנתק אותו מהם כדי לשנות את היקף עומסי העבודה של האשכול המשותף.
הצגת אשכולות בארגון: הצגת רשימה של האשכולות בארגון כדי לעקוב אחרי מה שזמין לעומסי העבודה של הקונטיינרים.
הצגת גרסאות Kubernetes: הצגת גרסת Kubernetes של האשכול כדי להכיר את היכולות של האשכול בהתאם לגרסאות העדכניות של Kubernetes.
הצגת מאפייני אשכול שניתנים לעדכון: הצגת המאפיינים שאפשר לשנות בהגדרת המשאב המותאם אישית של
Cluster.
המסמך הזה מיועד לאדמינים ממחלקת IT בקבוצת האדמינים של הפלטפורמה, שמנהלים עומסי עבודה של קונטיינרים שמתארחים באשכולות שכוללים כמה פרויקטים, ולמפתחים בקבוצת מפעילי האפליקציות שאחראים ליצירת עומסי עבודה של אפליקציות בפרויקט יחיד. מידע נוסף זמין במאמר קהלי היעד של GDC עם air gap.
לפני שמתחילים
כדי להשלים את המשימות שבמסמך הזה, צריך לבקש את ההרשאות הנדרשות ולהכין את הסביבה.
בקשת תפקידים ב-IAM
כדי לקבל את ההרשאות שנדרשות לתחזוקת אשכול Kubernetes, צריך תפקידים ספציפיים. התפקידים שאתם צריכים תלויים בשאלה אם אתם עובדים באשכול משותף ברמת הארגון או באשכול רגיל ברמת הפרויקט. מידע נוסף זמין במאמר הגדרות של אשכול Kubernetes.
תפקידים משותפים באשכול
כדי לראות ולתחזק את אשכול Kubernetes המשותף ואת המשאבים שלו, בקשו ממנהל החשבון הארגוני ב-IAM להקצות לכם את התפקידים הבאים, בהתאם למשימה שאתם צריכים לבצע:
יצירת פרויקטים (
project-creator): יצירה או הצגה של משאבי פרויקט. התפקיד הזה נדרש כדי לצרף אשכול משותף לפרויקט.עריכת פרויקטים (
project-editor): מחיקה, עדכון או צפייה במשאבי הפרויקט. התפקיד הזה נדרש כדי לנתק אשכול משותף מפרויקט.User Cluster Viewer (
user-cluster-viewer): צפייה באשכול המשותף ובמשאבים שלו. התפקיד הזה נותן גישה לממשקי ה-API של מישור הניהול של האשכול המשותף שמתארח בשרת ה-API של הניהול.
התפקידים האלה לא קשורים למרחב שמות של פרויקט.
תפקידים רגילים באשכול
כדי לראות את אשכול Kubernetes הרגיל ואת המשאבים שלו, בקשו מהאדמין של הפרויקט ב-IAM להקצות לכם את התפקיד צפייה באשכול רגיל (standard-cluster-viewer). התפקיד הזה נותן גישה לממשקי ה-API של מישור הניהול באשכול הרגיל שמתארח בשרת ה-API של הניהול.
התפקיד הזה קשור למרחב השמות של הפרויקט.
הכנת הסביבה
כדי להריץ פקודות באשכול Kubernetes באמצעות ה-API, צריך לוודא שיש לכם את המשאבים הבאים:
מאתרים את שם האשכול של Kubernetes, או שואלים חבר בקבוצת האדמינים של הפלטפורמה מה שם האשכול.
בהוראות הבאות, החליפו את
CLUSTER_NAMEבשם של אשכול Kubernetes.נכנסים ויוצרים את קובץ kubeconfig לשרת ה-API לניהול.
בהוראות הבאות, מחליפים את
MANAGEMENT_API_SERVERבנתיב kubeconfig של שרת ה-API לניהול.
העברת אשכולות בהיררכיית הפרויקט
פרויקטים מספקים קיבוץ לוגי של מופעי שירות. אתם יכולים להוסיף ולהסיר אשכולות Kubernetes משותפים מהיררכיית הפרויקטים ב-GDC כדי לקבץ את השירותים שלכם בצורה מתאימה. אי אפשר להעביר אשכולות רגילים בהיררכיית הפרויקטים, כי הם מוגדרים לפרויקט אחד בלבד.
צירוף פרויקט לאשכול משותף
כשיוצרים אשכול משותף ממסוף GDC, צריך לצרף לפחות פרויקט אחד כדי לפרוס בו בהצלחה עומסי עבודה של קונטיינרים. אם אתם צריכים להוסיף עוד פרויקטים לאשכול קיים, בצעו את הפעולות הבאות:
המסוף
- בתפריט הניווט, לוחצים על Kubernetes Engine > Clusters.
- ברשימת האשכולות, לוחצים על שם האשכול כדי לפתוח את הדף Cluster details.
- לוחצים על Attach Project (צירוף פרויקט).
- ברשימת הפרויקטים הזמינים, לוחצים על שם הפרויקט שרוצים לצרף לאשכול.
- לוחצים על Save.
API
יוצרים משאב
ProjectBindingחדש בהתאמה אישית לאשכול:kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF apiVersion: resourcemanager.gdc.goog/v1 kind: ProjectBinding metadata: name: CLUSTER_NAME-PROJECT_NAME namespace: platform labels: resourcemanager.gdc.goog/projectbinding-for-user-project: "true" spec: clusterRef: name: CLUSTER_NAME selector: nameSelector: matchNames: - PROJECT_NAME EOFמחליפים את מה שכתוב בשדות הבאים:
-
MANAGEMENT_API_SERVER: הנתיב של kubeconfig לשרת ה-API האזורי. -
CLUSTER_NAME: שם האשכול. -
PROJECT_NAME: שם הפרויקט שאליו רוצים לקשר את האשכול. כל משאב שלProjectBindingיכול למפות רק לאשכול אחד. אם פרויקט דורש גישה לכמה אשכולות, צריך ליצורProjectBindingייחודי לכל אשכול.
-
Terraform
בקובץ תצורה של Terraform, מוסיפים את קטע הקוד הבא כדי ליצור את המשאב בהתאמה אישית
ProjectBinding:provider "kubernetes" { config_path = "MANAGEMENT_API_SERVER" } resource "kubernetes_manifest" "PROJECT_BINDING_RESOURCE_NAME" { manifest = { "apiVersion" = "resourcemanager.gdc.goog/v1" "kind" = "ProjectBinding" "metadata" = { "name" = "CLUSTER_NAME-PROJECT_NAME" "namespace" = "platform" "labels" = { "resourcemanager.gdc.goog/projectbinding-for-user-project" = "true" } } "spec" = { "clusterRef" = { "name" = "CLUSTER_NAME" } "selector" = { "nameSelector" = { "matchNames" = [ "PROJECT_NAME", ] } } } } }מחליפים את מה שכתוב בשדות הבאים:
-
MANAGEMENT_API_SERVER: הנתיב של kubeconfig לשרת ה-API האזורי. -
PROJECT_BINDING_RESOURCE_NAME: שם המשאב ב-Terraform של הקישור לפרויקט, למשלCLUSTER_NAME-PROJECT_NAME-binding. השם הזה משמש את Terraform כדי לזהות את הקישור לפרויקט, ולא משמש את GDC. -
CLUSTER_NAME: שם האשכול. כל משאב שלProjectBindingיכול למפות רק לאשכול אחד. אם פרויקט דורש גישה למספר אשכולות, צריך ליצורProjectBindingייחודי לכל אשכול. -
PROJECT_NAME: שם הפרויקט שאליו רוצים לקשר. כל משאבProjectBindingיכול למפות רק לאשכול אחד. אם פרויקט דורש גישה למספר אשכולות, צריך ליצורProjectBindingייחודי לכל אשכול.
-
מחילים את הקישור החדש של הפרויקט:
terraform apply
ניתוק פרויקט מאשכול משותף
ניתוק פרויקט מאשכול משותף יכול לגרום לשינויים משמעותיים, כמו מחיקת עומסי עבודה שפועלים באשכול. חשוב להבין את ההשלכות לפני שמנתקים פרויקט מאשכול משותף.
כדי לנתק פרויקט מאשכול משותף קיים:
המסוף
- בתפריט הניווט, לוחצים על Kubernetes Engine > Clusters.
- לוחצים על האשכול ברשימת האשכולות כדי לפתוח את הדף Cluster details.
- לוחצים על delete Detach בפרויקט שרוצים לנתק מהאשכול.
API
מוחקים את המשאב
ProjectBindingשמקשר בין הפרויקט לאשכול:kubectl --kubeconfig MANAGEMENT_API_SERVER delete projectbinding \ CLUSTER_NAME-PROJECT_NAME -n platformמחליפים את מה שכתוב בשדות הבאים:
-
MANAGEMENT_API_SERVER: הנתיב של kubeconfig לשרת ה-API האזורי. -
CLUSTER_NAME: שם האשכול. -
PROJECT_NAME: שם הפרויקט שרוצים לנתק מהאשכול.
-
Terraform
מוחקים את משאב הקישור של הפרויקט:
terraform destroy -target kubernetes_manifest.PROJECT_BINDING_RESOURCE_NAMEמחליפים את
PROJECT_BINDING_RESOURCE_NAMEבשם המשאב של Terraform של הקישור לפרויקט שרוצים למחוק, למשלCLUSTER_NAME-PROJECT_NAME-binding. השם הזה משמש את Terraform כדי לזהות את הקישור לפרויקט, ולא משמש את GDC.
הצגת כל האשכולות בפרויקט או בארגון
אתם יכולים לראות את כל אשכולות Kubernetes שזמינים בפרויקט או בארגון, כולל הסטטוסים שלהם, גרסאות Kubernetes ופרטים נוספים.
אשכולות Kubernetes הם משאב של תחום מוגדר, ולכן אפשר להציג רק אשכולות לפי תחום.
המסוף
בכלי לבחירת פרויקטים, בוחרים את הפרויקט או הארגון.
אשכולות רגילים מוגדרים ברמת הפרויקט, ואשכולות משותפים מוגדרים ברמת הארגון. כדי לראות את סוג אשכול Kubernetes המתאים, צריך לבחור את ההיקף הנכון.
בתפריט הניווט, לוחצים על Kubernetes Engine > Clusters.
כל האשכולות המשותפים שזמינים בארגון מוצגים עם הסטטוסים שלהם ומידע נוסף:

gdcloud
מציגים את אשכולות Kubernetes שזמינים באזור:
gdcloud clusters listהפלט אמור להיראות כך:
CLUSTERREF.NAME READINESS.STATE TYPE CURRENTVERSION.USERCLUSTERVERSION CURRENTVERSION.SUPPORT.STATUS user-vm-1 Ready user 1.15.0-gdch.394225-1.28.15-gke.1200 In Support user-vm-2 Ready user 1.15.0-gdch.394225-1.29.12-gke.800 In Support
API
מציגים את אשכולות Kubernetes שזמינים באזור:
kubectl get clusters.cluster.gdc.goog -n KUBERNETES_CLUSTER_NAMESPACE \ --kubeconfig MANAGEMENT_API_SERVERמחליפים את מה שכתוב בשדות הבאים:
-
MANAGEMENT_API_SERVER: הנתיב של kubeconfig לשרת ה-API האזורי. -
KUBERNETES_CLUSTER_NAMESPACE: מרחב השמות של האשכול. באשכולות משותפים, צריך להשתמש במרחב השמותplatform. באשכולות רגילים, משתמשים במרחב השמות של הפרויקט של האשכול.
הפלט אמור להיראות כך:
NAME STATE K8S VERSION user-vm-1 Running 1.25.10-gke.2100 user-test Running 1.26.5-gke.2100-
הצגת רשימה של גרסאות Kubernetes שזמינות לאשכול
אתם יכולים להציג את גרסאות Kubernetes שזמינות באזור שלכם ב-GDC כדי לבדוק לאילו תכונות של Kubernetes יש לכם גישה באשכול.
מציגים את גרסאות Kubernetes שזמינות באזור:
kubectl get userclustermetadata.upgrade.private.gdc.goog \ -o=custom-columns=K8S-VERSION:.spec.kubernetesVersion \ --kubeconfig MANAGEMENT_API_SERVERמחליפים את
MANAGEMENT_API_SERVERבקובץ kubeconfig של שרת ה-API האזורי של האשכול.הפלט אמור להיראות כך:
K8S-VERSION 1.25.10-gke.2100 1.26.5-gke.2100 1.27.4-gke.500
הצגת המאפיינים שאפשר לעדכן
לכל אשכול Kubernetes יש קבוצת מאפיינים שאפשר לשנות אחרי שיוצרים אותו. אפשר לשנות רק את המאפיינים הניתנים לשינוי שנמצאים ב-spec של המשאב המותאם אישית Cluster. לא כל המאפיינים ב-spec ניתנים לעדכון אחרי הקצאת האשכול. כדי לראות את המאפיינים שאפשר לעדכן, פועלים לפי השלבים הבאים:
המסוף
בתפריט הניווט, לוחצים על Kubernetes Engine > Clusters.
ברשימת אשכולות Kubernetes, לוחצים על שם האשכול כדי להציג את המאפיינים שלו.
למאפיינים שאפשר לערוך יש סמל edit עריכה.
API
רשימת המאפיינים של המפרט
Clusterוהערכים התקינים של כל מאפיין:kubectl explain clusters.cluster.gdc.goog.spec \ --kubeconfig MANAGEMENT_API_SERVERמחליפים את
MANAGEMENT_API_SERVERבנתיב kubeconfig של שרת ה-API האזורי.הפלט אמור להיראות כך:
KIND: Cluster VERSION: cluster.gdc.goog/v1 RESOURCE: spec <Object> DESCRIPTION: <empty> FIELDS: clusterNetwork <Object> The cluster network configuration. If unset, the default configurations with pod and service CIDR sizes are used. Optional. Mutable. initialVersion <Object> The GDC air-gapped version information of the user cluster during cluster creation. Optional. Default to use the latest applicable version. Immutable. loadBalancer <Object> The load balancer configuration. If unset, the default configuration with the ingress service IP address size is used. Optional. Mutable. nodePools <[]Object> The list of node pools for the cluster worker nodes. Optional. Mutable. releaseChannel <Object> The release channel a cluster is subscribed to. When a cluster is subscribed to a release channel, GDC maintains the cluster versions for users. Optional. Mutable.אפשר לעדכן את ההגדרות האלה באמצעות מסוף GDC או kubectl CLI. לדוגמה, אפשר לשנות את הגודל של מאגר צמתים.