במאמר הזה מוסבר איך פועלות מגבלות הצירוף של נפח אחסון קבוע ל-Compute Engine Persistent Disks ול-Hyperdisks בצמתים של Google Kubernetes Engine (GKE). כדי לתזמן עומסי עבודה בצורה נכונה ולקבוע את הגודל של מאגר הצמתים, חשוב להבין מהו המספר המקסימלי של נפחי אחסון קבועים שאפשר לצרף לצומת GKE. אם אתם רוצים שליטה טובה יותר בתזמון של עומסי עבודה, במיוחד כשאתם משתמשים בכמה סוגי דיסקים עם מגבלות שונות לצירוף למופע יחיד, אתם יכולים להשתמש בתווית צומת כדי לבטל את מגבלות הצירוף שמוגדרות כברירת מחדל.
המסמך הזה מיועד למומחי אחסון שיוצרים ומקצים אחסון, ולאדמינים של GKE שמנהלים את תזמון עומסי העבודה ואת גודל מאגר הצמתים. מידע נוסף על תפקידים נפוצים ומשימות לדוגמה שמוזכרים ב Google Cloud תוכן זמין במאמר תפקידים נפוצים של משתמשים ומשימות ב-GKE Enterprise.
סקירה כללית
ב-GKE, כשמבקשים PersistentVolume (PV) באמצעות מנהל ההתקן של ה-CSI של דיסקים לאחסון מתמיד ב-Compute Engine (pd.csi.storage.gke.io), נפח אחסון של בלוקים מוקצה משירות הדיסקים לאחסון מתמיד Google Cloud .
כשמפעילים את מנהל ההתקן של ה-CSI של דיסק מתמשך ב-Compute Engine (PDCSI) באשכולות GKE, מנהל ההתקן של ה-PDCSI מחשב את מגבלת הצירוף של נפח אחסון מתמשך לכל צומת ומדווח עליה ל-kubelet. על סמך המידע הזה, מתזמן Kubernetes מקבל החלטות לגבי תזמון כדי לוודא שהוא לא מתזמן יותר מדי Pods שדורשים נפחים קבועים בצומת שהגיע לקיבולת ההצמדה שלו. אם מנהל ההתקן של PDCSI דיווח על מגבלות לא מדויקות של צירוף, ובמיוחד על מספר גבוה יותר מהמגבלה בפועל, לא תתבצע הקצאה של ה-Pods והם יישארו במצב Pending. זה יכול לקרות בסוגי מכונות מהדור השלישי, כמו C3, שיש להם מגבלות שונות לצירוף של Hyperdisks ו-Persistent Disks.
הסבר על מגבלות הצירוף של נפח אחסון מתמיד
במכונות מדורות ישנים יותר מהדור הרביעי, מנהל ההתקן של PDCSI ב-Compute Engine מגדיר מגבלה של 128 דיסקים (127 דיסקים של נתונים ודיסק אתחול אחד) לצירוף של נפח אחסון מתמיד (persistent volume) מצטבר בכל סוגי המכונות. מגבלת הצירוף חלה על שילוב של נפחי Persistent Disk ו-Hyperdisk. ב-Hyperdisk, מגבלת הצירוף נקבעת לפי סוג המכונה הבסיסי ב-Compute Engine, מספר יחידות ה-vCPU שיש למכונה וסוג ה-Hyperdisk הספציפי.
לדוגמה:
- בסוגי מכונות מהדור הרביעי, כמו C4, מנהל ההתקן של PDCSI מדווח בצורה מדויקת על מגבלת ברירת המחדל לצירוף ל-Kubernetes, שמחושבת על סמך מספר ה-vCPU של הצומת. המגבלה המדווחת על צירוף נפחים מתמידים היא בדרך כלל בטווח של 8 עד 128 נפחים מתמידים.
- לעומת זאת, בסוגי מכונות מהדור השלישי כמו C3, מנהל ההתקן של PDCSI מדווח על מגבלת ברירת מחדל לצירוף ל-Kubernetes כמגבלה קבועה של 128 דיסקים, מה שעלול לגרום לכשל בתזמון של Pod, כי המגבלה בפועל יכולה להיות נמוכה מ-128 בהתאם למספר ה-vCPU.
אפשר לשנות את מגבלת ברירת המחדל של צירוף באמצעות תווית צומת.
כדאי לעיין במקורות המידע המועילים הבאים במסמכי Compute Engine:
- בטבלה שבקטע מינוח של Compute Engine מפורטים הדורות הזמינים של מכונות Compute Engine.
- לרשימה של סוגי מכונות וסוגי Persistent Disk תואמים, ראו תמיכה בסדרות מכונות.
- כדי לדעת מהן מגבלות הצירוף המקסימליות של Hyperdisk בהתאם למספרים שונים של ליבות CPU בסוגים שונים של Hyperdisk, אפשר לעיין במאמר נפחי Hyperdisk מקסימליים לכל מכונה וירטואלית.
- כדי להבין איך מכסות הצירוף של Hyperdisk חלות על צומת, אפשר לעיין בסיכום של מכסות Hyperdisk לכל מכונה וירטואלית.
שינוי ברירת המחדל של המגבלה על צירוף נפח אחסון מתמיד
אם יש לכם דרישות ספציפיות או הגדרות צומת שבהן אתם רוצים לצרף מספר מסוים של נפחים מתמשכים לצמתים, אתם יכולים לבטל את מגבלת ברירת המחדל של צירוף נפחים מתמשכים למאגר צמתים באמצעות תווית הצומת הבאה: node-restriction.kubernetes.io/gke-volume-attach-limit-override: VALUE.
אפשר להשתמש בתווית הצומת הזו בגרסאות הבאות של GKE:
1.32.4-gke.1698000ואילך.1.33.1-gke.1386000ואילך.
מאגר צמתים חדש
כדי ליצור מאגר צמתים חדש עם מגבלת צירוף ספציפית של נפח אחסון מתמשך, מריצים את הפקודה הבאה:
gcloud container node-pools create NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--node-labels=node-restriction.kubernetes.io/gke-volume-attach-limit-override=VALUE
מאגר צמתים קיים
כדי לשנות את המגבלה הנוכחית של צירוף נפח אחסון קבוע של מאגר צמתים קיים, פועלים לפי השלבים הבאים:
מעדכנים את מגבלת הצירוף במאגר הצמתים:
gcloud container node-pools update NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --node-labels=node-restriction.kubernetes.io/gke-volume-attach-limit-override=VALUEמפעילים מחדש את DaemonSet של
pdcsi-node:kubectl rollout restart ds pdcsi-node -n kube-systemהמגבלה החדשה על צירוף קבצים חלה אחרי שמכשירי ה-Pod נמצאים במצב
pdcsi-nodeRunning.
מחליפים את מה שכתוב בשדות הבאים:
-
NODE_POOL_NAME: השם של מאגר הצמתים שרוצים ליצור או לעדכן. -
CLUSTER_NAME: השם של האשכול שבו רוצים ליצור או לעדכן את מאגר הצמתים. -
VALUE: מספר שלם בין0ל-127שמציין את המספר החדש של נפחי אחסון קבועים שאפשר לצרף. אם מציינים ערך גבוה מ-127, המערכת מתעלמת מתווית הצומת ומנהל ההתקן של PDCSI משתמש במגבלת ברירת המחדל של צירוף נפח אחסון קבוע. המגבלה שמוגדרת כברירת מחדל היא 128 למכונות מהדור השלישי, וערך שמבוסס על מספר ליבות ה-vCPU למכונות מהדור הרביעי.
אימות הביטול
כדי לוודא שההחלפה בוצעה בצורה נכונה, בודקים את תוויות הצומת ואת קיבולת הצומת.
בפקודות הבאות, מחליפים את NODE_NAME בשם של צומת ששייך למאגר הצמתים הספציפי שבו החלתם את החלפת תווית הצומת.
בודקים את תוויות הצמתים:
kubectl get node NODE_NAME --show-labelsהפלט צריך לכלול את התווית
node-restriction.kubernetes.io/gke-volume-attach-limit-override.בדיקת הקיבולת של הצומת:
kubectl describe node NODE_NAMEהפלט צריך לכלול את הקיבולת
attachable-volumes-gce-pd, שצריכה להיות זהה לערך ברירת המחדל שהגדרתם למאגר הצמתים. מידע נוסף זמין במאמר בנושא בדיקת משאבים שניתן להקצות בצומת.