הדף הזה רלוונטי ל-Apigee ול-Apigee Hybrid.
לעיון במסמכי התיעוד של Apigee Edge
תיאור הבעיה
יכול להיות שתבחינו באחד מהסימפטומים הבאים:
- אפליקציות הלקוח מקבלות שגיאות של זמן קצוב לתפוגה כתגובה לקריאות ל-API ב-Apigee hybrid.
- מופיעות שגיאות כמו
Error from server (invalid)אוThe Job "apigee-resources-install" is invalidבמהלך החלת ההגדרה (overrides.yaml) על האשכול במהלך התקנה היברידית.
הודעות שגיאה
יכול להיות שתיתקלו באחת מהשגיאות הבאות:
תגובת שגיאה לקריאות ל-API
בקשות API ב-Apigee Hybrid עשויות להיכשל ולהציג את הודעת השגיאה הבאה:
* Connection failed * connect to 34.84.67.39 port 443 failed: Operation timed out * Failed to connect to example.apis.com port 443: Operation timed out * Closing connection 0 curl: (7) Failed to connect to example.apis.com port 443: Operation timed out
שגיאות שנצפו במהלך החלת ההגדרה (overrides.yaml) על אשכולות
יכול להיות שתיתקלו באחת מהשגיאות הבאות במהלך החלת ההגדרה (קובץ overrides.yaml) על אשכולות במהלך ההתקנה:
שגיאה מספר 1
helm upgrade operator apigee-operator/ \ --install \ --create-namespace \ --namespace APIGEE_NAMESPACE \ --atomic \ -f OVERRIDES_FILE
... ... Error from server (Invalid): error when applying patch: to: Resource: "batch/v1, Resource=jobs", GroupVersionKind: "batch/v1, Kind=Job" Name: "istio-init-crd-10-1.4.6", Namespace: "istio-system" to: Resource: "batch/v1, Resource=jobs", GroupVersionKind: "batch/v1, Kind=Job" Name: "istio-init-crd-11-1.4.6", Namespace: "istio-system" to: Resource: "batch/v1, Resource=jobs", GroupVersionKind: "batch/v1, Kind=Job" Name: "istio-init-crd-14-1.4.6", Namespace: "istio-system"
שגיאה מספר 2
helm upgrade operator apigee-operator/ \ --install \ --create-namespace \ --namespace APIGEE_NAMESPACE \ --atomic \ -f OVERRIDES_FILE
... ... The Job "apigee-resources-install" is invalid: spec.template: Invalid value: core.PodTemplateSpec{ObjectMeta:v1.ObjectMeta{Name:"apigee-resources-install", GenerateName:"", Namespace:"", SelfLink:"", UID:"", ResourceVersion:"", Generation:0,
סיבות אפשריות
השגיאות האלה יכולות לקרות אם שירות istio-ingressgateway נמצא במצב pending ולא יכול להתחבר לכתובת IP חיצונית, כמו שמוצג בהמשך:
kubectl get services -n istio-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
istio-ingressgateway LoadBalancer 10.198.5.104 <pending> 15020:31927/TCP, 12h
80:31381/TCP,
443:31391/TCP,
31400:31401/TCP,
15443:32623/TCP
יכולות להיות כמה סיבות לכך שהשירות istio-ingressgateway יהיה במצב pending:
| מטרה | תיאור |
|---|---|
| משימות במצב שגיאה או בהמתנה במרחב השמות istio-system | יכול להיות שהמשימות incomplete/erroneous במרחב השמות istio-system יגרמו לשירות istio-ingressgateway להיות במצב pending לנצח ולא יוכל להתחבר לכתובת IP חיצונית. |
| טווח כתובות IP שגוי שהוקצה למאזן עומסים חיצוני | יכול להיות שטווח כתובות ה-IP שגוי מוגדר בקובץ istio-operator.yaml, ולכן השירות istio-ingressgateway נכנס למצב pending לתמיד ולא יכול להתחבר לכתובת IP חיצונית במהלך ההתקנה.
|
הגורם: משימות במרחב השמות istio-system במצב שגיאה או בהמתנה
אבחון
- כדי לבדוק את סטטוס העבודות במרחב השמות
istio-system, משתמשים בפקודה הבאה:kubectl get jobs -n istio-system
- הסטטוס של המשרות צריך להיות
complete. אם הסטטוס של העבודות הואerroneous/pending, זו הסיבה לבעיה.
רזולוציה
- אם אחת מהמשימות במצב
pendingאוerroneous, מוחקים אותה באמצעות הפקודה הבאה:kubectl -n istio-system delete job JOB_NAME_FROM_STEP_1
- מריצים מחדש את ההתקנה על ידי החלת הקובץ
overrides.yaml:מעדכנים את
apigee-serving-certבאמצעות Helm:helm install operator apigee-operator/ --namespace APIGEE_NAMESPACE \ --atomic \ -f OVERRIDES_FILE \ --dry-run=server
חשוב לכלול את כל ההגדרות שמוצגות, כולל
--atomicכדי שהפעולה תבוטל אם היא תיכשל.מתקינים את התרשים:
helm upgrade operator apigee-operator/ --namespace APIGEE_NAMESPACE \ --atomic \ -f OVERRIDES_FILE
הסיבה: טווח כתובות IP שגוי הוקצה למאזן עומסים חיצוני
אבחון
- בודקים את כתובת ה-IP שהוגדרה למאזן העומסים בקובץ
istio- operator.yaml. לדוגמה, בקטע הקוד הבא אפשר לראות את המיקום בקובץistio-operator.yamlשבו מוגדרת כתובת ה-IP:-name: istio-ingressgateway enabled: true k8s: service: type: LoadBalancer loadBalancerIP: 10.195.24.23
- שירות
istio-ingressgatewayמוגדר כמאזן עומסים (כפי שמצוין בסוג) בקובץistio-operator.yaml. במהלך ההתקנה של ASM, נוצר מאזן עומסים עם כתובת ה-IP שהוגדרה, והוא מחובר כדי לתקשר עם שירותistio- ingressgateway. לכן, כתובת ה-IP שהוגדרה צריכה להיות נכונה ושמורה למאזן העומסים. - צריך לפנות לצוות הרשת ולוודא שכתובת ה-IP שהוגדרה עבור
loadBalancerIPנכונה. אם היא לא נכונה, שירות מאזן העומסים לא יוכל להתחבר לכתובת ה-IP. כתוצאה מכך, השירותistio-ingressgatewayיישאר במצבpendingלנצח.
רזולוציה
- עובדים עם צוות הרשת ומגדירים את כתובת ה-IP הנכונה בקובץ
istio- operator.yaml. - מריצים מחדש את ההתקנה של
Apigee ingress gateway ומחילים את הקובץ
overrides.yaml:helm upgrade $ORG_NAME apigee-org/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f OVERRIDES_FILE
צריך לאסוף פרטי אבחון
אם הבעיה נמשכת גם אחרי שמבצעים את ההוראות שלמעלה, צריך לאסוף את נתוני האבחון הבאים ואז לפנות לצוות התמיכה של Google Cloud Customer Care:
- מזהה הפרויקט ב-Google Cloud
- השם של הארגון ב-Apigee Hybrid
- שם אשכול Kubernetes
- שם הפרויקט ב-Google Cloud אם אשכול Kubernetes נמצא בפרויקט אחר ב-Google Cloud
- הקובץ
overrides.yaml - קובץ
Istio-operator .yamlשמשמש במהלך ההתקנה של ASM. - איסוף היומנים מכל תא
istio-ingressgatewayבמרחב השמותistio-system:kubectl logs NAME_OF_ISTIO_INGRESSGATEWAY_POD -n istio-system > /tmp/NAME_OF_ISTIO_INGRESSGATEWAY_POD.log
- אוספים את התיאור של כל פוד במרחב השמות
istio-system:kubectl describe pod NAME_OF_ISTIO_INGRESSGATEWAY_POD -n istio-system > /tmp/NAME_OF_ISTIO_INGRESSGATEWAY_POD.yaml
- אוספים את רשימת השירותים במרחב השמות
istio-system:kubectl get svc -n istio-system