עדכון עומסי עבודה (workloads) ללא שמירת מצב

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

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

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

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

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

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

הכנת הסביבה

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

  1. מאתרים את שם אשכול Kubernetes או שואלים את מנהל הפלטפורמה מה שם האשכול.

  2. אם אין לכם קובץ kubeconfig, אתם צריכים להיכנס וליצור אותו עבור אשכול Kubernetes.

  3. משתמשים בנתיב kubeconfig של אשכול Kubernetes כדי להחליף את הערך CLUSTER_KUBECONFIG בהוראות האלה.

עדכון הפריסה

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

kubectl --kubeconfig CLUSTER_KUBECONFIG -n NAMESPACE \
    apply -f DEPLOYMENT_FILE

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

  • CLUSTER_KUBECONFIG: קובץ ה-kubeconfig של אשכול Kubernetes שמריץ את הפריסה.

  • NAMESPACE: מרחב השמות של הפרויקט.

  • DEPLOYMENT_FILE: השם של Deploymentקובץ המניפסט שרוצים לעדכן.

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

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

עדכון של קובץ אימג' של קונטיינר

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

kubectl --kubeconfig CLUSTER_KUBECONFIG -n NAMESPACE \
    set image deployment DEPLOYMENT_NAME \
    IMAGE=IMAGE:TAG

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

  • CLUSTER_KUBECONFIG: קובץ ה-kubeconfig של אשכול Kubernetes שמריץ את הפריסה.

  • NAMESPACE: מרחב השמות של הפרויקט.

  • DEPLOYMENT_NAME: השם של אובייקט Deployment שמכיל את התמונה.

  • IMAGE: השם של קובץ האימג' בקונטיינר.

  • TAG: התג לעדכון של קובץ אימג' של קונטיינר.

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

לדוגמה, כדי לעדכן אובייקט Deployment בשם nginx לשימוש בגרסה 1.9.1, מריצים את הפקודה:

kubectl --kubeconfig /tmp/kubeconfig.yaml -n my-namespace \
    set image deployment nginx nginx=nginx:1.9.1

החזרה לגרסה קודמת של עדכון

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

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

kubectl --kubeconfig CLUSTER_KUBECONFIG \
    -n NAMESPACE \
    rollout undo deployment DEPLOYMENT_NAME

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

  • CLUSTER_KUBECONFIG: קובץ ה-kubeconfig של אשכול Kubernetes שמריץ את הפריסה.

  • NAMESPACE: מרחב השמות של הפרויקט.

  • DEPLOYMENT_NAME: השם של אובייקט Deployment שרוצים לבצע לו שחזור.

כדי לחזור לגרסה ספציפית, מריצים את הפקודה:

kubectl --kubeconfig CLUSTER_KUBECONFIG \
    -n NAMESPACE \
    rollout undo deployment DEPLOYMENT_NAME \
    --to-revision=REVISION_NUMBER

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

  • CLUSTER_KUBECONFIG: קובץ ה-kubeconfig של אשכול Kubernetes שמריץ את הפריסה.

  • NAMESPACE: מרחב השמות של הפרויקט.

  • DEPLOYMENT_NAME: השם של אובייקט Deployment שרוצים לבצע לו שחזור.

  • REVISION_NUMBER: המספר השלם שמגדיר את מספר הגרסה שאליה רוצים לחזור, למשל 3.