שימוש בממשקי API של Kubernetes בגרסת בטא עם אשכולות GKE

אפשר להשתמש בממשקי API בגרסת בטא של Kubernetes כדי לגשת לתכונות חדשות באשכולות Google Kubernetes Engine ‏ (GKE). כדי להשתמש בממשקי API בגרסת בטא שהושקו עם גרסה 1.24 ואילך, צריך להגדיר ממשקי API בגרסת בטא.

איך מוסיפים תכונות חדשות באמצעות Kubernetes API

אשכולות GKE מורכבים ממישור בקרה ומצמתי עובדים. מישור הבקרה חושף את שרת ה-API, שחושף את Kubernetes API כדי שמשתמשי קצה, יחד עם רכיבים פנימיים וחיצוניים, יוכלו לתקשר. ממשק ה-API הזה מתפתח עם הזמן, ותכונות חדשות מוצגות בשלבי אלפא או בטא, ואז בסופו של דבר עוברות לזמינות כללית (GA) או יוצאות משימוש ומוסרות בגרסאות משניות חדשות יותר.

אפשר להשתמש בממשקי API בגרסת אלפא רק עם אשכולות אלפא, אבל אפשר להשתמש בממשקי API בגרסת בטא עם כל סוגי האשכולות של GKE. החל מגרסה 1.24 של Kubernetes, ממשקי API חדשים בגרסת בטא מושבתים כברירת מחדל באשכולות חדשים. באשכולות קיימים שנוצרו בגרסה קודמת ל-1.24, ממשקי ה-API הקיימים בגרסת בטא נשארים מופעלים. אי אפשר להשבית באשכולות קיימים ממשקי API בגרסת בטא שהופעלו אוטומטית (הושקו בגרסה קודמת ל-1.24) או ממשקי API בגרסת בטא שהופעלו ידנית (הושקו בגרסה 1.24 ואילך). בכל האשכולות, ממשקי API קיימים בגרסת בטא שהושקו לפני גרסה 1.24 ממשיכים להיות מופעלים כברירת מחדל, וגם גרסאות חדשות של ממשקי API קיימים בגרסת בטא ממשיכות להיות מופעלות כברירת מחדל.

לדוגמה, אם ה-API‏ v1beta1 הושק ב-Kubernetes בגרסה 1.22, ואז הושקה גרסה חדשה של ה-API הזה בגרסת בטא, כמו v1beta3, ב-Kubernetes בגרסה 1.25, ה-API מופעל באופן אוטומטי. הסיבה לכך היא שמדובר בגרסה חדשה של API קיים בגרסת בטא, ולא ב-API חדש לגמרי בגרסת בטא. עם זאת, API חדש בגרסת בטא עם הגרסה v1beta1 שהוצגה ב-Kubernetes גרסה 1.24 ואילך מושבת כברירת מחדל.

כדי להשתמש בממשקי API בגרסת בטא שהושקו בגרסה 1.24 ואילך, צריך להגדיר ממשקי API בגרסת בטא לכל משאב בכל אשכול. אפשר להפעיל ממשקי API כשיוצרים אשכול או באשכול קיים. כדי לראות אילו ממשקי API בגרסת בטא זמינים לגרסת המשנה של האשכול, אפשר לעיין בממשקי API בגרסת בטא שזמינים.

אחרי שמפעילים ממשק API בגרסת בטא, הוא נשאר פעיל עד שממשק ה-API בגרסת הבטא יוצא משימוש והאשכול משודרג לגרסה המשנית שבה ממשק ה-API מוסר. כדי לראות אילו ממשקי API בגרסת בטא מופעלים באשכול, אפשר לעיין במאמר בנושא בדיקה של ממשקי API בגרסת בטא שמופעלים.

ממשקי API בגרסת בטא של Kubernetes ושערי תכונות של Kubernetes

שערי תכונות הם מנגנון נפרד להפעלת תכונות מממשקי API של Kubernetes, והם מנוהלים בצורה שונה על ידי אשכולות GKE. חלק מה-API של Kubernetes וחלק מהתכונות של Kubernetes פועלים יחד. חשוב לוודא שאתם מבינים את הקשר בין שערים ספציפיים לתכונות לבין ממשקי API. מידע נוסף זמין במאמר בנושא Feature gates.

ממשקי API זמינים בגרסת בטא

אתם יכולים להפעיל קבוצת משנה של ממשקי Kubernetes beta API באשכולות GKE. ממשקי API אחרים בגרסת בטא לא זמינים מהסיבות הבאות:

  • ה-API בגרסת הבטא מסתמך על תכונות Kubernetes שאינן זמינות ב-GA.
  • ממשק ה-API בגרסת הבטא לא מאובטח.
  • ממשק ה-API בגרסת בטא לא תואם לטייס אוטומטי.

בטבלה הבאה מפורטים ממשקי ה-API בגרסת בטא וגרסת המשנה התואמת שבה הם הוצגו:

גרסת Kubernetes ממשקי API בגרסת בטא שנוספו בגרסה המשנית הזו של Kubernetes זמין ב-GKE הערות
1.32
  • resource.k8s.io/v1beta1/deviceclasses
  • resource.k8s.io/v1beta1/resourceclaims
  • resource.k8s.io/v1beta1/resourceclaimtemplates
  • resource.k8s.io/v1beta1/resourceslices
  • resource.k8s.io/v1beta1/deviceclasses
  • resource.k8s.io/v1beta1/resourceclaims
  • resource.k8s.io/v1beta1/resourceclaimtemplates
  • resource.k8s.io/v1beta1/resourceslices

צריך להפעיל את כל ממשקי ה-API שמופיעים ברשימה resource.k8s.io בו-זמנית, וצריך לוודא שהצמתים משתמשים בממשקי ה-API החדשים בגרסת הבטא. ההגדרה הזו מפעילה את תכונת הבטא של הקצאת משאבים דינמית ב-Kubernetes באשכול GKE. מידע נוסף על הקצאת משאבים דינמית

1.31
  • storage.k8s.io/v1beta1/volumeattributesclasses
  • networking.k8s.io/v1beta1/ipaddresses
  • networking.k8s.io/v1beta1/servicecidrs
  • storage.k8s.io/v1beta1/volumeattributesclasses
  • networking.k8s.io/v1beta1/ipaddresses
  • networking.k8s.io/v1beta1/servicecidrs

צריך להפעיל את שני ממשקי ה-API‏ networking.k8s.io בו-זמנית, וצריך לוודא שהצמתים משתמשים בממשקי ה-API החדשים בגרסת הבטא. ההגדרה הזו מפעילה את תכונת הבטא Multiple Service CIDRs של Kubernetes באשכול GKE שפועלת בו גרסה 1.31.1-gke.1361000 ואילך. פרטים נוספים זמינים בהערות הגרסה של GKE מ-4 באוקטובר 2024.

1.29
  • ללא
  • admissionregistration.k8s.io/v1beta1/validatingadmissionpolicies
  • admissionregistration.k8s.io/v1beta1/validatingadmissionpolicybindings
חובה להפעיל את שני ממשקי ה-API בו-זמנית. ההגדרה הזו מפעילה את תכונת הבטא Validating Admission Policy.
1.28
  • admissionregistration.k8s.io/v1beta1/validatingadmissionpolicies
  • admissionregistration.k8s.io/v1beta1/validatingadmissionpolicybindings
  • ללא
1.27
  • authentication.k8s.io/v1beta1/selfsubjectreviews
  • authentication.k8s.io/v1beta1/selfsubjectreviews

נקודות שכדאי לשים לב אליהן לפני שמשתמשים בממשקי API בגרסת בטא

ממשקי API בגרסת בטא של Kubernetes כפופים למדיניות ההוצאה משימוש של Kubernetes. כשמוציאים משימוש API בגרסת בטא, צריך להפסיק את השימוש בו. מידע נוסף זמין במאמר הוצאה משימוש של ממשקי API בגרסת בטא.

לפני שמתחילים

לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:

  • מפעילים את ממשק Google Kubernetes Engine API.
  • הפעלת Google Kubernetes Engine API
  • כדי להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את gcloud CLI. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה gcloud components update כדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.

הגדרת ממשקי API בגרסת בטא

ממשקי API בגרסת בטא מופעלים לכל משאב בכל אשכול. אפשר להפעיל ממשקי API כשיוצרים אשכול או באשכול קיים.

כדי לכלול ברשימה משאב של API בגרסת בטא בפקודות האלה, משתמשים בייצוג {group}/{version}/{resource}. הגרסה חייבת להיות גרסת בטא. דוגמה לייצוג תקין כזה היא authentication.k8s.io/v1beta1/selfsubjectreviews.

בפקודות שבקטע הבא, מחליפים את המשתנים הבאים:

  • CLUSTER_NAME: השם של האשכול שרוצים לעדכן.
  • LIST_OF_APIS: רשימה מופרדת בפסיקים של ממשקי ה-API בגרסת בטא שרוצים להפעיל.
  • CONTROL_PLANE_LOCATION: המיקום של מישור הבקרה של האשכול ב-Compute Engine. מציינים אזור לאשכולות אזוריים או אזור זמין לאשכולות אזוריים.

יצירת אשכול חדש עם ממשקי API בגרסת בטא

יוצרים אשכול חדש עם רשימה של ממשקי API בגרסת בטא שמופעלים:

gcloud container clusters create-auto CLUSTER_NAME  \
    --enable-kubernetes-unstable-apis=LIST_OF_APIS \
    --location=CONTROL_PLANE_LOCATION

הפעלת ממשקי API בגרסת בטא באשכול קיים

כדי להפעיל רשימה של ממשקי API בגרסת בטא באשכול קיים:

gcloud container clusters update CLUSTER_NAME  \
    --enable-kubernetes-unstable-apis=LIST_OF_APIS \
    --location=CONTROL_PLANE_LOCATION

מוודאים שהצמתים משתמשים בממשקי ה-API החדשים בגרסת בטא

כדי להשתמש בחלק מתכונות הבטא, צריך להפעיל את התכונה גם ב-kubelet שפועל בצמתי העובדים.

כדי להשתמש בתכונות החדשות של API בגרסת בטא עם עומסי עבודה שפועלים בצמתי העובדים, צריך ש-GKE יחיל את השינוי על הצמתים:

  • בצמתים במאגרי צמתים רגילים חדשים ובקבוצות של צמתים ב-Autopilot, ‏ GKE מפעיל את ממשקי ה-API בגרסת בטא.
  • בצמתים חדשים וקיימים במאגרי צמתים קיימים מסוג Standard, או בקבוצות קיימות של צמתים ב-Autopilot, ‏ GKE מחיל את השינוי כשהצמתים נוצרים מחדש במהלך שדרוגי צמתים או סוגים אחרים של עדכוני צמתים. כדי להחיל את השינוי באופן מיידי על צמתים קיימים במאגר צמתים של אשכול רגיל, אפשר לשדרג ידנית את מאגר הצמתים לגרסה מאוחרת יותר של GKE. ביצוע שדרוג במקום לא יחיל את השינוי.

השבתת ממשקי API בגרסת בטא באשכול קיים

אי אפשר להשבית ממשקי API בגרסת בטא שכבר הופעלו באשכול. ממשקי API בגרסת בטא נשארים זמינים עד שהם מוצאים משימוש והאשכול משודרג לגרסת המשנה שבה ה-API מוסר. מידע נוסף זמין במאמר הוצאה משימוש של ממשקי API בגרסת בטא.

בדיקה של ממשקי API בגרסת בטא שמופעלים

כדי לבדוק אילו ממשקי API בגרסת בטא מופעלים באשכול GKE:

gcloud container clusters describe CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --format="value(enableK8sBetaApis.enabledApis)"

הוצאה משימוש של ממשקי API בגרסת בטא

אחרי שמפעילים ממשק API בגרסת בטא, הוא נשאר פעיל עד שממשק ה-API בגרסת הבטא יוצא משימוש והאשכול משודרג לגרסה המשנית שבה ה-API מוסר.

ממשקי API בגרסת בטא זמינים בדרך כלל לשלוש גרסאות משניות לפני שהם מוצאים משימוש לטובת גרסת בטא חדשה, גרסה יציבה או ללא תחליף. גרסאות בטא של ממשקי API מוסרות שלוש גרסאות משניות אחרי שהן מוצאות משימוש. אם אתם משתמשים ב-API בגרסת בטא שהוצא משימוש ויוסר בגרסה משנית של Kubernetes שצפויה לצאת, אתם צריכים לעבור ל-API נתמך כדי שתוכלו לשדרג את האשכול לגרסה המשנית שבה ה-API בגרסת הבטא יוסר. מידע נוסף זמין במאמר איך הוצאה משימוש של Kubernetes פועלת עם GKE.

ב-GKE התהליך הזה פשוט יותר כי המערכת מנסה לזהות את השימוש בממשקי API של Kubernetes שהוצאו משימוש. אם GKE מזהה שימוש ב-API שהוצא משימוש, הוא משהה את השדרוגים האוטומטיים לגרסה המשנית שבה ה-API הזה מוסר. ‫GKE גם משתף תובנות והמלצות לגבי הוצאה משימוש כדי להודיע לכם על השימוש ב-API שהוצא משימוש באשכול שלכם, כך שתוכלו לבצע פעולות שיאפשרו את המשך השדרוגים. מידע נוסף זמין במאמר הערכה של החשיפה להוצאה משימוש של Kubernetes וצמצום שלה.

בטבלה של הוצאה משימוש של Kubernetes API מפורטת רשימה מלאה של ממשקי API שהוצאו משימוש, ומוסבר אם GKE מזהה שימוש בהם.

המאמרים הבאים