במאמר הזה מוסבר איך לשדרג את גרסת Kubernetes של אשכול Kubernetes עם בידוד פיזי (air-gapped) ב-Google Distributed Cloud (GDC). כדי לוודא שהאשכולות כוללים את התכונות והתיקונים האחרונים של Kubernetes, צריך לתכנן שדרוגים שוטפים שלהם.
המסמך הזה מיועד לקהלים כמו אדמינים של IT, מהנדסי אבטחה ואדמינים של רשתות בקבוצת האדמינים של הפלטפורמה, שאחראים על ניהול משאבי Kubernetes בארגון שלהם. למידע נוסף, אפשר לעיין במאמר בנושא קהלים ב-GDC עם air gap.
לפני שמתחילים
כדי להשלים את המשימות שמתוארות במאמר הזה, צריך לבקש את ההרשאות הנדרשות ולהכין את הסביבה.
שליחת בקשה לתפקידי IAM
כדי לקבל את ההרשאות שדרושות לשדרוג אשכול Kubernetes, צריך להיות לכם תפקידים ספציפיים. צריך לבקש תפקידים בהיקף הפרויקט והארגון.
תפקידים בארגון
כדי להציג את רשימת הגרסאות הזמינות לשדרוג של אשכול Kubernetes, צריך לבקש מאדמין IAM בארגון להקצות לכם את התפקיד אדמין של אשכול משתמשים (user-cluster-admin). התפקיד הזה לא קשור למרחב שמות.
אם אתם מנהלים אשכול רגיל ולא מצליחים לקבל את תפקיד האדמין של אשכול המשתמשים מקבוצת האדמינים של הפלטפורמה, אתם צריכים לבקש מהם לספק לכם את רשימת הגרסאות הזמינות של שדרוג Kubernetes.
תפקידים בפרויקט
כדי ליצור, למחוק, לערוך או להציג שדרוגים של אשכולות, צריך לבקש מהאדמין של IAM בפרויקט להקצות לכם את התפקיד אדמין אשכול רגיל (standard-cluster-admin). התפקיד הזה משויך למרחב השמות של הפרויקט.
הכנת הסביבה
כדי להריץ פקודות מול אשכול Kubernetes באמצעות ה-API, צריך לוודא שיש לכם את המשאבים הבאים:
מאתרים את שם אשכול Kubernetes או שואלים את אחד מחברי קבוצת האדמינים של הפלטפורמה מה שם האשכול.
משתמשים בשם של אשכול Kubernetes כדי להחליף את
CLUSTER_NAMEבהוראות האלה.נכנסים לחשבון ויוצרים את קובץ ה-kubeconfig של שרת ה-API לניהול.
משתמשים בנתיב kubeconfig של שרת ה-API לניהול כדי להחליף את
MANAGEMENT_API_SERVERבהוראות האלה.
שדרוג אשכול Kubernetes
אפשר להשתמש ב-API UserClusterUpgradeRequest כדי לשדרג אשכול Kubernetes קיים.
כדי לשדרג אשכול Kubernetes באמצעות ה-API, מבצעים את השלבים הבאים:
כדי להציג את הגרסאות הזמינות לשדרוג Kubernetes, מדפיסים את הערך
kubernetesVersionשל האובייקטיםUserClusterMetadata:kubectl --kubeconfig MANAGEMENT_API_SERVER \ get userclustermetadata -o=custom-columns='TARGET_VERSION:.spec.kubernetesVersion'מחליפים את הערך
MANAGEMENT_API_SERVERבנתיב לקובץ kubeconfig של שרת Management API.הפקודה מחזירה רשימה של גרסאות Kubernetes זמינות:
TARGET_VERSION 1.30.1000-gke.85שימו לב לגרסת Kubernetes מהפלט הקודם שאתם רוצים לשדרג את האשכול אליה. הגרסה
targetVersionשציינתם בבקשת השדרוג בשלב הבא צריכה להיות אחת מהגרסאות הזמינות האלה.כדי לבקש שדרוג של האשכול, יוצרים משאב
UserClusterUpgradeRequest:kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF apiVersion: cluster.gdc.goog/v1 kind: UserClusterUpgradeRequest metadata: name: CLUSTER_NAME namespace: CLUSTER_NAMESPACE spec: clusterRef: name: CLUSTER_NAME targetVersion: TARGET_VERSION EOFמחליפים את מה שכתוב בשדות הבאים:
-
MANAGEMENT_API_SERVER: הנתיב לקובץ kubeconfig של שרת ה-API לניהול. -
CLUSTER_NAME: השם של אשכול Kubernetes לשדרוג, למשלuser-vm-2. -
CLUSTER_NAMESPACE: מרחב השמות של אשכול Kubernetes. במקרה של אשכולות משותפים, צריך להשתמש במרחב השמותplatform. במקרה של אשכולות רגילים, משתמשים במרחב השמות של הפרויקט של האשכול. -
TARGET_VERSION: גרסת היעד לשדרוג שזוהתה בשלב הקודם, למשל1.30.1000-gke.85.
זמן השדרוג הממוצע של אשכול Kubernetes הוא כ-20 דקות.
-
כדי לוודא שהשדרוג של האשכול בוצע, עוקבים אחרי
UserClusterUpgradeRequestהמשאב:kubectl --kubeconfig MANAGEMENT_API_SERVER \ describe userclusterupgraderequest CLUSTER_NAME \ -n CLUSTER_NAMESPACEמחליפים את מה שכתוב בשדות הבאים:
-
MANAGEMENT_API_SERVER: הנתיב לקובץ kubeconfig של שרת ה-API לניהול. -
CLUSTER_NAME: השם של אשכול Kubernetes לשדרוג, למשלuser-vm-2. -
CLUSTER_NAMESPACE: מרחב השמות של אשכול Kubernetes. במקרה של אשכולות משותפים, צריך להשתמש במרחב השמותplatform. במקרה של אשכולות רגילים, משתמשים במרחב השמות של הפרויקט של האשכול.
בודקים את הקטע
Specבפלט. היא מכילה אתCurrent Versionו-Target Version. אם הערכים שלCurrent Versionו-Target Versionשונים, השדרוג עדיין מתבצע.Spec: ... Current Version: 1.29.500-gke.60 Target Version: 1.30.1000-gke.85 Status: Conditions: - Message: Upgrade is in progress Reason: UpgradeInProgress Status: "False" Type: Succeededהשדרוג הושלם בהצלחה אם התנאי
SucceededהואTrueוהערךCurrent Versionזהה לערךTarget Version.אם לתנאי
Succeededיש סטטוס שלFalse, השדרוג נכשל. אם נתקלתם בשגיאות שקשורות לשדרוג של אשכול Kubernetes, פנו לקבוצת מפעילים של התשתית לקבלת עזרה נוספת.-
אימות של רכיבי משנה באשכול אחרי שדרוג
אחרי שמשדרגים את אשכול Kubernetes, מומלץ לוודא שכל רכיבי המשנה של האשכול תקינים.
בודקים אם יש כשלים ברכיבי משנה באשכול:
מוודאים שאין רכיבי משנה שמוצגת בהם
ReconciliationErrorההודעה:kubectl --kubeconfig MANAGEMENT_API_SERVER \ get subcomponent -n CLUSTER_NAME -o json | jq -r \ '.items[] | select(.status.conditions[]?.reason == "ReconciliationError") | select(.status.featureDisabled != true) | "Sub-Component: \(.metadata.name) - \(.status.conditions[]?.message)"'אם הפלט מחזיר רכיבי משנה, פנו לקבוצת מפעיל התשתית לקבלת עזרה נוספת.
מוודאים שאין רכיבי משנה שמוצגת בהם ההודעה
Reconciling:kubectl --kubeconfig MANAGEMENT_API_SERVER \ get subcomponent -n CLUSTER_NAME -o json | jq -r \ '.items[] | select(.status.conditions[]?.reason == "Reconciling") | select(.status.featureDisabled != true) | select( "\(.status)" | contains("PreinstallPending") | not) | "Sub-Component: \(.metadata.name) - \(.status.conditions[]?.message)"'באשכולות Kubernetes עם שלושה צמתים של מישור הבקרה ושלושה צמתים עובדים, זמן השדרוג הוא כ-20 דקות. אם אחרי 20 דקות עדיין מוצגים רכיבי משנה במצב
Reconciling, צריך לפנות לקבוצת מפעילים של התשתית לקבלת עזרה נוספת.