במאמר הזה מוסבר איך להגדיר ערך של זמן קצוב לתפוגה במקרה של הפרה של תקציב לשיבוש Pod (PDB) בניקוז של צומת באשכול.
כשמרוקנים צומת, כל ה-Pods בצומת חייבים להיסגר. כברירת מחדל, אם סיום של Pod מפר PDB, הניקוז של הצומת נחסם.
במצבים מסוימים, יכול להיות שתרצו להגדיר זמן מקסימלי שבו הפרה של PDB יכולה לחסום את הניקוז של צומת. לדוגמה, יכול להיות שתרצו להגדיר ערך של זמן קצוב לתפוגה לפני שתתחילו לעדכן או לשדרג אשכול. או שאולי תצטרכו להגדיר ערך של זמן קצוב לתפוגה לצומת שכרגע חסימה של הפרת PDB מונעת את הניקוז שלו.
הגדרת ערך של זמן קצוב לתפוגה
כל צומת מיוצג על ידי אובייקט Machine.
מציגים ברשימה את אובייקטי המכונות באשכול:
kubectl --kubeconfig CLUSTER_KUBECONFIG get machines
מחליפים את CLUSTR_KUBECONIFG בנתיב של קובץ ה-kubeconfig של האשכול.
פלט לדוגמה:
my-node-pool-7f864959cd-cw472 my-node-pool-7f864959cd-kh86m my-node-pool-7f864959cd-wtpvx
פותחים אובייקט של מכונה לעריכה:
kubectl --kubeconfig CLUSTER_KUBECONFIG edit machine MACHINE_NAME
מחליפים את MACHINE_NAME בשם של אובייקט המכונה.
בעורך, מוסיפים את ההערה הבאה:
onprem.cluster.gke.io/pdb-violation-timeout: TIMEOUT
מחליפים את TIMEOUT במחרוזת שמציינת את משך הזמן של זמן קצוב לתפוגה. יחידות הזמן הקבילות הן s, m ו-h. דוגמאות לערכי זמן: 1h, 1h30m, 10m ו-100s.
אם מגדירים את ערך הזמן הקצוב לתפוגה כ-"0s", לא יחול אף פעם זמן קצוב לתפוגה על הפרות של כללי המדיניות בנושא PDB. זהה להתנהגות ברירת המחדל.
דוגמה:
apiVersion: cluster.k8s.io/v1alpha1
kind: Machine
metadata:
annotations:
kubelet-version: 1.23.5-gke.1502
onprem.cluster.gke.io/gke-on-prem-version: 1.12.0-gke.430
vm-ip-address: 203.0.113.2
onprem.cluster.gke.io/pdb-violation-timeout: "5m"
סוגרים את סשן העריכה.
עדכונים בהדרגה (rolling)
במהלך עדכון הדרגתי, קודם נוצרת מכונת גל חדשה. לאחר מכן, הצומת הישן מתרוקן, ואחרי שכל ה-Pods שבו פונו, אובייקט ה-Machine הישן ואובייקט ה-Node נמחקים. הערת הזמן הקצוב לתפוגה של הפרת PDB לא נשמרת באובייקט המכונה שנוצר לאחרונה.