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

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

    המגבלה החדשה על צירוף קבצים חלה אחרי שמגיעים למצב pdcsi-node PodsRunning.

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

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

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