פתרון בעיות ב-CNI מנוהל
בדף הזה מוסבר על בעיות נפוצות ב-CNI מנוהל ב-Cloud Service Mesh ואיך לפתור אותן. לקבלת עזרה נוספת, אפשר לעיין במאמר בנושא קבלת תמיכה.
הגדרה מנוהלת של CNI מופעל שלא נתמכת
הטמעה של מישור הבקרה TRAFFIC_DIRECTOR ב-Managed Cloud Service Mesh מחייבת שימוש ב-CNI מנוהל, ואי אפשר להשבית אותו. יכול להיות שתראו את הקוד CNI_CONFIG_UNSUPPORTED בהודעה על מצב התכונה אם התווית mesh.cloud.google.com/managed-cni-enabled קיימת אבל לא מוגדר לה הערך true במשאב המותאם אישית (CR) של עדכון מישור הבקרה (CPR), או אם רשומת ה-CNI ב-configmap של asm-options קיימת אבל לא מוגדר לה הערך on.
כדי לפתור את השגיאה הזו, צריך להסיר את כל הניסיונות להשבית את CNI מנוהל.
תרחיש 1: מסירים את התווית CNI Enabled (הפעלת CNI) המנוהלת ב-CPR CR באשכול.
apiVersion: v1 items: - apiVersion: mesh.cloud.google.com/v1beta1 kind: ControlPlaneRevision metadata: annotations: mesh.cloud.google.com/proxy: '{"managed":"false"}' creationTimestamp: "2024-02-18T08:13:30Z" generation: 1 labels: app.kubernetes.io/created-by: mesh.googleapis.com mesh.cloud.google.com/managed-cni-enabled: false # Remove the "mesh.cloud.google.com/managed-cni-enabled" label name: asm-managed namespace: istio-system resourceVersion: "13422558" uid: 3ad755ec-78ab-4d57-8fb9-c5e1a07740d5מקרה 2: מסירים את מחרוזת הנתונים של asm-options configmap
ASM_OPTSשל רשומת ה-CNI.apiVersion: v1 data: ASM_OPTS: CNI=off # Remove CNI entry in the ASM_OPTS data. multicluster_mode: connected kind: ConfigMap metadata: creationTimestamp: "2024-02-18T08:13:30Z" name: asm-options namespace: istio-system resourceVersion: "1640225" uid: 576602da-e60b-4df7-9427-5be06e5bf014
אי אפשר לתזמן את ה-Pod של CNI
השגיאה הזו עשויה להופיע אם ל-DaemonSet של CNI מנוהל אין אפשרות לתזמן Pods באף אחד מהצמתים באשכול.
שימו לב שמשאבים בתוך האשכול דורשים לפחות memory: 100Mi בכל צומת.
מידע נוסף זמין במאמר בנושא הדרישות של Cloud Service Mesh.
אם כבר הוקצה ל-Cluster מספיק זיכרון, אפשר לעיין במאמר Pod unschedulable כדי לראות שלבים נוספים לפתרון בעיות.
צמתים תקועים בסטטוס NotReady עם שגיאה של containerID חסר
יכול להיות שהשגיאה הזו תופיע אם הצמתים באשכול לא יהיו מוכנים אחרי שמשדרגים את הגרסה של Google Kubernetes Engine (GKE).
הודעת שגיאה:
container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:Network plugin returns error: missing containerID
הסיבה:
הבעיה הזו נובעת מחוסר תאימות בין Cloud Service Mesh Container Network Interface (CNI) בגרסה 1.20.x לבין התוספים של Container Network Interface (CNI) ב-GKE.
תוספי CNI צריכים להיות תואמים למפרט CNI 1.1.0. באשכולות שמופעלת בהם גרסה 1.35.1-gke.1516000 ואילך של GKE, התמיכה במפרט הזה מופעלת באופן אוטומטי. מכיוון שגרסה 1.20.x של Cloud Service Mesh CNI לא תומכת במפרט CNI בגרסה 1.1.0, בדיקות תקינות הצומת נכשלות והצמתים נשארים במצב NotReady.
פתרון עקיף:
אם האשכול שלכם עדיין מריץ את Cloud Service Mesh CNI בגרסה 1.20.x, אל תשדרגו את מאגרי הצמתים של GKE לגרסה 1.35.1-gke.1516000 ואילך.
אם כבר שדרגתם ואתם נתקלים בבעיה הזו, הפתרון המומלץ הוא לשנמך את גרסת GKE לגרסה ישנה יותר מ-1.35.1-gke.1516000 עד ש-CNI המנוהל של האשכול ישודרג לגרסה 1.23.x או לגרסה חדשה יותר.