במאמר הזה נסביר איך להחיל ComputeClasses כברירת מחדל על פודים של Google Kubernetes Engine (GKE) שלא בוחרים באופן מפורש ComputeClass. אפשר להגדיר ComputeClass כברירת מחדל למרחב שמות או לאשכול שלם. המסמך הזה מיועד למנהלי אשכולות שרוצים לצמצם את התקורה הידנית שנגרמת כתוצאה מהגדרת עומסי עבודה וצמתים נפרדים.
כדאי שתכירו את הגדרות ComputeClass בהתאמה אישית.
מידע על ComputeClasses שמוגדרים כברירת מחדל
אתם יכולים להגדיר אשכולות GKE או מרחבי שמות ספציפיים כך שיהיה להם ComputeClass ברירת מחדל. הכיתה שמוגדרת כברירת מחדל חלה על כל Pod באותו אשכול או מרחב שמות שלא נבחרה בו ComputeClass אחרת. כשפורסים Pod שלא בוחרים בו ComputeClass, GKE מחיל את ברירות המחדל של ComputeClasses בסדר הבא:
- אם למרחב השמות יש ComputeClass שמוגדר כברירת מחדל, GKE משנה את המפרט של ה-Pod כדי לבחור את ה-ComputeClass הזה.
- אם למרחב השמות אין ComputeClass שמוגדר כברירת מחדל, חל הסיווג שמוגדר כברירת מחדל ברמת האשכול. GKE לא משנה את מפרט ה-Pod.
כשמגדירים ComputeClass כברירת מחדל עבור אשכול או מרחב שמות, השינוי חל רק על Pods חדשים. הפודים הקיימים לא יושפעו עד שהם ייווצרו מחדש. ההתנהגות הזו חלה גם אם ב-ComputeClass מופעלת העברה פעילה.
אם שדה activeMigration.optimizeRulePriority של ComputeClass שמוגדר כברירת מחדל מוגדר לערך true, ההגדרה הזו עשויה להשפיע על עומסי העבודה באשכולות. מידע נוסף זמין במאמר העברה פעילה ב-ComputeClasses שמוגדרים כברירת מחדל.
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את המשימות הבאות:
- מפעילים את ממשק ה-API של Google Kubernetes Engine. הפעלת Google Kubernetes Engine API
- כדי להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז לאתחל את ה-CLI של gcloud. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה
gcloud components updateכדי לקבל את הגרסה העדכנית. יכול להיות שבגרסאות קודמות של ה-CLI של gcloud אי אפשר להריץ את הפקודות שבמסמך הזה.
- אשכול GKE במצב Autopilot או Standard, שפועלת בו גרסה שתומכת בהגדרה של ComputeClass כברירת מחדל ברמת האשכול או ברמת מרחב השמות. מידע נוסף זמין בקטע דרישות.
אם אתם משתמשים באשכול במצב רגיל, אתם צריכים לעמוד באחת מהדרישות הבאות:
- מפעילים מידרוג אוטומטי לפחות במאגר צמתים אחד באשכול.
- אם האשכול הרגיל שלכם מריץ גרסה קודמת ל-1.33.3-gke.1136000 ולא רשום לערוץ ההפצה המהירה, צריך להפעיל הקצאת משאבים אוטומטית של צמתים ברמת האשכול.
אם רוצים להגדיר ComputeClass מותאם אישית כברירת המחדל למרחב שמות, צריך לפרוס ComputeClass מותאם אישית.
דרישות
- כדי להגדיר ComputeClass כברירת המחדל ברמת האשכול, באשכול צריכה לפעול גרסת GKE 1.33.1-gke.1744000 ואילך.
- כדי להגדיר ComputeClass כברירת המחדל ברמת מרחב השמות רק עבור Pods שאינם DaemonSet, צריך להפעיל את גרסה 1.33.1-gke.1788000 ואילך של GKE באשכול.
תפקידים והרשאות נדרשים
כדי לקבל את ההרשאות שנדרשות להגדרת ברירות המחדל של ComputeClasses ברמת האשכול או מרחב השמות, בקשו מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט Cloud de Confiance :
- Kubernetes Engine Developer (
roles/container.developer) -
עדכון ברירת המחדל של ComputeClass ברמת האשכול:
אדמין של אשכול Kubernetes Engine (
roles/container.clusterAdmin)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
התפקידים המוגדרים מראש האלה כוללים את ההרשאות שנדרשות להגדרת ComputeClasses שמוגדרים כברירת מחדל ברמת האשכול או מרחב השמות. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי להגדיר ComputeClasses כברירת מחדל ברמת האשכול או מרחב השמות, נדרשות ההרשאות הבאות:
-
container.customResourceDefinitions.create -
container.customResourceDefinitions.update -
container.customResourceDefinitions.get -
container.customResourceDefinitions.list -
container.namespaces.get -
container.namespaces.list -
container.pods.get -
container.nodes.get -
container.nodes.list -
container.deployments.create -
container.deployments.get -
מוסיפים תוויות למרחבי השמות:
container.namespaces.update -
מפעילים את ברירת המחדל ComputeClass ברמת האשכול:
container.clusters.update
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
הגדרת ComputeClass כברירת מחדל למרחב שמות
אתם יכולים להוסיף הערה לכל מרחב שמות של Kubernetes באשכול עם השם של ComputeClass כדי להשתמש בו כברירת מחדל. אם פוד שנפרס במרחב השמות הזה לא בוחר כבר ComputeClass, GKE משנה את מפרט הפוד כדי לבחור את מחלקת ברירת המחדל במרחב השמות. אפשר להגדיר כל ComputeClass מותאם אישית או מובנה כברירת מחדל.
כדי להחיל ComputeClass על כל ה-Pods במרחב שמות כברירת מחדל, מוסיפים את התווית
cloud.google.com/default-compute-classלמרחב השמות הזה:kubectl label namespaces NAMESPACE_NAME \ cloud.google.com/default-compute-class=COMPUTECLASS_NAMEמחליפים את מה שכתוב בשדות הבאים:
-
NAMESPACE_NAME: השם של מרחב השמות שרוצים לעדכן. -
COMPUTECLASS_NAME: השם של ComputeClass שרוצים להגדיר כברירת המחדל למרחב השמות.
אם הפקודה נכשלת עם הודעת השגיאה הבאה, למרחב השמות כבר יש ComputeClass שמוגדר כברירת מחדל:
error: 'cloud.google.com/default-compute-class' already has a value, and --overwrite is falseכדי לפתור את השגיאה, עדכנו את ComputeClass שמוגדר כברירת מחדל למרחב השמות.
-
כדי להחיל ComputeClass על כל ה-Pods שאינם DaemonSet במרחב שמות כברירת מחדל, מוסיפים את התווית
cloud.google.com/default-compute-class-non-daemonsetלמרחב השמות הזה:kubectl label namespaces NAMESPACE_NAME \ cloud.google.com/default-compute-class-non-daemonset=COMPUTECLASS_NAMEאם הפקודה נכשלת ומופיעה הודעת השגיאה הבאה, מרחב השמות כבר כולל ComputeClass שמוגדר כברירת מחדל עבור Pods שאינם DaemonSet:
error: 'cloud.google.com/default-compute-class-non-daemonset' already has a value, and --overwrite is falseכדי לפתור את השגיאה הזו, צריך לעדכן את ComputeClass שמוגדר כברירת מחדל למרחב השמות.
השינויים יחולו על כל ה-Pods החדשים במרחב השמות הזה. השינוי לא משפיע על Pods קיימים.
עדכון של ComputeClass שמוגדר כברירת מחדל במרחב שמות
כדי להחליף את ברירת המחדל הקיימת של ComputeClass במרחב שמות, מריצים אחת מהפקודות הבאות:
מעדכנים את ברירת המחדל ComputeClass לכל ה-Pods במרחב השמות:
kubectl label namespaces NAMESPACE_NAME \ cloud.google.com/default-compute-class=COMPUTECLASS_NAME \ --overwriteמחליפים את מה שכתוב בשדות הבאים:
-
NAMESPACE_NAME: השם של מרחב השמות שרוצים לעדכן. -
COMPUTECLASS_NAME: השם של ComputeClass שרוצים להגדיר כברירת המחדל החדשה למרחב השמות.
-
מחליפים את ברירת המחדל של ComputeClass לפודים שאינם DaemonSet במרחב השמות:
kubectl label namespaces NAMESPACE_NAME \ cloud.google.com/default-compute-class-non-daemonset=COMPUTECLASS_NAME \ --overwrite
הגדרת ComputeClass כברירת מחדל למרחבי שמות של המערכת
ב-GKE נעשה שימוש במרחבי שמות של המערכת כדי להפעיל עומסי עבודה מנוהלים שונים, כמו סוכני בקרה. חלק מעומסי העבודה המנוהלים האלה הם DaemonSets, שחייבים לפעול בכל צומת באשכול כדי לספק פונקציונליות קריטית. עם זאת, אתם יכולים לציין ComputeClass כברירת מחדל עבור Pods שאינם DaemonSet במרחבי שמות של המערכת, כדי שה-Pods האלה יפעלו בנפרד מעומסי העבודה שלכם.
כדי להגדיר ComputeClass כברירת מחדל למרחבי שמות של המערכת, פועלים לפי השלבים הבאים:
שומרים את הסקריפט הבא בתור
apply-system-cc.sh. הסקריפט הזה מאפשר להחיל ComputeClass מומלץ או ComputeClass קיים משלכם על מרחבי שמות של מערכת.#!/bin/bash # The recommended default ComputeClass name for system pods. DEFAULT_SYSTEM_CC_NAME="system-default-computeclass" # The YAML manifest for the recommended default ComputeClass for system pods. read -r -d '' DEFAULT_CC_YAML << EOF apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: ${DEFAULT_SYSTEM_CC_NAME} spec: nodePoolAutoCreation: enabled: true whenUnsatisfiable: ScaleUpAnyway priorities: - machineFamily: t2d EOF # The label key to apply to namespaces. LABEL_KEY="cloud.google.com/default-compute-class-non-daemonset" # List of GKE system namespaces. SYSTEM_NAMESPACES=( "kube-system" "gke-gmp-system" "gmp-system" "gke-managed-cim" "gke-managed-volumepopulator" "gke-managed-checkpointing" "gkebackup" "gke-managed-lustrecsi" ) # 1. Ask the user for their choice. echo "This script sets a default ComputeClass for GKE system namespaces." echo "--------------------------------------------------------------------" echo "The following ComputeClass is recommended for system Pods:" echo "" echo "$DEFAULT_CC_YAML" echo "--------------------------------------------------------------------" read -p "Do you want to use the recommended ComputeClass? (y/N): " user_choice CC_TO_APPLY="" # 2. Process the user's choice. if [[ "$user_choice" =~ ^[Yy]$ ]]; then # Path 1: User chose YES. echo "Installing the recommended default ComputeClass '${DEFAULT_SYSTEM_CC_NAME}'..." if ! echo "$DEFAULT_CC_YAML" | kubectl apply -f -; then # If kubectl apply fails, print an error and exit. echo "❌ Error: Failed to create the default ComputeClass. An internal error occurred." echo "Check for kubectl permissions or other cluster issues and re-run the script." exit 1 fi # If the command succeeded, set the name to be used for labeling. CC_TO_APPLY="$DEFAULT_SYSTEM_CC_NAME" else read -p "Specify the name of an existing ComputeClass to set as the default for system Pods: " custom_cc_name # Validate that the user entered a name. while [[ -z "$custom_cc_name" ]]; do echo "Error: Name cannot be empty." read -p "Specify the name of an existing ComputeClass: " custom_cc_name done # Check if the specified ComputeClass actually exists in the cluster. echo "--> Verifying that ComputeClass '${custom_cc_name}' exists..." if kubectl get computeclass "$custom_cc_name" > /dev/null 2>&1; then echo "Verified." CC_TO_APPLY="$custom_cc_name" else echo "Error: ComputeClass '${custom_cc_name}' doesn't exist in the cluster." echo "Create the ComputeClass, and then then re-run this script." exit 1 fi fi echo "" echo "Labelling system namespaces with ComputeClass: '${CC_TO_APPLY}'" echo "--------------------------------------------------------------------" # 3. Apply the label to all system namespaces. for ns in "${SYSTEM_NAMESPACES[@]}"; do # Gracefully handle namespaces that don't exist on this specific cluster. if kubectl get namespace "${ns}" > /dev/null 2>&1; then echo "--> Applying label to namespace: ${ns}" kubectl label namespace "${ns}" \ "${LABEL_KEY}=${CC_TO_APPLY}" --overwrite else echo "--> Skipping namespace ${ns} (does not exist)" fi done echo "" echo "✅ Script finished successfully."
הסקריפט הזה משתמש בתווית
cloud.google.com/default-compute-class-non-daemonset, שמשפיעה רק על פודים שאינם DaemonSet במרחבי שמות של המערכת.מריצים את הסקריפט:
./apply-system-cc.sh
אחרי שהסקריפט מסתיים, כל הפודים החדשים של המערכת שאינם DaemonSet משתמשים ב-ComputeClass שצוין כברירת מחדל, אלא אם כבר יש להם ComputeClass. השינוי לא משפיע על Pods קיימים במרחבי השמות האלה. אם GKE מוסיף מרחבי שמות חדשים של המערכת, צריך להריץ את הסקריפט הזה שוב כדי להחיל את השינויים על מרחבי השמות האלה.
כדי לבטל את ההגדרה של ComputeClass כברירת מחדל למרחבי שמות של המערכת, פועלים לפי השלבים הבאים:
שומרים את הסקריפט הבא בתור
unset-system-cc.sh:#!/bin/bash # The recommended default ComputeClass name for system pods. DEFAULT_SYSTEM_CC_NAME="system-default-computeclass" # The YAML manifest for the recommended default ComputeClass for system pods. read -r -d '' DEFAULT_CC_YAML << EOF apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: ${DEFAULT_SYSTEM_CC_NAME} spec: nodePoolAutoCreation: enabled: true whenUnsatisfiable: ScaleUpAnyway priorities: - machineFamily: t2d EOF # The label key to apply to namespaces. LABEL_KEY="cloud.google.com/default-compute-class-non-daemonset" # List of GKE system namespaces. SYSTEM_NAMESPACES=( "kube-system" "gke-gmp-system" "gmp-system" "gke-managed-cim" "gke-managed-volumepopulator" "gke-managed-checkpointing" "gkebackup" "gke-managed-lustrecsi" ) # 1. Ask the user for their choice. echo "This script sets a default ComputeClass for GKE system namespaces." echo "--------------------------------------------------------------------" echo "The following ComputeClass is recommended for system Pods:" echo "" echo "$DEFAULT_CC_YAML" echo "--------------------------------------------------------------------" read -p "Do you want to use the recommended ComputeClass? (y/N): " user_choice CC_TO_APPLY="" # 2. Process the user's choice. if [[ "$user_choice" =~ ^[Yy]$ ]]; then # Path 1: User chose YES. echo "Installing the recommended default ComputeClass '${DEFAULT_SYSTEM_CC_NAME}'..." if ! echo "$DEFAULT_CC_YAML" | kubectl apply -f -; then # If kubectl apply fails, print an error and exit. echo "❌ Error: Failed to create the default ComputeClass. An internal error occurred." echo "Check for kubectl permissions or other cluster issues and re-run the script." exit 1 fi # If the command succeeded, set the name to be used for labeling. CC_TO_APPLY="$DEFAULT_SYSTEM_CC_NAME" else read -p "Specify the name of an existing ComputeClass to set as the default for system Pods: " custom_cc_name # Validate that the user entered a name. while [[ -z "$custom_cc_name" ]]; do echo "Error: Name cannot be empty." read -p "Specify the name of an existing ComputeClass: " custom_cc_name done # Check if the specified ComputeClass actually exists in the cluster. echo "--> Verifying that ComputeClass '${custom_cc_name}' exists..." if kubectl get computeclass "$custom_cc_name" > /dev/null 2>&1; then echo "Verified." CC_TO_APPLY="$custom_cc_name" else echo "Error: ComputeClass '${custom_cc_name}' doesn't exist in the cluster." echo "Create the ComputeClass, and then then re-run this script." exit 1 fi fi echo "" echo "Labelling system namespaces with ComputeClass: '${CC_TO_APPLY}'" echo "--------------------------------------------------------------------" # 3. Apply the label to all system namespaces. for ns in "${SYSTEM_NAMESPACES[@]}"; do # Gracefully handle namespaces that don't exist on this specific cluster. if kubectl get namespace "${ns}" > /dev/null 2>&1; then echo "--> Applying label to namespace: ${ns}" kubectl label namespace "${ns}" \ "${LABEL_KEY}=${CC_TO_APPLY}" --overwrite else echo "--> Skipping namespace ${ns} (does not exist)" fi done echo "" echo "✅ Script finished successfully."
מריצים את הסקריפט:
./unset-system-cc.sh
הגדרת ComputeClass כברירת מחדל לאשכול
אפשר להגדיר כל ComputeClass מותאם אישית כברירת מחדל לכל האשכול.
התהליך הזה כולל הפעלה של ComputeClasses שמוגדרים כברירת מחדל ברמת האשכול, ואז יצירה של ComputeClass בשם default. אתם יכולים אפילו לקבל את ההתנהגות של ה-ComputeClasses המובנים של Autopilot על ידי ציון אותם כללי עדיפות ב-ComputeClass בשם default.
כדי להשתמש נכון ב-ComputeClass שמוגדר כברירת מחדל באשכול, צריך לבצע את שני השלבים הבאים:
כדי להפעיל הגדרה של ComputeClass כברירת מחדל ברמת האשכול, משתמשים בדגל
--enable-default-compute-classכשיוצרים או מעדכנים אשכול:יצירת אשכול:
gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-default-compute-classמחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: שם לאשכול. -
CONTROL_PLANE_LOCATION: המיקום של מישור הבקרה של האשכול, כמוus-central1.
-
עדכון אשכול:
gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-default-compute-classמחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: שם האשכול. -
CONTROL_PLANE_LOCATION: המיקום של מישור הבקרה של האשכול, למשלus-central1.
-
אחרי שתשלימו את השלב הזה, GKE יחפש באשכול ComputeClass בשם
default. לא תבחינו בשינויים בעומסי העבודה עד שתגדירו אתdefaultComputeClass.יוצרים ComputeClass בשם
default, כמו בדוגמאות הבאות:ה-ComputeClass הבא מבקש סדרת מכונות ספציפית:
apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: default spec: priorities: - machineFamily: n4 - machineFamily: n2 whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: trueה-ComputeClass הזה מבקש צמתים שמשתמשים במופעי N4. אם מכונות N4 לא זמינות, ComputeClass מבקש במקומן מכונות N2. אפשר להגדיר את
defaultComputeClass עם כל אחד מהשדות שזמינים בComputeClass CustomResourceDefinition.הבקשה הבאה של ComputeClass מיועדת לפלטפורמת מחשוב מותאמת-קונטיינרים של Autopilot:
apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: default spec: autopilot: enabled: true priorities: - podFamily: general-purpose whenUnsatisfiable: ScaleUpAnywayה-ComputeClass הזה תואם להתנהגות של ה-ComputeClass המובנה
autopilot, למעט השדהwhenUnsatisfiable, שהערך שלו הואScaleUpAnywayבמקוםDoNotScaleUp. השינוי הזה עוזר למנוע מצבים שבהם Pods שמשתמשים בבורר צמתים לחומרה ספציפית נשארים במצב המתנה, כי ה-ComputeClass שמוגדר כברירת מחדל ברמת האשכול הוחל על ה-Pods האלה.podFamilyכלל העדיפות ממקם את ה-Pods בפלטפורמת המחשוב של Autopilot, שעברה אופטימיזציה לשימוש עם קונטיינרים. כדי להשתמש בכלל העדיפות הזה, צריך גרסת GKE 1.35.2-gke.1485000 ואילך.
יוצרים את ה-ComputeClass
defaultבאשכול:kubectl apply -f PATH_TO_MANIFESTמחליפים את
PATH_TO_MANIFESTבנתיב למניפסט של ComputeClass.אופציונלי: אם באשכול Standard כבר יש מאגרי צמתים שנוצרו באופן ידני ואתם משתמשים בהם כברירת מחדל לעומסי העבודה לשימוש כללי, אתם יכולים להעביר את עומסי העבודה האלה להפעלה במצב אוטומטי אחרי שתגדירו ComputeClass של Autopilot כברירת מחדל ברמת האשכול. כדי להעביר את עומסי העבודה האלה, צריך לבודד את כל הצמתים במאגרי הצמתים ולנקז אותם. GKE משתמש ב-ComputeClass שמוגדר כברירת מחדל ברמת האשכול כדי לתזמן את ה-Pods החדשים שממתינים להפעלה.
אחרי שמגדירים ComputeClass כברירת מחדל ברמת האשכול, GKE משנה את הגודל של מאגרי הצמתים שעומדים בשתי הדרישות הבאות:
- הגדרת הצומת זהה להגדרה של
defaultComputeClass. - למאגר הצמתים אין כתמים או תוויות עבור ComputeClass אחר.
GKE יכול להרחיב מאגרי צמתים שיש להם taint ותווית של
defaultComputeClass.
לדוגמה, אם default ComputeClass מציין את סדרת המכונות N4, GKE יכול להרחיב מאגר צמתים קיים שמשתמש במופעי N4 ואין לו taints או תוויות עבור ComputeClass אחר.
השינויים יחולו על כל ה-Pods החדשים באשכול שעדיין לא הוגדר להם ComputeClass. יכול להיות שהפודים הקיימים יושפעו, בהתאם להגדרות ההעברה הפעילות של ComputeClass שמוגדר כברירת מחדל ברמת האשכול. מידע נוסף זמין במאמר בנושא העברה פעילה ב-ComputeClasses שמוגדרים כברירת מחדל.
אימות התנהגות ברירת המחדל של ComputeClass
כדי לבדוק אם ה-ComputeClass שמוגדר כברירת מחדל למרחב שמות או לאשכול פועל כמו שצריך:
דוגמה לפריסה:
הפריסה הזו לא מבקשת במפורש ComputeClass.
יוצרים את הפריסה:
kubectl apply --namespace=NAMESPACE_NAME \ -f https://raw.githubusercontent.com/GoogleCloudPlatform/kubernetes-engine-samples/refs/heads/main/quickstarts/hello-app/manifests/helloweb-deployment.yamlמחליפים את
NAMESPACE_NAMEבאחד מהערכים הבאים, בהתאם למה שרוצים לאמת:- השם של מרחב שמות שיש לו ComputeClass כברירת מחדל.
- השם של מרחב שמות שאין לו ComputeClass שמוגדר כברירת מחדל.
יכול להיות שיעבור זמן מה עד ש-GKE ייצור צמתים חדשים להפעלת ה-Pods.
מזהים את הצמתים שמריצים את ה-Pods מהפריסה לדוגמה:
kubectl get pods --namespace=NAMESPACE_NAME \ --selector=app=hello -o=wideהפלט אמור להיראות כך:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES helloweb-7795fbf856-58n5l 1/1 Running 0 9m21s 10.52.2.3 gke-cluster-1-nap-n2-highcpu-2-3muqi8-f213e529-rx7d <none> <none>אחזור של תוויות הצומת:
kubectl get node NODE_NAME --show-labels \ | grep "cloud.google.com/compute-class"מחליפים את
NODE_NAMEבשם הצומת מהפלט של השלב הקודם.הפלט אמור להיראות כך:
NODE_NAME Ready <none> 22m v1.32.4-gke.1236007 # lines are omitted from this output cloud.google.com/compute-class=COMPUTECLASS_NAME,cloud.google.com/gke-boot-disk=pd-balanced,cloud.google.com/gke-container-runtime=containerdהערך במאפיין
COMPUTECLASS_NAMEהוא אחד מהערכים הבאים:- ברירת מחדל של ComputeClass ברמת האשכול:
defaultלצמתים שנוצרו על ידי GKE Autopilot או על ידי יצירה אוטומטית של מאגר צמתים. יכול להיות שלצמתים במאגרי צמתים קיימים שנוצרו באופן ידני לא תהיה התוויתcloud.google.com/compute-class. - Namespace-level default ComputeClass: השם של ה-ComputeClass שהגדרתם כברירת המחדל של מרחב השמות.
- ברירת מחדל של ComputeClass ברמת האשכול:
השבתת ברירת המחדל של ComputeClass
כדי להשבית את ברירת המחדל של ComputeClass במרחב שמות או באשכול, מבצעים אחת מהפעולות הבאות:
כדי להשבית את ברירת המחדל של ComputeClass ברמת מרחב השמות לכל ה-Pods, מסירים את התווית
cloud.google.com/default-compute-classממרחב השמות:kubectl label namespaces NAMESPACE_NAME \ cloud.google.com/default-compute-class-התו
-בסוף מפתח התווית מסיר מהאובייקטNamespaceב-Kubernetes API את כל התוויות עם המפתח הזה.כדי להשבית את ComputeClass שמוגדר כברירת מחדל ברמת מרחב השמות עבור Pods שאינם DaemonSet, צריך להסיר את התווית
cloud.google.com/default-compute-class-non-daemonsetממרחב השמות:kubectl label namespaces NAMESPACE_NAME \ cloud.google.com/default-compute-class-non-daemonset-כדי להשבית את ComputeClass שמוגדר כברירת מחדל ברמת האשכול, משתמשים בפקודה
gcloud container clusters updateעם הדגל--no-enable-default-compute-class:gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --no-enable-default-compute-class