בדיקת עומסי עבודה (workloads) חסרי מצב

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

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

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

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

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

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

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

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

  • Workload Viewer (workload-viewer): צפייה בכל עומסי העבודה שנפרסו באשכול משותף.
  • אדמין במרחב שמות (namespace-admin): יצירה, מחיקה, עריכה או צפייה בעומסי עבודה במרחב שמות של פרויקט באשכול משותף.

התפקידים האלה קשורים למרחב השמות של הפרויקט.

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

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

הכנת הסביבה

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

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

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

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

הצגת עומסי עבודה של קונטיינרים בפרויקט

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

המסוף

  • בתפריט הניווט, בוחרים באפשרות Kubernetes Engine > Workloads (עומסי עבודה).

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

    • שם
    • סוג
    • מספר התרמילים
    • אשכול Kubernetes
    • תאריך השינוי האחרון

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

kubectl

  • מריצים את הפקודה הבאה כדי להציג את כל ה-pods בפרויקט:

    kubectl get pods -n PROJECT_NAMESPACE
    

    הפלט אמור להיראות כך:

    NAME                        READY   STATUS    RESTARTS   AGE
    nginx-workload-ah-aa-1228   1/1     Running   0          12h
    nginx-workload-ah-ab-6784   1/1     Running   0          11h
    nginx-workload-ah-ac-0045   1/1     Running   0          12h
    

בדיקת הפריסה

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

אחזור מידע על אובייקט Deployment

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

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG -n NAMESPACE \
    describe deployment DEPLOYMENT_NAME

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

  • KUBERNETES_CLUSTER_KUBECONFIG: קובץ ה-kubeconfig של האשכול שבו פועל הפריסה.

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

  • DEPLOYMENT_NAME: השם של אובייקט Deployment.

הצגת ההגדרה בזמן אמת בפורמט YAML

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

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG -n NAMESPACE \
    get deployments DEPLOYMENT_NAME -o yaml

הפקודה הזו מציגה את ההגדרה הפעילה של האובייקט Deployment בפורמט YAML.

הצגת רשימה של רצפי מודעות

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

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG -n NAMESPACE \
    get pods -l KEY=VALUE

בפקודה הזו, הדגל -l מציג רשימה של כל האובייקטים Pod עם התווית של זוג הערכים שצוין באשכול שצוין.

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

  • KUBERNETES_CLUSTER_KUBECONFIG: קובץ ה-kubeconfig של האשכול שבו פועל הפריסה.

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

  • KEY: המפתח של צמד המפתח/ערך של התווית שהוגדר בפריסה. לדוגמה, אם השדה .template.metadata.labels כולל את התווית app: myapp, המפתח הוא app.

  • VALUE: הערך של התווית בצמד מפתח/ערך שהוגדר בפריסה. לדוגמה, אם התווית app: myapp מוגדרת בשדה .template.metadata.labels, הערך הוא my-app.

לדוגמה, אם תייגתם את האובייקט Deployment בתווית app: my-app, תריצו את הפקודה הבאה כדי לראות אובייקטים מסוג Pod עם התווית הזו:

kubectl --kubeconfig /tmp/kubeconfig.yaml -n my-namespace \
    get pods -l app=my-app

קבלת מידע ספציפי על פודים

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

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG -n NAMESPACE \
    describe pod POD_NAME

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

  • KUBERNETES_CLUSTER_KUBECONFIG: קובץ ה-kubeconfig של האשכול שבו פועל הפריסה.

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

  • POD_NAME: השם של ה-Pod שמנוהל על ידי הפריסה.

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