בדף הזה מוסבר איך להכין אשכולות לשדרוגים ל-GKE בגרסה 1.25. אפשר למצוא לקוחות API שמבצעים קריאות לממשקי API שיצאו משימוש והוסרו בגרסה 1.25 ולעדכן את הלקוחות האלה כדי שישתמשו בממשקי GA API. מידע מפורט יותר זמין במדריך למיגרציה של ממשקי API שיצאו משימוש ב-Kubernetes.
ממשקי API שהוסרו בגרסה 1.25
רוב ממשקי ה-API שהוצאו משימוש ב-Kubernetes גרסה 1.25 הם ממשקי API שהיו בגרסת בטא ועברו מאז מגרסת בטא (לדוגמה, v1beta1) לגרסה זמינה לכלל המשתמשים (GA) (לדוגמה, v1). ממשקי ה-API בגרסת GA מספקים ערבויות תאימות לטווח ארוך יותר, ומומלץ להשתמש בהם במקום בממשקי ה-API שהוצאו משימוש בגרסת בטא.
אפשר להשתמש בממשקי ה-API של GA כדי ליצור אינטראקציה עם כל האובייקטים הקיימים של ממשקי 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
גרסת הבטא של API (policy/v1beta1) של PodDisruptionBudget לא זמינה יותר החל מגרסה 1.25. ממשק ה-API הזה הוצא משימוש בגרסה 1.21.
- מעבירים מניפסטים ולקוחות API לשימוש בגרסת
policy/v1API. בטבלה הבאה מתוארים השינויים הבולטים בגרסת GA API:
שדה שינוי spec.selectorערך ריק ( {}) שנכתב ב-policy/v1 PodDisruptionBudgetבוחר את כל ה-pods במרחב השמות. גם אם לא מגדירים ערך, לא נבחרים תרמילים.
CronJob
גרסת הבטא של API (batch/v1beta1) של CronJob לא מוגשת יותר החל מגרסה 1.25. ממשק ה-API הזה הוצא משימוש בגרסה 1.21. העברה של קובצי מניפסט ולקוחות API לשימוש בגרסת batch/v1 API.
PodSecurityPolicy
גרסת הבטא של API (policy/v1beta1) של PodSecurityPolicy לא זמינה יותר החל מגרסה 1.25. ממשק ה-API הזה הוצא משימוש בגרסה 1.21.
מידע נוסף זמין במאמר בנושא הוצאה משימוש של PodSecurityPolicy.
RuntimeClass
גרסת הבטא של API (node.k8s.io/v1beta1) של RuntimeClass לא זמינה יותר החל מגרסה 1.25. ממשק ה-API הזה הוצא משימוש בגרסה 1.20. מעבירים מניפסטים ולקוחות API לשימוש בגרסת node.k8s.io/v1 API.
אירועים
גרסת הבטא של API (events.k8s.io/v1beta1) של Events לא זמינה יותר החל מגרסה 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
גרסת הבטא של API (autoscaling/v2beta1) של HorizontalPodAutoscaler לא זמינה יותר החל מגרסה 1.25. ממשק ה-API הזה הוצא משימוש בגרסה 1.23.
צריך להעביר את קובצי המניפסט ואת לקוחות ה-API לשימוש בautoscaling/v2 HorizontalPodAutoscalerגרסת ה-API.
הכנה לשדרוג לגרסה 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 שמבצעים קריאות כתיבה ל-API שיצאו משימוש
במקרה של אשכולות שמופעל בהם 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 שמבצעים קריאות קריאה ל-API שהוצאו משימוש
כברירת מחדל, ביומני הביקורת מוצגות רק קריאות כתיבה אל ממשקי ה-API שהוצאו משימוש. כדי להציג גם קריאות קריאה לממשקי API שיצאו משימוש, צריך להגדיר יומני ביקורת של גישה לנתונים.
פועלים לפי ההוראות להגדרת יומני ביקורת של גישה לנתונים באמצעות מסוף Google Cloud . במסוף Google Cloud , בוחרים באפשרות Kubernetes Engine API. בכרטיסייה Log Types (סוגי יומנים) בחלונית המידע, בוחרים באפשרות Admin Read ובאפשרות Data Read.
אחרי שמפעילים את היומנים האלה, אפשר להשתמש בשאילתה המקורית כדי לראות גם קריאות קריאה וגם קריאות כתיבה לממשקי ה-API שהוצאו משימוש.
שדרוג רכיבים של צד שלישי
תובנות לגבי הוצאה משימוש יכולות להציג תוצאות לגבי סוכנים של צד שלישי שמבצעים קריאות לממשקי API שהוצאו משימוש באשכול שלכם.
כדי לפתור בעיות שקשורות לסוכנים של צד שלישי שקוראים לממשקי API שיצאו משימוש, מומלץ לפעול לפי השיטות המומלצות הבאות:
- כדאי לבדוק עם ספק התוכנה של הצד השלישי אם יש גרסה מעודכנת.
- משדרגים את תוכנת הצד השלישי לגרסה העדכנית ביותר. אם אי אפשר לשדרג את התוכנה, כדאי לבדוק אם שדרוג GKE לגרסה שבה הוסרו ממשקי ה-API שהוצאו משימוש ישבית את השירות.
מומלץ לבצע את השדרוג הזה ואת שדרוג הגרסה של GKE באשכול staging כדי לעקוב אחרי שיבושים לפני שמשדרגים את אשכולות הייצור.
עדכון אשכולות שהושפעו מהוצאה משימוש
כדי לשדרג אשכולות שהושפעו מהוצאה משימוש, פועלים לפי השלבים הבאים:
- בודקים אילו סוכני משתמשים משתמשים בממשקי ה-API שהוצאו משימוש ביומנים.
- צריך לעדכן את סוכני המשתמש שמשתמשים בממשקי ה-API שהוצאו משימוש כך שישתמשו בגרסאות נתמכות של API.
- מעדכנים לגרסאות האחרונות את כל תוכנות הצד השלישי שקוראות לממשקי API שיצאו משימוש.
- כדי להפחית את הסיכון לשיבושים כשממשקי API שהוצאו משימוש כבר לא זמינים, כדאי לשדרג אשכול בדיקה ולבדוק את האפליקציה בסביבת בדיקה לפני שמשדרגים את אשכול הייצור.
- אם אי אפשר לעדכן סוכן משתמש מושפע, אפשר לשדרג אשכול בדיקה נפרד כדי לבדוק אם השדרוג גורם לשיבושים. אם השדרוג לא גורם לשיבושים, אפשר לשדרג את האשכול באופן ידני.
- אחרי שמעדכנים את כל סוכני המשתמשים, מערכת GKE מחכה עד שלא תזהה יותר שימוש בממשקי API שהוצאו משימוש במשך 30 ימים, ואז מבטלת את החסימה של השדרוגים האוטומטיים. שדרוגים אוטומטיים מתבצעים בהתאם ללוח זמנים לפרסום.
משאבים
מידע נוסף זמין במסמכי התיעוד של Kubernetes ב-OSS:
- בלוג Kubernetes: הסרות ושינויים משמעותיים ב-Kubernetes 1.25
- הערות לגבי הגרסה Kubernetes 1.25
- מדריך להעברה של API שיצא משימוש ב-Kubernetes