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

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

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

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

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

בקשת תפקידים ב-IAM

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

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

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

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

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

הכנת הסביבה

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

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

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

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

עדכון של משאב StatefulSet

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

כדי לעדכן אובייקט 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.

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