במאמר הזה מוסבר איך לבדוק עומסי עבודה קיימים עם שמירת מצב שפועלים באשכול Kubernetes עם מרווח אוויר ב-Google Distributed Cloud (GDC). עומסי עבודה עם שמירת מצב מאפשרים להריץ את האפליקציה עם אחסון קונטיינרים מתמשך. אתם יכולים לראות את עומסי העבודה עם שמירת מצב באמצעות מסוף GDC או kubectl CLI כדי לעקוב אחרי השימוש במשאבים והתקינות של עומסי העבודה.
המסמך הזה מיועד למפתחים בקבוצת מפעילים של אפליקציות, שאחראים על ניהול עומסי עבודה של אפליקציות בארגון שלהם. מידע נוסף זמין במאמר בנושא קהלים ב-GDC עם air gap.
לפני שמתחילים
כדי להשלים את המשימות שמתוארות במאמר הזה, צריך לבקש את ההרשאות הנדרשות ולהכין את הסביבה.
שליחת בקשה לתפקידי IAM
כדי להציג ולבדוק עומסי עבודה עם שמירת מצב, צריך תפקידים ספציפיים. התפקידים שאתם צריכים תלויים בסוג האשכול שבו אתם עובדים: אשכול משותף בהיקף הארגון או אשכול רגיל בהיקף הפרויקט. מידע נוסף זמין במאמר בנושא הגדרות של אשכול Kubernetes.
תפקידים משותפים באשכול
כדי לקבל את ההרשאות שנדרשות לביצוע המשימה, צריך לבקש מהאדמין של IAM בפרויקט להקצות לכם את התפקידים הבאים במרחב השמות של הפרויקט:
- Workload Viewer (
workload-viewer): view all workloads deployed to a shared cluster. - אדמין במרחב שמות (
namespace-admin): יצירה, מחיקה, עריכה או צפייה בעומסי עבודה במרחב שמות של פרויקט באשכול משותף.
התפקידים האלה קשורים למרחב השמות של הפרויקט.
תפקידים סטנדרטיים באשכול
כדי ליצור, למחוק, לערוך או להציג עומסי עבודה באשכול רגיל, צריך לבקש מאדמין IAM בפרויקט להקצות לכם את התפקיד מפתח אשכול (cluster-developer). התפקיד הזה משויך למרחב השמות של הפרויקט.
הכנת הסביבה
כדי להריץ פקודות מול אשכול Kubernetes באמצעות ה-API, צריך לוודא שיש לכם את המשאבים הבאים:
מאתרים את שם אשכול Kubernetes או שואלים את אחד מחברי קבוצת האדמינים של הפלטפורמה מה שם האשכול.
נכנסים לחשבון ויוצרים את קובץ ה-kubeconfig לאשכול Kubernetes.
משתמשים בנתיב kubeconfig של אשכול Kubernetes כדי להחליף את
KUBERNETES_CLUSTER_KUBECONFIGבהוראות האלה.
הצגת עומסי עבודה של מאגר בפרויקט
כדי לראות את עומסי העבודה של הקונטיינרים בפרויקט, מבצעים את הפעולות הבאות:
המסוף
בתפריט הניווט, בוחרים באפשרות Kubernetes Engine > Workloads (Kubernetes Engine > עומסי עבודה).
אפשר לראות פרטים על עומסי העבודה של הקונטיינר, כמו:
- שם
- סוג
- מספר הפודים
- אשכול 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
בדיקת משאב StatefulSet
כדי לבקש מידע מפורט יותר על הרכיבים של StatefulSet
משאב, מריצים פקודות שמכוונות ישירות לישות שרוצים לבדוק.
אחזור מידע על אובייקט StatefulSet
כדי לקבל מידע מפורט על האובייקט StatefulSet, מריצים את הפקודה:
kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG -n NAMESPACE \
describe statefulset STATEFULSET_NAME
מחליפים את מה שכתוב בשדות הבאים:
KUBERNETES_CLUSTER_KUBECONFIG: קובץ ה-kubeconfig של האשכול שמריץ את אובייקטStatefulSet.
NAMESPACE: מרחב השמות. במקרה של אשכולות משותפים, צריך להשתמש במרחב שמות של פרויקט. במקרים של אשכולות רגילים, אפשר להשתמש בכל מרחב שמות.
STATEFULSET_NAME: השם של אובייקטStatefulSet.
הצגת ההגדרה הפעילה בפורמט YAML
כדי להציג את ההגדרה הפעילה של משאב StatefulSet בפורמט YAML, מריצים את הפקודה:
kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG -n NAMESPACE \
get statefulset STATEFULSET_NAME -o yaml
מחליפים את מה שכתוב בשדות הבאים:
KUBERNETES_CLUSTER_KUBECONFIG: קובץ ה-kubeconfig של האשכול שמריץ את אובייקטStatefulSet.
NAMESPACE: מרחב השמות. במקרה של אשכולות משותפים, צריך להשתמש במרחב שמות של פרויקט. במקרים של אשכולות רגילים, אפשר להשתמש בכל מרחב שמות.
STATEFULSET_NAME: השם של אובייקטStatefulSet.
הצגת רשימה של רצפי מודעות
כדי להציג את רשימת האובייקטים Pod שנוצרו על ידי StatefulSet, מריצים את הפקודה:
kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG -n NAMESPACE \
get pods -l app=APP_NAME
בפקודה הזו, הדגל -l מציג רשימה של כל האובייקטים Pod עם התווית APP_NAME.
מחליפים את מה שכתוב בשדות הבאים:
KUBERNETES_CLUSTER_KUBECONFIG: קובץ ה-kubeconfig של האשכול שמריץ את אובייקטStatefulSet.
NAMESPACE: מרחב השמות. במקרה של אשכולות משותפים, צריך להשתמש במרחב שמות של פרויקט. במקרים של אשכולות רגילים, אפשר להשתמש בכל מרחב שמות.
APP_NAME: השם של האפליקציה עם שמירת מצב שמנוהלת על ידי אובייקטStatefulSet.
קבלת מידע ספציפי על פודים
כדי לקבל מידע על Pod ספציפי באשכול, מריצים את הפקודה:
kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG -n NAMESPACE \
describe pod POD_NAME
מחליפים את מה שכתוב בשדות הבאים:
KUBERNETES_CLUSTER_KUBECONFIG: קובץ ה-kubeconfig של האשכול שבו פועל הפוד.
NAMESPACE: מרחב השמות. במקרה של אשכולות משותפים, צריך להשתמש במרחב שמות של פרויקט. במקרים של אשכולות רגילים, אפשר להשתמש בכל מרחב שמות.
POD_NAME: השם של ה-Pod שמנוהל על ידי אובייקטStatefulSet.
הצגת רשימה של PVC
כדי להציג רשימה של אובייקטים של PersistentVolumeClaim (PVC) באשכול, מריצים את הפקודה:
kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG -n NAMESPACE \
get pvc
מחליפים את מה שכתוב בשדות הבאים:
KUBERNETES_CLUSTER_KUBECONFIG: קובץ ה-kubeconfig של האשכול שמריץ את ה-PVC.
NAMESPACE: מרחב השמות. במקרה של אשכולות משותפים, צריך להשתמש במרחב שמות של פרויקט. במקרים של אשכולות רגילים, אפשר להשתמש בכל מרחב שמות.
קבלת מידע ספציפי על PVC
כדי לקבל מידע על PersistentVolumeClaim (PVC) ספציפי באשכול, מריצים את הפקודה:
kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG -n NAMESPACE \
describe pvc PVC_NAME
מחליפים את מה שכתוב בשדות הבאים:
KUBERNETES_CLUSTER_KUBECONFIG: קובץ ה-kubeconfig של האשכול שמריץ את ה-PVC.
NAMESPACE: מרחב השמות. במקרה של אשכולות משותפים, צריך להשתמש במרחב שמות של פרויקט. במקרים של אשכולות רגילים, אפשר להשתמש בכל מרחב שמות.
PVC_NAME: השם של ה-PVC שהוגדר לאובייקטStatefulSet.
קבלת מידע על PV
כדי לקבל מידע על PersistentVolume (PV) ספציפי באשכול,
מריצים את הפקודה:
kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG -n NAMESPACE \
describe pv PV_NAME
מחליפים את מה שכתוב בשדות הבאים:
KUBERNETES_CLUSTER_KUBECONFIG: קובץ ה-kubeconfig של האשכול שמריץ את ה-PV.
NAMESPACE: מרחב השמות. במקרה של אשכולות משותפים, צריך להשתמש במרחב שמות של פרויקט. במקרים של אשכולות רגילים, אפשר להשתמש בכל מרחב שמות.
PV_NAME: השם של ה-PV שהוגדר לאובייקטStatefulSet.