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

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

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

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

אפשר להשתמש בממשקי API בגרסת אלפא רק עם אשכולות אלפא, אבל אפשר להשתמש בממשקי API בגרסת בטא עם כל סוגי האשכולות של GKE. החל מ-Kubernetes בגרסה 1.24, ממשקי API חדשים בגרסת בטא מושבתים כברירת מחדל באשכולות חדשים. באשכולות קיימים שנוצרו בגרסה קודמת ל-1.24, ממשקי ה-API הקיימים בגרסת בטא נשארים מופעלים. אי אפשר להשבית באשכולות קיימים ממשקי API בגרסת בטא שהופעלו אוטומטית (הוצגו בגרסה קודמת ל-1.24) או שהופעלו ידנית (הוצגו בגרסה 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

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

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

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

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

בטבלה הבאה מפורטים ממשקי ה-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 בגרסת בטא

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

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

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

  • מפעילים את ממשק ה-API של Google Kubernetes Engine.
  • הפעלת Google Kubernetes Engine API
  • אם רוצים להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את ה-CLI של gcloud. אם התקנתם בעבר את ה-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 מזהה שימוש בהם.

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