בדף הזה מוסבר איך לפתור בעיות ב-Config Controller.
פתרון בעיות בהתקנה
אין רשת בשם default
יכול להיות שתקבלו שגיאה לגבי הרשת שמוגדרת כברירת מחדל שלא זמינה כשאתם יוצרים את מופע Config Controller:
Error 400: Project \"PROJECT_ID\" has no network named \"default\"., badRequest\n\n on main.tf line 35, in resource \"google_container_cluster\" \"acp_cluster\"
השגיאה הזו מתרחשת אם לא מציינים רשת קיימת באמצעות הדגל --network, ורשת ברירת המחדל ב- Google Cloudנמחקה או הושבתה. כברירת מחדל, Config Controller יוצר את אשכול Google Kubernetes Engine שמגבה את מופע Config Controller ברשת ברירת המחדל.
אם רוצים ליצור את המופע ברשת קיימת, מוסיפים את הדגל --network=NETWORK כשיוצרים את מופע Config Controller. מחליפים את NETWORK בשם של רשת קיימת.
אם רוצים ליצור את מכונת Config Controller ברשת שמוגדרת כברירת מחדל, צריך ליצור מחדש את הרשת שמוגדרת כברירת מחדל באמצעות הפקודה הבאה:
gcloud compute networks create default --subnet-mode=auto
כדי שהפקודה הזו תפעל, צריך להפעיל רשתות משנה אוטומטיות באמצעות הדגל --subnet-mode=auto.
אחרי שיוצרים מחדש את רשת ברירת המחדל, אפשר להשמיט את הדגל --network כשיוצרים את מופע Config Controller.
ערך לא תקין של MasterIpv4CidrBlock
יצירת Config Controller משתמשת ברשת משנה שמוגדרת כברירת מחדל 172.16.0.128/28 עבור CIDR של IPv4 במישור הבקרה.
אם יש התנגשות בבלוק ה-CIDR של IPv4, יצירת Config Controller נכשלת עם השגיאה הבאה:
Cloud SSA\n\nError: Error waiting for creating GKE cluster: Invalid value for field PrivateClusterConfig.MasterIpv4CidrBlock: 172.16.0.128/28 conflicts with an existing subnet in one of the peered VPCs.
אם השגיאה הזו מופיעה, צריך לבחור CIDR פרטי אחר של IPv4 ולהשתמש בו באמצעות הדגל --master-ipv4-cidr-block בפקודה gcloud anthos config controller create.
כדי למצוא בלוקים של כתובות IPv4 CIDR שכבר נמצאים בשימוש, מבצעים את השלבים הבאים:
מאתרים את שם ה-peering:
gcloud compute networks peerings list --network=NETWORKמחליפים את
NETWORKבשם הרשת שרוצים לחפש.הפלט אמור להיראות כך:
NAME NETWORK PEER_PROJECT PEER_NETWORK PEER_MTU IMPORT_CUSTOM_ROUTES EXPORT_CUSTOM_ROUTES STATE STATE_DETAILS gke-n210ce17a4dd120e16b6-7ebf-959a-peer default gke-prod-us-central1-59d2 gke-n210ce17a4dd120e16b6-7ebf-0c27-net False False ACTIVE [2021-06-08T13:22:07.596-07:00]: Connected.מציגים את ה-CIDR של IPv4 שנעשה בו שימוש בקישור:
gcloud compute networks peerings list-routes PEERING_NAME \ --direction=INCOMING \ --network=NETWORK \ --region=REGIONמחליפים את מה שכתוב בשדות הבאים:
-
PEERING_NAME: השם של ה-peering שרוצים לחפש -
NETWORK: השם של הרשת שרוצים לחפש -
REGION: השם של האזור שבו נמצא מופע Config Controller
-
פתרון בעיות במהלך הפעלת Config Controller
נגמרו כתובות ה-IP במאגר הצמתים
אם מופיעה הודעת השגיאה הבאה, יכול להיות שאין למאגרי הצמתים מספיק כתובות IP:
Can't scale up because instances in managed instance groups hosting node pools ran out of IPs
הבעיה הזו יכולה לקרות אם לא מציינים את הדגל --cluster-ipv4-cidr-block. אם לא מציינים את ה-flag הזה, Config Controller משתמש כברירת מחדל בטווח ה-CIDR של ה-Pod /20.
הטווח הזה מאפשר להשתמש ב-16 צמתים לכל היותר.
אם אתם צריכים יותר צמתים, תצטרכו למחוק את מופע Config Controller כי אי אפשר לשנות את בלוק ה-CIDR אחרי שהוא נוצר. כשיוצרים מחדש את מופע Config Controller, משתמשים בפרמטר האופציונלי --cluster-ipv4-cidr-block ומציינים את CIDR range or netmask size.
אשכולות שמנוהלים על ידי Config Controller לא מופיעים בלוח הבקרה של סנכרון תצורות
אם לוחצים על לוח הבקרה של סנכרון תצורות ולא רואים מופעים, צריך ליצור צי ריק ולהקצות את אשכול Config Controller לצי הזה.
חסר מידע בלוח הבקרה
אם לא מופיעים פרטים לגבי Config Controller בלוח הבקרה של המסוף Google Cloud , יכול להיות שלחשבון השירות שמוגדר כברירת מחדל שמשמש את Config Controller אין את ההרשאות הנדרשות ב-Google Cloud Observability.
כדי להעניק את ההרשאות האלה, משתמשים בפקודות הבאות:
# Cloud Monitoring metrics permissions
gcloud projects add-iam-policy-binding PROJECT_ID \
--role=roles/monitoring.metricWriter \
--condition=None \
--member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com"
gcloud projects add-iam-policy-binding PROJECT_ID \
--role=roles/stackdriver.resourceMetadata.writer \
--condition=None \
--member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com"
gcloud projects add-iam-policy-binding PROJECT_ID \
--role=roles/opsconfigmonitoring.resourceMetadata.writer \
--condition=None \
--member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com"
# Cloud Logging permissions
gcloud projects add-iam-policy-binding PROJECT_ID \
--role=roles/logging.logWriter \
--condition=None \
--member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com"
# Cloud Trace permissions\
gcloud projects add-iam-policy-binding PROJECT_ID \
--role=roles/cloudtrace.agent \
--condition=None \
--member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com"
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שבו יצרתם את מופע Config Controller -
PROJECT_NUMBER: מספר הפרויקט ב- Google Cloud
פתרון בעיות ברכיבים
יכול להיות שתיתקלו בבעיות ברכיבים האלה כי מופע Config Controller מגיע עם Policy Controller, Config Sync ו-Config Connector שמותקנים מראש. כדי ללמוד איך לפתור בעיות ברכיבים האלה, כדאי לעיין בדפים הבאים:
בקטעים הבאים מפורטות הצעות לפתרון חלק מהבעיות הנפוצות שאתם עשויים להיתקל בהן כשאתם משתמשים ב-Config Controller עם הרכיבים האלה.
שגיאות בסנכרון
ההגדרות במקור האמת (לדוגמה, מאגר Git או תמונת OCI) מסונכרנות עם מופע Config Controller באמצעות סנכרון תצורות. כדי לבדוק אם יש שגיאות בתהליך הסנכרון, משתמשים בפקודה nomos status:
nomos status --contexts $(kubectl config current-context)
פתרון בעיות במשאבי Config Connector
שדות ומשאבים שלא ניתן לשנות
חלק מהשדות במשאבי Google Cloud הבסיסלא ניתנים לשינוי, כמו מזהי פרויקטים או השם של רשת ה-VPC. Config Connector חוסם עריכות בשדות כאלה ולא יכול להפעיל שינויים. אם רוצים לערוך אחד מהשדות האלה שלא ניתן לשינוי, צריך למחוק את המשאב המקורי (דרך Git) לפני שמוסיפים אותו מחדש עם הערכים הרצויים.
משאבים תקועים
לפעמים, יכול להיות שהמשאבים לא יימחקו כמו שצריך (כפי שמדווח על ידי nomos
status). כדי לפתור את הבעיה, אפשר להסיר את finalizers מהמשאב ואז למחוק את המשאב באופן ידני.
לדוגמה, כדי למחוק IAMPolicyMember שנתקע, מריצים את הפקודה הבאה:
kubectl patch IAMPolicyMember logging-sa-iam-permissions \
-p '{"metadata":{"finalizers":[]}}' --type=merge -n config-control
kubectl delete IAMPolicyMember logging-sa-iam-permissions -n config-control
המאמרים הבאים
- לקבלת עזרה נוספת, אפשר לפנות אל Cloud Customer Care.