‫Kubernetes 1.25 deprecated APIs

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

ממשקי API שהוסרו בגרסה 1.25

רוב ממשקי ה-API שהוצאו משימוש ב-Kubernetes גרסה 1.25 הם ממשקי API שהיו בגרסת בטא ועברו מאז לגרסה זמינה לכולם (GA) (לדוגמה, v1beta1) (לדוגמה, v1). ממשקי ה-API בגרסת GA מספקים התחייבויות תאימות לטווח ארוך יותר, ומומלץ להשתמש בהם במקום בממשקי ה-API שהוצאו משימוש בגרסת בטא.

אפשר להשתמש בממשקי GA API כדי ליצור אינטראקציה עם כל האובייקטים הקיימים של ממשקי API שעברו לשלב הזמינות הכללית.

EndpointSlice

גרסת הבטא של API‏ (discovery.k8s.io/v1beta1) של EndpointSlice לא זמינה יותר החל מגרסה 1.25. ממשק ה-API הזה הוצא משימוש בגרסה 1.21.

  • העברת מניפסטים ולקוחות API לשימוש בגרסת discovery.k8s.io/v1 של API.
  • בטבלה הבאה מתוארים השינויים הבולטים בגרסה של GA API:

    שדה שינוי
    endpoints[*].topology["kubernetes.io/hostname"] שימוש ב-endpoints[*].nodeName.
    endpoints[*].topology["topology.kubernetes.io/zone"] שימוש ב-endpoints[*].zone.
    endpoints[*].topology הוחלף ב-endpoints[*].deprecatedTopology שלא ניתן לכתיבה בגרסה 1.

PodDisruptionBudget

גרסת הבטא של PodDisruptionBudget (מספר הגרסה policy/v1beta1) לא זמינה יותר החל מגרסה 1.25. ממשק ה-API הזה הוצא משימוש בגרסה 1.21.

  • מעבירים את המניפסטים ואת לקוחות ה-API לשימוש בגרסת policy/v1 של ה-API.
  • בטבלה הבאה מתוארים השינויים הבולטים בגרסה של GA API:

    שדה שינוי
    spec.selector אם כותבים ערך ריק ({}) ב-policy/v1 PodDisruptionBudget, כל ה-pods במרחב השמות נבחרים. אם לא מגדירים ערך, עדיין לא נבחרים פודים.

CronJob

גרסת הבטא של API‏ (batch/v1beta1) של CronJob לא מופעלת יותר החל מגרסה 1.25. ממשק ה-API הזה הוצא משימוש בגרסה 1.21. מעבירים את קובצי המניפסט ואת לקוחות ה-API לשימוש בגרסת batch/v1 API.

PodSecurityPolicy

גרסת הבטא של PodSecurityPolicy (מספר הגרסה policy/v1beta1) לא זמינה יותר החל מגרסה 1.25. ממשק ה-API הזה הוצא משימוש בגרסה 1.21.

מידע נוסף זמין במאמר בנושא הוצאה משימוש של PodSecurityPolicy.

RuntimeClass

גרסת הבטא של RuntimeClass (מספר הגרסה node.k8s.io/v1beta1) לא זמינה יותר החל מגרסה 1.25. ממשק ה-API הזה הוצא משימוש בגרסה 1.20. מעבירים מניפסטים ולקוחות API לשימוש בגרסת node.k8s.io/v1 של API.

אירועים

גרסת הבטא של Events (מספר הגרסה events.k8s.io/v1beta1) לא זמינה יותר החל מגרסה 1.25. ממשק ה-API הזה הוצא משימוש בגרסה 1.19.

  • מעבירים מניפסטים ולקוחות API לשימוש בגרסת v1 של ה-API או בגרסת events.k8s.io/v1 של ה-API.
  • בטבלה הבאה מתוארים השינויים הבולטים בגרסה של GA API:

    שדה שינוי
    type מוגבל לNormal ולWarning.
    involvedObject השם שונה ל-regarding.
    ‫action, reason, reportingController וגם reportingInstance כשיוצרים אירועים, חובה למלא את השדות האלה.
    firstTimestamp שונה ל-deprecatedFirstTimestamp ואין יותר אפשרות להשתמש בו באירועים חדשים. במקום זאת, אתם צריכים להשתמש ב-eventTime.
    lastTimestamp שונה ל-deprecatedLastTimestamp ואין יותר אפשרות להשתמש בו באירועים חדשים. במקום זאת, אתם צריכים להשתמש ב-series.lastObservedTime.
    count השם שונה ל-deprecatedCount ואי אפשר יותר להשתמש בו באירועים חדשים. במקום זאת, אתם צריכים להשתמש ב-series.count.
    source.component שונה ל-deprecatedSource.component ואין יותר אפשרות להשתמש בו באירועים חדשים. במקום זאת, אתם צריכים להשתמש ב-reportingController.
    source.host שונה ל-deprecatedSource.host ולא ניתן יותר להשתמש בו באירועים חדשים. במקום זאת, אתם צריכים להשתמש ב-reportingInstance.

HorizontalPodAutoscaler

גרסת הבטא של HorizontalPodAutoscaler (autoscaling/v2beta1) לא זמינה יותר החל מגרסה 1.25. ממשק ה-API הזה הוצא משימוש בגרסה 1.23. מעבירים מניפסטים ולקוחות API לשימוש בגרסת API ‏autoscaling/v2 HorizontalPodAutoscaler.

הכנה לשדרוג לגרסה 1.25

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

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

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

איתור אשכולות באמצעות ממשקי API שהוצאו משימוש

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

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

איתור לקוחות API שמבצעים קריאות כתיבה ל-APIs שיצאו משימוש

במקרה של אשכולות שמופעל בהם Google Cloud Observability, אפשר להשתמש בשאילתת יומן הביקורת של פעילות האדמין הבאה כדי להציג את השימוש בממשקי API שהוצאו משימוש על ידי סוכני משתמשים שלא מנוהלים על ידי Google:

resource.type="k8s_cluster"
labels."k8s.io/removed-release"="DEPRECATED_API_MINOR_VERSION"
protoPayload.authenticationInfo.principalEmail:("system:serviceaccount" OR "@")
protoPayload.authenticationInfo.principalEmail!~("system:serviceaccount:kube-system:")

מחליפים את DEPRECATED_API_MINOR_VERSION בגרסה המשנית שבה הוסר ה-API שהוצא משימוש, לדוגמה 1.22.

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

איתור לקוחות API ששולחים קריאות קריאה ל-APIs שיצאו משימוש

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

פועלים לפי ההוראות להגדרת יומני ביקורת של גישה לנתונים באמצעות מסוף Google Cloud . במסוף Google Cloud , בוחרים באפשרות Kubernetes Engine API. בכרטיסייה Log Types (סוגי יומנים) בחלונית המידע, בוחרים באפשרות Admin Read ובאפשרות Data Read.

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

שדרוג רכיבים של צד שלישי

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

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

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

מומלץ לבצע את השדרוג הזה ואת שדרוג הגרסה של GKE באשכול staging כדי לעקוב אחרי שיבושים לפני שמשדרגים את אשכולות הייצור.

עדכון אשכולות שהושפעו מהוצאה משימוש

כדי לשדרג אשכולות שהושפעו מהוצאה משימוש, פועלים לפי השלבים הבאים:

  1. בודקים אילו סוכני משתמשים משתמשים בממשקי ה-API שהוצאו משימוש ביומנים.
  2. צריך לעדכן את סוכני המשתמש שמשתמשים בממשקי ה-API שהוצאו משימוש כך שישתמשו בגרסאות נתמכות של API.
  3. מעדכנים לגרסאות האחרונות את כל התוכנות של צד שלישי שקוראות לממשקי API שהוצאו משימוש.
  4. כדי להקטין את הסיכון לשיבושים כשממשקי API שהוצאו משימוש כבר לא זמינים, מומלץ לשדרג אשכול בדיקה ולבדוק את האפליקציה בסביבת בדיקה לפני שמשדרגים את אשכול הייצור.
  5. אם אי אפשר לעדכן את סוכן המשתמש המושפע, צריך לשדרג אשכול בדיקה נפרד כדי לבדוק אם השדרוג גורם לשיבושים. אם השדרוג לא גורם לשיבושים, אפשר לשדרג את האשכול באופן ידני.
  6. אחרי שמעדכנים את כל סוכני המשתמשים, מערכת GKE מחכה 30 ימים עד שלא יזוהה יותר שימוש בממשקי API שהוצאו משימוש, ואז מבטלת את החסימה של שדרוגים אוטומטיים. שדרוגים אוטומטיים מתבצעים בהתאם ללוח זמנים לפרסום.

משאבים

מידע נוסף זמין במסמכי התיעוד של Kubernetes ב-OSS: