איסוף יומנים של Cloud Service Mesh

בקטעים הבאים מוסבר איך לאסוף את היומנים השונים של Cloud Service Mesh כדי לפתור בעיות או ליצור קשר עם תמיכה של Google.

איסוף יומנים באמצעות הכלי לדוחות על באגים

‫Cloud Service Mesh מספק כלי אוטומטי לדיווח על באגים, שאוסף את יומני האבחון הרלוונטיים ומאפשר לכם לצרף את היומנים לכרטיס תמיכה של Google.

לפני שמתחילים, מוודאים שההקשר של kubeconfig עבור האשכול זמין בקובץ kubeconfig.

התחלת איסוף היומנים

מישור בקרה מנוהל

  1. מורידים את הכלי לפתרון בעיות.

  2. מריצים את הכלי ליצירת דוח על באג כדי לאסוף יומנים:

    gcloud beta container fleet mesh debug bug-report \
       --membership=MEMBERSHIP_NAME \
       --location=MEMBERSHIP_LOCATION \
       --project=PROJECT_NAME
    

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

    • MEMBERSHIP_NAME: שם המינוי.
    • MEMBERSHIP_LOCATION: האזור של המינוי.
    • PROJECT_NAME: שם הפרויקט.

מישור בקרה בתוך האשכול

  1. מורידים את הכלי לפתרון בעיות.

  2. מריצים את הכלי ליצירת דוח על באג כדי לאסוף יומנים:

    istioctl bug-report

העלאת ארכיון הניפוי באגים

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

איסוף ידני של יומנים של Cloud Service Mesh

במקום להשתמש בכלי לדיווח על באגים ב-Cloud Service Mesh, בקטע הזה מוסבר איך לאסוף באופן ידני את כל היומנים הרלוונטיים.

יומני גישה של Envoy

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

לפרטים על פענוח התוכן של היומן, אפשר לעיין במאמר פענוח יומנים של Envoy.

הפעלה או השבתה של יומני Envoy

כדי להפעיל את יומני הגישה של Envoy proxy, צריך להגדיר קובץ שכבת-על ל-Cloud Service Mesh בתוך האשכול או ConfigMap ל-Cloud Service Mesh מנוהל.

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

כדי להגדיל באופן זמני את רמת הפירוט של היומנים, משתמשים בפקודה הבאה. ההגדרה הזו מבוטלת כשה-pod נוצר מחדש.

kubectl -n NAMESPACE debug --image istio/base --target istio-proxy -it POD_NAME -- curl -X POST http://localhost:15000/logging?level=debug

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

kubectl -n NAMESPACE debug --image istio/base --target istio-proxy -it POD_NAME -- curl -X POST http://localhost:15000/logging?level=info

כתיבת קובצי יומן של Envoy לתיקייה

כדי לאסוף את יומני הגישה של שרת ה-proxy של Envoy ולאחסן אותם בתיקייה, משתמשים בפקודה הבאה:

kubectl logs -l app=APPLICATION_NAME -c istio-proxy > /FILE_PATH

מידע נוסף מופיע במאמר קבלת יומני הגישה של Envoy.

יומני Kubernetes

‫Kubernetes יוצר כמה יומנים שמכילים מידע על ההתנהגות של רכיבי Istio, כמו istiod, Ingress Gateway ושרתי proxy. אפשר לבדוק את היומנים האלה כדי למצוא שגיאות, וכך לצמצם את היקף הסיבות האפשריות לבעיה.

(מישור בקרה בתוך האשכול בלבד) מריצים את הפקודה הבאה כדי ללכוד יומנים של istiod:

kubectl -n istio-system logs $(kubectl -n istio-system get pods -lapp=istiod -oname) > ./LOGS_FOLDER/istiod.log

(במישור הבקרה בתוך האשכול בלבד) מריצים את הפקודה הבאה כדי ללכוד את היומנים של Istio Ingress Gateway:

kubectl -n istio-system logs $(kubectl -n istio-system get pods -lapp=istio-ingressgateway -oname) > /FILE_PATH

מריצים את הפקודה הבאה כדי ללכוד את היומנים של Istio Proxy:

kubectl -n WORKLOAD_NAMESPACE logs POD_NAME -c istio-proxy > ./LOGS_FOLDER/proxy.log

תמונת מצב של ההגדרות של Kubernetes

המידע הזה מאפשר למשתמשים שאין להם גישה ישירה לאשכול לראות את המצב של משאבים שונים ולזהות בעיות אפשריות בהגדרות. הפקודה הבאה כותבת את ההגדרה של Kubernetes לקובץ YAML:

for ns in `kubectl get namespaces -o=jsonpath='{.items[*].metadata.name}'` ; do echo "===NAMESPACE===" $ns >> ./LOGS_FOLDER/kubernetes.yaml ;kubectl get -oyaml -n $ns deploy,statefulset,job,ingress,endpoints,configmap,event,secret,service,istio-io >> ./LOGS_FOLDER/kubernetes.yaml; done

קובץ ה-Dump של Envoy

בדרך כלל, קובצי dump של ליבת Envoy לא שימושיים למשתמשי קצה, אבל יכול להיות שתמיכת Google תבקש מכם לאסוף אותם כחלק מתהליך פתרון הבעיות. כדי לאסוף אותם, צריך לבצע את השלבים הבאים.

כדי להגדיר את הליבה כך שתכתוב קובצי dump של ליבת Envoy לספרייה שאפשר לכתוב בה:

  1. מוסיפים את התווית sidecar.istio.io/enableCoreDump=true ל-pod.

  2. מפעילים מחדש את ה-pod כדי להפעיל את קובצי ה-core dump של Envoy.

  3. מעתיקים את ה-core dump מהפוד.

הגדרת שרת Proxy של Envoy

ההגדרה המפורטת של Envoy proxy מכילה פרטים נוספים שיכולים לעזור בפתרון בעיות. אפשר לאסוף את המידע הזה באמצעות הפקודה הבאה. בדוגמה הזו, ENDPOINT הוא אחד מהערכים הבאים (מוצגים לפי סדר החשיבות):

  • /certs
  • /clusters
  • /listeners
  • /config_dump
  • /memory
  • /server_info
  • /stats/prometheus
  • /runtime
kubectl debug --image istio/base --target istio-proxy -itq POD_NAME -n NAMESPACE -- curl 127.0.0.1:15000/ENDPOINT > out.log