יכול להיות שבמצבים מסוימים תצטרכו להפסיק במהירות את הסנכרון של הגדרות ממקור האמת באמצעות סנכרון תצורות. תרחיש כזה יכול לקרות אם מישהו מבצע קומיט של הגדרה שגויה במקור, אבל ההגדרה תקינה מבחינת התחביר, ואתם רוצים להגביל את ההשפעות שלה על האשכולות הפועלים בזמן שההגדרה מוסרת או מתוקנת.
הדף הזה מיועד רק להתקנות ידניות של סנכרון תצורות באמצעות kubectl.
בכל שיטות ההתקנה האחרות, משתמשים ב-CLI של gcloud בשדה spec.configSync.stopSyncing על ידי הגדרת true בקובץ התצורה של סנכרון תצורות. לאחר מכן, כדי להמשיך את הסנכרון, מגדירים את השדה לערך false.
הדף הזה מיועד לאדמינים ולמפעילים בתחום ה-IT שמנהלים את מחזור החיים של תשתית טכנולוגית בסיסית. מידע נוסף על תפקידים נפוצים ומשימות לדוגמה שאנחנו מתייחסים אליהם בתוכן זמין במאמר תפקידים נפוצים של משתמשי GKE ומשימות. Cloud de Confiance by S3NS
דרישות מוקדמות
כדי להשתמש בפקודות שבמסמך הזה, אתם צריכים את הרשאות ה-RBAC הבאות של Kubernetes במרחבי השמות config-management-system בכל האשכולות שבהם אתם רוצים להפסיק את הסנכרון:
- apiGroups: ["extensions"]
resources: ["deployments", "deployments/scale"]
verbs: ["get", "update"]
- apiGroups: [""]
resources: ["pods"]
verbs: ["list", "watch"]
הפסקה והמשך של סנכרון ממקור אמת
בקטע הזה מוסבר איך להפסיק את הסנכרון במהירות, ואיך להמשיך את הסנכרון אחרי שהבעיה נפתרה. כדי להפסיק את הסנכרון של יותר ממקור אמת אחד, אפשר לעיין במאמר בנושא הפסקה והפעלה מחדש של סנכרון מיותר ממקור אמת אחד.
הפסקת הסנכרון
כדי להפסיק את הסנכרון של אשכול יחיד, מריצים את הפקודה הבאה:
kubectl scale -n config-management-system deployment --replicas=0 --all \ && kubectl wait -n config-management-system --for=delete pods --all
הפקודות מקטינות את replicasהספירה של כל הפריסות שפועלות במרחב השמות config-management-system ל-0. הסט המדויק של הפריסות המושפעות משתנה בהתאם לגרסת המוצר.
כל הפריסות עדיין נמצאות באשכול, אבל אין רפליקות של התהליכים שאחראים על הסנכרון, ולכן ההגדרות לא מסונכרנות ממקור האמת.
כדי לוודא שכל התהליכים הופסקו, משתמשים בפקודה הבאה ומוודאים שלכל הפריסות יש אפס רפליקות:
kubectl get -n config-management-system deployment
אם צריך להפסיק את הסנכרון בכמה אשכולות, מריצים את הפקודות שלמעלה לכל אשכול.
המשך הסנכרון
כדי להמשיך את הסנכרון של אשכול יחיד, מריצים את הפקודה הבאה:
kubectl -n config-management-system scale deployment reconciler-manager --replicas=1
הפקודה הזו משנה את קנה המידה של פריסת Reconciler Manager ל-1 רפליקה. לאחר מכן, מנהל ה-Reconciler מבחין שה-Pods בפריסות של מרחב השמות config-management-system לא מותאמים בצורה נכונה, ומבצע התאמה של מספר הרפליקות שלהם.
אם אתם צריכים להפעיל מחדש את הסנכרון בכמה אשכולות, מריצים את הפקודה הקודמת לכל אשכול.
הפסקה והמשך של סנכרון מכמה מקורות אמת
הקטע הזה מיועד ליותר ממקור אמת אחד, ומסביר איך להפסיק באופן זמני את הסנכרון מיותר ממקור אמת אחד ולחדש אותו. כדי ללמוד איך להפסיק את הסנכרון של מקור מרוכז אחד, אפשר לעיין במאמר בנושא הפסקה והפעלה מחדש של סנכרון ממקור מרוכז.
רק אדמין מרכזי יכול להפסיק את הסנכרון במקור האמת הבסיסי.
האפשרות להפסיק את הסנכרון ביותר ממקור אמת אחד תלויה בשיטת ההגדרה שבה השתמשתם כשקבעתם סנכרון מכמה מקורות אמת:
אם השתמשתם בשיטה שליטה במקורות במקור אמת בסיסי, רק אדמין מרכזי יכול להפסיק את הסנכרון ולהפעיל אותו מחדש.
אם השתמשתם בשיטה שליטה במקור האמת באמצעות Kubernetes API, מפעילים של אפליקציות יכולים להפסיק ולחדש את הסנכרון ממקורות האמת בהיקף מרחב השמות שהם עובדים איתם.
הפסקת הסנכרון
בקטעים הבאים מוסבר איך להפסיק את הסנכרון של מקור האמת הבסיסי ושל מקורות האמת שמוגבלים למרחב שמות. כדי למנוע את החזרת השינוי על ידי Reconciler Manager, צריך קודם להפסיק את Reconciler Manager על ידי הפעלת הפקודות הבאות:
kubectl scale deployment -n config-management-system reconciler-manager --replicas=0 \ && kubectl wait -n config-management-system --for=delete pods -l app=reconciler-manager
הפקודות האלה יקטינו את המספר replicas בפריסת Reconciler Manager ל-0.
הפסקת הסנכרון ממקור האמת הבסיסי
כדי להפסיק את הסנכרון של אשכול ממקור האמת הבסיסי, אדמין מרכזי יכול להריץ את הפקודה הבאה:
kubectl -n config-management-system scale deployment root-reconciler --replicas=0
הפקודה הזו מקטינה את המספר replicas ב-root-reconciler
Deployment ל-0.
כדי להפסיק את הסנכרון בכמה אשכולות, צריך להריץ את הפקודה שלמעלה לכל אשכול.
הפסקת הסנכרון ממקור אמת בהיקף של מרחב שמות
בוחרים בכרטיסייה Root source of truth method או בכרטיסייה Kubernetes API method כדי לראות את ההוראות הרלוונטיות.
שיטת מקור המידע האמין
אם השתמשתם בשיטה שליטה במקורות האמת של מרחב השמות במקור האמת הבסיסי, אדמינים מרכזיים יכולים להריץ את הפקודות הבאות כדי להפסיק את הסנכרון של אשכול ממקור אמת של מרחב שמות:
kubectl -n config-management-system scale deployment ns-reconciler-NAMESPACE --replicas=0
הפקודה מקטינה את מספר העותקים של ns-reconciler-NAMESPACE Deployment ל-0.
כדי להפסיק את הסנכרון בכמה אשכולות, צריך להריץ את הפקודה שלמעלה לכל אשכול.
שיטת Kubernetes API
אם השתמשתם בשיטה שליטה במקורות בהיקף מרחב השמות באמצעות Kubernetes API, מפעילים של אפליקציות יכולים להריץ את הפקודות הבאות כדי להפסיק את הסנכרון של אשכול:
אחזור ההגדרה של
RepoSyncושמירתה לשימוש מאוחר יותר, כשרוצים להמשיך את הסנכרון:kubectl -n NAMESPACE get reposyncs repo-sync -oyaml > repo-sync.yamlמחליפים את
NAMESPACEבמרחב השמות של אובייקט RepoSync.מחיקת ההגדרה של
RepoSync:kubectl -n NAMESPACE delete reposyncs repo-syncהפקודה הזו מפעילה את Reconciler Manager כדי להסיר את מרחב השמות reconciler (
ns-reconciler-NAMESPACE) מ-NAMESPACE ומפסיקה את הסנכרון.אם צריך להפסיק את הסנכרון בכמה אשכולות, מריצים את הפקודות שלמעלה לכל אשכול.
הפסקת החסימה של סטיות על ידי webhook של הרשאות כניסה (אופציונלי)
ה-webhook של סנכרון תצורות admission מושבת כברירת מחדל, ואפשר להפעיל ולהשבית את הפונקציונליות למניעת סטיות שסופקה על ידי ה-webhook של admission באמצעות Google Cloud CLI או kubectl.
הפסקת הסנכרון מכל המקורות המרכזיים
כדי להפסיק את הסנכרון מכל המקורות המוסמכים, כולל המקור המוסמך הראשי ומקורות בהיקף של מרחב שמות, מריצים את הפקודות הבאות:
kubectl scale deployment -n config-management-system -l app=reconciler --replicas=0 \ && kubectl wait -n config-management-system --for=delete pods -l app=reconciler
הפקודות מצמצמות את המספר replicas של כל ה-Pods של Reconciler שפועלים במרחב השמות config-management-system ל-0, וממתינות עד שכל ה-Pods של Reconciler יימחקו.
כל הפריסות של Reconciler עדיין נמצאות באשכול, אבל אין עותקים משוכפלים של Reconciler או של אף אחד מהתהליכים שאחראים על הסנכרון, ולכן ההגדרות לא מסונכרנות ממקור האמת.
המשך הסנכרון
בקטע הזה מוסבר איך לחדש את הסנכרון של מקור האמת הבסיסי ושל מקורות בהיקף של מרחב שמות.
חידוש הסנכרון ממקור האמת הבסיסי
כדי להפעיל מחדש את הסנכרון ממקור אמת בסיסי, אדמין מרכזי יכול להריץ את הפקודה הבאה:
kubectl -n config-management-system scale deployment root-reconciler --replicas=1
הפקודה הזו משנה את קנה המידה של הפריסה root-reconciler ל-1 רפליקה.
חידוש הסנכרון ממקור בהיקף של מרחב שמות
בוחרים בכרטיסייה Root source of truth method או בכרטיסייה Kubernetes API method כדי לראות את ההוראות הרלוונטיות.
שיטת מקור המידע האמין
אם השתמשתם בשיטה שליטה במקורות עם מרחב שמות בתוך מקור אמת בסיסי, אדמין מרכזי יכול להריץ את הפקודה הבאה:
kubectl -n config-management-system scale deployment ns-reconciler-NAMESPACE --replicas=1
הפקודה הזו משנה את קנה המידה של הפריסה ns-reconciler-NAMESPACE ל-1 רפליקה.
שיטת Kubernetes API
אם השתמשתם בשיטה Control namespace-scoped sources with the Kubernetes API, מפעילים של אפליקציות יכולים להמשיך את הסנכרון על ידי החלה מחדש של repo-sync.yaml שמכיל את ההגדרה RepoSync:
kubectl apply -f repo-sync.yaml
הפקודה הזו מפעילה את Reconciler Manager כדי ליצור תהליך של namespace reconciler וליצור פריסת ns-reconciler-NAMESPACE.
הפעלה והשבתה של ה-webhook של הגישה
ה-webhook של סנכרון תצורות admission מושבת כברירת מחדל, ואפשר להפעיל ולהשבית את הפונקציונליות למניעת סטיות שסופקה על ידי ה-webhook של admission באמצעות Google Cloud CLI או kubectl.
המשך הסנכרון מכל המקורות המהימנים
כדי להמשיך את הסנכרון, מריצים את הפקודה הבאה:
kubectl -n config-management-system scale deployment reconciler-manager --replicas=1
הפקודה הזו משנה את קנה המידה של פריסת Reconciler Manager ל-1 רפליקה. לאחר מכן, מנהל ה-Reconciler משנה את קנה המידה של ה-Reconciler הבסיסי ושל ה-Reconciler של מרחב השמות למספר העותקים התואם.