הפסקה והמשך של סנכרון ההגדרות

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

הדף הזה מיועד רק להתקנות ידניות של Config Sync באמצעות kubectl. בכל שיטות ההתקנה האחרות, משתמשים ב-CLI של gcloud spec.configSync.stopSyncing field על ידי הגדרת true בקובץ ההגדרות של Config Sync. לאחר מכן, כדי להמשיך את הסנכרון, מגדירים את השדה לערך 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.

כדי להפסיק את הסנכרון בכמה אשכולות, צריך להריץ את הפקודה שלמעלה לכל אשכול.

הפסקת הסנכרון ממקור אמת בהיקף של מרחב שמות

בוחרים בכרטיסייה שיטת מקור האמת הבסיסי או בכרטיסייה שיטת Kubernetes API כדי לראות את ההוראות הרלוונטיות.

שיטת המקור הקובע

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

kubectl -n config-management-system scale deployment ns-reconciler-NAMESPACE --replicas=0

הפקודה מצמצמת את מספר העותקים של ns-reconciler-NAMESPACE Deployment ל-0.

כדי להפסיק את הסנכרון בכמה אשכולות, צריך להריץ את הפקודה שלמעלה לכל אשכול.

שיטת Kubernetes API

אם השתמשתם בשיטה שליטה במקורות בהיקף של מרחב שמות באמצעות Kubernetes API, מפעילים של אפליקציות יכולים להריץ את הפקודות הבאות כדי להפסיק את הסנכרון של אשכול:

  1. מאחזרים את ההגדרה של RepoSync ושומרים אותה כדי להשתמש בה בהמשך כשרוצים להמשיך את הסנכרון:

    kubectl -n NAMESPACE get reposyncs repo-sync -oyaml > repo-sync.yaml
    

    מחליפים את NAMESPACE במרחב השמות של אובייקט RepoSync.

  2. מחיקת ההגדרה של RepoSync:

    kubectl -n NAMESPACE delete reposyncs repo-sync
    

    הפקודה הזו מפעילה את Reconciler Manager כדי להסיר את מרחב השמות reconciler‏ (ns-reconciler-NAMESPACE) מ-NAMESPACE ומפסיקה את הסנכרון.

    כדי להפסיק את הסנכרון בכמה אשכולות, צריך להריץ את הפקודות שלמעלה לכל אשכול.

הפסקת החסימה של סטיות על ידי webhook של הרשאות (אופציונלי)

ה-webhook של Config Sync 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 של כל ה-Reconciler Pods שפועלים במרחב השמות config-management-system ל-0, וממתינות עד שכל ה-Reconciler Pods יימחקו.

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

המשך הסנכרון

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

חידוש הסנכרון ממקור האמת הבסיסי

כדי להפעיל מחדש את הסנכרון ממקור מרכזי, אדמין מרכזי יכול להריץ את הפקודה הבאה:

kubectl -n config-management-system scale deployment root-reconciler --replicas=1

הפקודה הזו משנה את קנה המידה של הפריסה root-reconciler ל-1 רפליקה.

חידוש הסנכרון ממקור בהיקף של מרחב שמות

בוחרים בכרטיסייה שיטת מקור האמת הבסיסי או בכרטיסייה שיטת Kubernetes API כדי לראות את ההוראות הרלוונטיות.

שיטת המקור הקובע

אם השתמשתם בשיטה שליטה במקורות בהיקף של מרחב שמות במקור אמת בסיסי, אדמין מרכזי יכול להריץ את הפקודה הבאה:

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 של Config Sync admission מושבת כברירת מחדל, ואפשר להפעיל ולהשבית את הפונקציונליות של מניעת סחף שסופקה על ידי ה-webhook של admission באמצעות Google Cloud CLI או kubectl.

המשך הסנכרון מכל המקורות המהימנים

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

kubectl -n config-management-system scale deployment reconciler-manager --replicas=1

הפקודה הזו משנה את קנה המידה של פריסת Reconciler Manager ל-1 רפליקה. לאחר מכן, מנהל ה-Reconciler משנה את קנה המידה של ה-Reconciler הבסיסי ושל ה-Reconciler של מרחב השמות למספר העותקים התואם.

המאמרים הבאים