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

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

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

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

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

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