מגבלות על צירוף נפחי אחסון מתמיד לצמתים של GKE

במאמר הזה מוסבר איך פועלות מגבלות הצירוף של נפחים מתמשכים (Persistent Volume) לדיסקים מתמשכים (Persistent Disk) ולדיסקים מסוג Hyperdisk ב-Compute Engine בצמתי Google Kubernetes Engine‏ (GKE). כדי לתזמן עומסי עבודה בצורה נכונה ולקבוע את הגודל של מאגר הצמתים, חשוב להבין מהו המספר המקסימלי של נפחי אחסון קבועים שאפשר לצרף לצומת GKE. אם אתם רוצים שליטה רבה יותר על תזמון עומסי העבודה, במיוחד כשאתם משתמשים בכמה סוגי דיסקים עם מגבלות שונות של צירוף במכונה אחת, אתם יכולים להשתמש בתווית צומת כדי לשנות את מגבלות ברירת המחדל של הצירוף.

המסמך הזה מיועד למומחי אחסון שיוצרים ומקצים אחסון, ולאדמינים של GKE שמנהלים את תזמון עומסי העבודה ואת גודל מאגר הצמתים. מידע נוסף על תפקידים נפוצים ומשימות לדוגמה שמוזכרים ב Google Cloud תוכן זמין במאמר תפקידים נפוצים של משתמשים בגרסה הארגונית ומשימות ב-GKE Enterprise.

סקירה כללית

ב-GKE, כשמבקשים PersistentVolume ‏(PV) באמצעות מנהל ההתקן של ה-CSI של Persistent Disk ב-Compute Engine (pd.csi.storage.gke.io), נפח אחסון בלוקים מוקצה משירות Persistent Disk‏ ( Google Cloud ).

כשמפעילים את מנהל ההתקן של ה-CSI של Persistent Disk ב-Compute Engine‏ (PDCSI) באשכולות GKE, מנהל ההתקן של ה-PDCSI מחשב ומדווח על מגבלת הצירוף של נפח אחסון מתמשך לכל צומת אל kubelet. על סמך המידע הזה, מתזמן Kubernetes מקבל החלטות תזמון כדי לוודא שהוא לא מתזמן יותר מדי Pods שדורשים נפחי אחסון קבועים בצומת שהגיע לקיבולת הצירוף שלו. אם מנהל ההתקן של PDCSI דיווח על מגבלות לא מדויקות של צירוף, ובאופן ספציפי על מספר גבוה מהמגבלה בפועל, לא תתבצע הקצאה של ה-Pods והם יישארו במצב Pending. זה יכול לקרות בסוגי מכונות מהדור השלישי, כמו C3, שיש להם מגבלות שונות לצירוף של Hyperdisks ו-Persistent Disks.

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

במכונות מדורות ישנים יותר מהדור הרביעי, מנהל ההתקן של PDCSI ב-Compute Engine מגדיר מגבלת צירוף של 128 דיסקים (127 דיסקים של נתונים ודיסק אתחול אחד) לכל סוגי המכונות. מגבלת הצירוף חלה על נפחי אחסון מתמיד (Persistent Disk) ו-Hyperdisk ביחד. ב-Hyperdisk, מגבלת הצירוף נקבעת לפי סוג המכונה הבסיסי של Compute Engine, מספר יחידות ה-vCPU שיש למכונה וסוג ה-Hyperdisk הספציפי.

לדוגמה:

  • בסוגי מכונות מהדור הרביעי, כמו C4, מנהל ההתקן של PDCSI מדווח ל-Kubernetes באופן מדויק על מגבלת ברירת המחדל לצירוף, שמחושבת על סמך מספר ה-vCPU של הצומת. מגבלת הצירוף המדווחת היא בדרך כלל בטווח של 8-128 אמצעי אחסון קבועים.
  • לעומת זאת, בסוגי מכונות מהדור השלישי כמו C3, מנהל ההתקן של PDCSI מדווח על מגבלת ברירת מחדל לצירוף ל-Kubernetes בתור המגבלה הקבועה של 128 דיסקים, מה שעלול לגרום לכשל בתזמון של Pod כי המגבלה בפועל יכולה להיות נמוכה מ-128 בהתאם למספר ה-vCPU.

אפשר לשנות את מגבלת ברירת המחדל של צירוף באמצעות תווית צומת.

כדאי להיעזר במקורות המידע הבאים במאמרי העזרה של Compute Engine:

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

אם יש לכם דרישות ספציפיות או הגדרות אישיות של צמתים שבהן אתם רוצים לצרף מספר ספציפי של אמצעי אחסון קבועים לצמתים, אתם יכולים לשנות את מגבלת ברירת המחדל של צירוף אמצעי אחסון קבועים למאגר צמתים באמצעות תווית הצומת הבאה: 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

מאגר צמתים קיים

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

  1. מעדכנים את מגבלת הצירוף במאגר הצמתים:

    gcloud container node-pools update NODE_POOL_NAME \
        --cluster=CLUSTER_NAME \
        --node-labels=node-restriction.kubernetes.io/gke-volume-attach-limit-override=VALUE
    
  2. מפעילים מחדש את DaemonSet של pdcsi-node:

    kubectl rollout restart ds pdcsi-node -n kube-system
    

    המגבלה החדשה על צירוף קבצים חלה אחרי שמכשירי ה-Pods נמצאים במצב pdcsi-nodeRunning.

מחליפים את מה שכתוב בשדות הבאים:

  • ‫NODE_POOL_NAME: השם של מאגר הצמתים שרוצים ליצור או לעדכן.
  • ‫CLUSTER_NAME: השם של האשכול שבו רוצים ליצור או לעדכן את מאגר הצמתים.
  • ‫VALUE: מספר שלם בין 0 ל-127 שמציין את המספר החדש של כרכים קבועים שאפשר לצרף. אם מציינים ערך גבוה מ-127, תווית הצומת מתעלמת מהערך ודרייבר ה-PDCSI משתמש במגבלת ברירת המחדל של צירוף נפח מתמשך. מגבלת ברירת המחדל היא 128 למכונות מהדור השלישי, וערך שמבוסס על מספר ה-vCPU למכונות מהדור הרביעי.

אימות הביטול

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

בפקודות הבאות, מחליפים את NODE_NAME בשם של צומת ששייך למאגר הצמתים הספציפי שבו החלתם את החלפת התווית של הצומת.

  1. בודקים את תוויות הצמתים:

    kubectl get node NODE_NAME --show-labels
    

    הפלט צריך לכלול את התווית node-restriction.kubernetes.io/gke-volume-attach-limit-override.

  2. בדיקת הקיבולת של הצומת:

    kubectl describe node NODE_NAME
    

    הפלט צריך לכלול את הקיבולת attachable-volumes-gce-pd, שצריכה להיות זהה לערך החלפת ברירת המחדל שהגדרתם למאגר הצמתים. מידע נוסף זמין במאמר בנושא בדיקת משאבים שניתנים להקצאה בצומת.

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