הסבר על תנאים של מצב תכונה

הערה: שירותים קנוניים נתמכים באופן אוטומטי ב-Cloud Service Mesh מגרסה 1.6.8 ואילך.

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

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

  gcloud container fleet mesh describe --project FLEET_PROJECT

הפלט עשוי לכלול את conditions ב-membershipStates עבור אשכול, למשל:

  ...
  membershipStates:
    projects/test-project/locations/us-central1/memberships/my-membership:
      servicemesh:
        conditions:
          - code: <CONDITION_CODE>
            details: ...
            documentationLink: ....
            severity: ...

תיאור מפורט יותר של הערכים של code מופיע בדף הזה.

NODEPOOL_WORKLOAD_IDENTITY_FEDERATION_REQUIRED

יכול להיות שקוד השגיאה NODEPOOL_WORKLOAD_IDENTITY_FEDERATION_REQUIRED יופיע בשדה Conditions של המינוי:

    membershipStates:
      projects/test-project/locations/us-central1/memberships/my-membership:
        servicemesh:
          conditions:
          - code: NODEPOOL_WORKLOAD_IDENTITY_FEDERATION_REQUIRED
            details: One or more node pools have workload identity federation disabled.
            documentationLink: https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity
            severity: ERROR
          controlPlaneManagement:
            details:
            - code: REVISION_FAILED_PRECONDITION
              details: Required in-cluster components are not ready. This will be retried
                within 15 minutes.
            implementation: TRAFFIC_DIRECTOR
            state: FAILED_PRECONDITION

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

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

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

MESH_IAM_PERMISSION_DENIED

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

  1. בודקים אם לחשבון השירות הוקצה התפקיד Anthos Service Mesh Service Agent. לפרטים על אימות הרשאת IAM והוספה שלה, אפשר לעבור אל דיווח על עדכונים כשגיאה לא תקינה ולבצע את אותם השלבים שמופיעים שם.

  2. אם האישור אומת אבל הבעיה נמשכת, אפשר לפנות לתמיכה של Google לקבלת עזרה נוספת.

MESH_IAM_CROSS_PROJECT_PERMISSION_DENIED

השגיאה הזו מציינת לחשבון השירות של פרויקט הצי אין מספיק הרשאות כדי לגשת לפרויקט אחר (פרויקט האשכול או פרויקט הרשת).

ב-VPC משותף, צריך לוודא שחשבון השירות Anthos Service Mesh Service Agent קיבל את התפקיד בכל הפרויקטים של צי הרכבים בפרויקט רשת ה-VPC המשותפת.

בתרחישים של פרויקט GKE Fleet ופרויקט אשכול, חשוב להקצות לחשבון השירות של פרויקט ה-Fleet את התפקיד Anthos Service Mesh Service Agent בפרויקט האשכול.

פקודה לדוגמה לפתרון בעיות:

  1. מוודאים שלחשבון השירות של פרויקט הרשת או פרויקט האשכול הוקצה התפקיד Anthos Service Mesh Service Agent לחשבון השירות של פרויקט הצי. אם לא, מריצים את הפקודה:

    gcloud projects add-iam-policy-binding NETWORK_OR_CLUSTER_PROJECT_ID  \
        --member "serviceAccount:service-FLEET_PROJECT_NUMBER@gcp-sa-servicemesh.iam.gserviceaccount.com" \
        --role roles/anthosservicemesh.serviceAgent
    

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

  2. אם האישור אומת אבל הבעיה נמשכת, אפשר לפנות לתמיכה של Google לקבלת עזרה נוספת.

CONFIG_VALIDATION_ERROR

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

  membershipStates:
    projects/test-project/locations/us-central1/memberships/my-membership:
      servicemesh:
        conditions:
        - code: CONFIG_VALIDATION_ERROR
          details: 'Unsupported ProxyConfig fields: [proxyconfig.statNameLength]'
          severity: ERROR
        controlPlaneManagement:

שגיאות באימות ההגדרה של דרישת תצורה ספציפית מחייבות פעולה מצד המשתמש. לדוגמה, כדי לפתור שגיאות שקשורות לשימוש בשדות API שלא נתמכים, מומלץ להסיר את ההגדרה הבעייתית מ-Mesh API.

במסוף Cloud, עוברים אל Kubernetes Engine > Secrets & ConfigMaps > istio-asm-managed (השם של ConfigMap תלוי בערוץ ההפצה שבו אתם משתמשים, למשל istio-asm-managed-stable או istio-asm-managed-rapid) ואז בוחרים בכרטיסייה YAML.

לדוגמה, אין יותר תמיכה ב-meshConfig.configSources:

apiVersion: v1
data:
  mesh: |
    enablePrometheusMerge: true
    trustDomain: "foobar.svc.id.goog"
    trustDomainAliases:
      - cluster.local

    configSources:
      - address: k8s://
      - address: fs:///var/lib/istio/config/data