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

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

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

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

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

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

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

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

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

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

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

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

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

הכנת הסביבה

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

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

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

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

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

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

המסוף

  • בתפריט הניווט, לוחצים על Kubernetes Engine > Workloads.

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

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

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

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: הערך של התווית של צמד מפתח/ערך שהוגדר בפריסה. לדוגמה, אם בשדה .template.metadata.labels מוגדרת התווית app: myapp, הערך הוא 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 שמנוהל על ידי הפריסה.

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