עדכון עומסי עבודה עם שמירת מצב

במאמר הזה מוסבר איך לעדכן עומסי עבודה קיימים עם שמירת מצב שפועלים באשכול Kubernetes עם בידוד פיזי (air-gapped) ב-Google Distributed Cloud ‏(GDC). ככל שהאפליקציה מתפתחת על סמך השימוש במשאבים והאופטימיזציות של ההגדרות, צריך לעדכן את מפרט ה-Pod הבסיסי באשכול Kubernetes כדי לשקף את השינויים בעומס העבודה. מידע נוסף על תכנון עדכונים לעומסי עבודה עם שמירת מצב זמין במסמכי Kubernetes בנושא אסטרטגיות עדכון.

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

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

כדי להשלים את המשימות שמתוארות במאמר הזה, צריך לבקש את ההרשאות הנדרשות ולהכין את הסביבה.

שליחת בקשה לתפקידי IAM

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

תפקידים משותפים באשכול

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

תפקידים רגילים באשכול

כדי ליצור, למחוק, לערוך או להציג עומסי עבודה באשכול רגיל, צריך לבקש מאדמין IAM בפרויקט להקצות לכם את התפקיד מפתח אשכול (cluster-developer). התפקיד הזה משויך למרחב השמות של הפרויקט.

הכנת הסביבה

כדי להריץ פקודות מול אשכול Kubernetes באמצעות ה-API, צריך לוודא שיש לכם את המשאבים הבאים:

  • מאתרים את שם אשכול Kubernetes או שואלים חבר בקבוצת האדמינים של הפלטפורמה מה שם האשכול.

  • נכנסים לחשבון ויוצרים את קובץ ה-kubeconfig לאשכול Kubernetes.

  • משתמשים בנתיב kubeconfig של אשכול Kubernetes כדי להחליף את KUBERNETES_CLUSTER_KUBECONFIG בהוראות האלה.

עדכון משאב StatefulSet

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

כדי לעדכן אובייקט StatefulSet, מריצים את הפקודה:

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG -n NAMESPACE \
    apply -f STATEFULSET_FILE

מחליפים את מה שכתוב בשדות הבאים:

  • KUBERNETES_CLUSTER_KUBECONFIG: קובץ ה-kubeconfig של האשכול שמריץ את עומסי העבודה עם שמירת מצב.

  • NAMESPACE: מרחב השמות. במקרה של אשכולות משותפים, צריך להשתמש במרחב שמות של פרויקט. במקרים של אשכולות רגילים, אפשר להשתמש בכל מרחב שמות.

  • STATEFULSET_FILE: השם של קובץ המניפסט המעודכן StatefulSet.

הפקודה kubectl apply מחילה קובץ מניפסט על משאב. אם המשאב שצוין לא קיים, הפקודה יוצרת אותו.

בדיקת פריסת עדכון של משאב StatefulSet

אפשר לראות מידע מפורט על סטטוס ההשקה של העדכון ועל ההיסטוריה של אובייקט StatefulSet. אפשר גם לבטל את ההשקה של אובייקט StatefulSet.

בדיקת ההשקה

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

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG -n NAMESPACE \
    rollout status statefulset STATEFULSET_NAME
  • KUBERNETES_CLUSTER_KUBECONFIG: קובץ ה-kubeconfig של האשכול שמריץ את עומסי העבודה עם שמירת מצב.

  • NAMESPACE: מרחב השמות. במקרה של אשכולות משותפים, צריך להשתמש במרחב שמות של פרויקט. במקרים של אשכולות רגילים, אפשר להשתמש בכל מרחב שמות.

  • STATEFULSET_NAME: השם של אובייקט StatefulSet המעודכן.

הצגת היסטוריית ההשקה

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

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG -n NAMESPACE \
    rollout history statefulset STATEFULSET_NAME
  • KUBERNETES_CLUSTER_KUBECONFIG: קובץ ה-kubeconfig של האשכול שמריץ את עומסי העבודה עם שמירת מצב.

  • NAMESPACE: מרחב השמות. במקרה של אשכולות משותפים, צריך להשתמש במרחב שמות של פרויקט. במקרים של אשכולות רגילים, אפשר להשתמש בכל מרחב שמות.

  • STATEFULSET_NAME: השם של אובייקט StatefulSet המעודכן.

ביטול השקה

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

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG -n NAMESPACE \
    rollout undo statefulset STATEFULSET_NAME

מחליפים את מה שכתוב בשדות הבאים:

  • KUBERNETES_CLUSTER_KUBECONFIG: קובץ ה-kubeconfig של האשכול שמריץ את עומסי העבודה עם שמירת מצב.

  • NAMESPACE: מרחב השמות. במקרה של אשכולות משותפים, צריך להשתמש במרחב שמות של פרויקט. במקרים של אשכולות רגילים, אפשר להשתמש בכל מרחב שמות.

  • STATEFULSET_NAME: השם של אובייקט StatefulSet.

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