ניהול קונפליקטים עם כמה משאבים של Config Connector
בדף הזה מוסבר איך Config Connector מטפל בקונפליקטים. עימותים יכולים לקרות כשכמה משאבים מנהלים את אותו משאב.
Config Connector מנהל או רוכש משאבים על ידי מיפוי השילוב של שם משאב Kubernetes, הערת מאגר (container) ואזור או מיקום, אם רלוונטיים. במקרה הפשוט ביותר, אפשר לארגן את המשאבים באמצעות Google Cloud פרויקטים.
Google Cloud תומך ברמות נוספות של היררכיה מעבר לפרויקטים: תיקיות, פרויקטים וארגונים. אפשר למפות משאבים לתיקיות, לפרויקטים ולארגונים באמצעות הערה. כשיוצרים משאב בלי הערה באמצעות Config Connector, המשאב נוצר בפרויקט שמשתף את מרחב השמות של המשאב.
אפשר ליצור שני משאבי Config Connector במרחבי שמות שונים שמנהלים את אותו משאב, אבל לא מומלץ לעשות את זה. Google Cloud Config Connector מנהל את המשאב התואם Google Cloud רק אם הוא מצליח לקבל חכירה של המשאב Google Cloud ומניעת התנגשויות מופעלת.
ההקצאות הן בהיקף של מרחב שמות. כדי לקבל חכירה בהיקף מרחב שמות, Config Connector מוסיף שני תוויות למשאב:
-
cnrm-lease-holder-id: Config Controller יוצר מזהה ייחודי לכל מרחב שמות שמנהל משאב עם מניעת התנגשויות מופעלת. המזהה הייחודי הזה משמש להגדרתcnrm-lease-holder-id. כדי לראות את המיפוי של מרחב השמות לערךcnrm-lease-holder-id, אפשר לעיין ב-ConfigMap � במרחב השמות �.namespace-idcnrm-system -
cnrm-lease-expiration: תאריך התפוגה בפורמט Unix epoch time.
Config Connector יכול לעדכן את הערכים האלה אם אחד מהתנאים הבאים מתקיים:
- הערך של
cnrm-lease-holder-idתואם למזהה הייחודי הגלובלי של מרחב השמות. - הערך של
cnrm-lease-holder-idריק או לא קיים. - הערך של
cnrm-lease-expirationהוא בעבר.
כשמופע של Config Connector מקבל הרשאה למשאב, זמן התפוגה מוגדר ל-40 דקות קדימה. אותו מופע של Config Connector ממשיך לנהל את המשאב כל עוד הוא נמצא במרחב השמות. Config Connector מאריך את זמן התפוגה ב-40 דקות כשנותרות פחות מ-20 דקות.
אם Config Connector לא מצליח לקבל חכירה של משאב מסוים, הפלט של kubectl describe במשאב יציג את הסטטוס ManagementConflict.
שינוי של מניעת התנגשויות
כדי לשלוט במניעת התנגשויות, מוסיפים את ההערה cnrm.cloud.google.com/management-conflict-prevention-policy למשאב עם אחד מהערכים הבאים:
-
resource: כדי למנוע התנגשויות בניהול ברמת המשאב, שומרים את תוויות ההשכרה המתאימות במשאב, כמו שמתואר בקטע הקודם. none: לא נמנעות התנגשויות בניהול.
ערך ברירת המחדל הוא none.
בדוגמה הבאה, מניפסט של ComputeNetwork שמוגדר כברירת מחדל משתמש במדיניות ניהול של none, כלומר לא מונעים התנגשויות:
apiVersion: compute.cnrm.cloud.google.com/v1beta1
kind: ComputeNetwork
metadata:
annotations:
cnrm.cloud.google.com/management-conflict-prevention-policy: "none"
cnrm.cloud.google.com/project-id: "PROJECT-ID"
cnrm.cloud.google.com/deletion-policy: "abandon"
name: default
spec:
description: Default network for the project
מגבלות
למניעת התנגשויות יש את המגבלות הבאות:
מניעת קונפליקטים לא פועלת במשאבים שלא תומכים בתוויות. גם אם תשנו את הערך מ-
noneל-resource, הוא עדיין לא יעבוד.אם אתם מנהלים משאבים באמצעות השדה resourceID, אתם יכולים ליצור כמה משאבים עם אותו שם משאב, שנוצרו באותו מרחב שמות. Google Cloud המשאבים האלה יוצרים קונפליקטים ש-Config Connector לא יכול לנהל.