כיצד להשתמש ב-Linux sysctls ב-Kubernetes

Kyzd Lhstms B Linux Sysctls B Kubernetes



פוסט זה ידון במה זה Linux sysctl ב-Kubernetes וכיצד ניתן להשתמש בו בתוך אשכול של Kubernetes. ה-sysctl הוא ממשק במערכת ההפעלה לינוקס המאפשר למנהל לשנות את הפרמטרים של הליבה בזמן ריצה. כאן, נדגים כיצד להשתמש ב-Linux sysctls בפלטפורמת Kubernetes. אנו נדגים דוגמה פשוטה כדי לעזור לך להבין לאיזה סוג פלט אתה יכול לצפות בעת יישום פקודות kubectl לשימוש ב-sysctls ב-Kubernetes.

מה הם sysctls?

ה-sysctls הוא ממשק בלינוקס המשמש להתאמת פרמטרי ליבה בזמן ריצה עבור מרחב השמות במיכל. ניתן למצוא פרמטרים אלו בקובץ התהליך הוירטואלי /proc/sys/ והם מכסים תת-מערכות שונות כמו זיכרון וירטואלי, רשתות, ליבה וכו'. ניתן להגדיר רק sysctls עם רווחי שמות באופן עצמאי על pods ו-Kubernetes חושף את הגדרות sysctl. יש להגדיר את ה-sysctls של רמת הצומת שאינם ברווחי שמות עם הגדרות אחרות של sysctls, כמו אופרטור כוונון הצומת. יתר על כן, רק sysctls בטוחים נמצאים ברשימת ההיתרים כברירת מחדל, בעוד שה-syscts הלא בטוחים צריכים להיות מופעלים באופן ידני בצומת כדי שיוכלו להיות זמינים למשתמש. כעת, הבה נבין כיצד להשתמש ב-Linux sysctls ב-Kubernetes.







דרישות מוקדמות

לפני שתתחיל ללמוד כיצד להשתמש ב-Linux sysctls ב-Kubernetes, ודא שהכלים הבאים מותקנים במערכת שלך:



    • Kubernetes גרסה 1.23 או כל גרסה עדכנית אחרת
    • אובונטו 20.04 או כל גרסה עדכנית אחרת
    • Sysctls לתמיכה בפוד
    • כלי שורת הפקודה Kubectl
    • אשכול מיניקוב

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



כיצד להשתמש ב-Linux sysctls ב- Kubernetes?

מערכת ההפעלה לינוקס היא פלטפורמה המאפשרת לך לכוון את הגרעינים באמצעות כפתורי sysctls בערימת הרשת. לחלק מה-sysctls יש מרחב שמות עבור פוד עם תצורה משלו בעוד שאחרים תקפים עבור המערכת כולה. Kubernetes קיבצה את ממשק sysctls לשתי קטגוריות:





    • מרווחי שמות לעומת sysctls ברמת הצומת
    • מערכות בטוחות לעומת לא בטוחות

מרווחי שמות לעומת sysctls ברמת הצומת:

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



    • fs.mqueue.*
    • kernel .msg*
    • kernel.shm*
    • kernel.sem

ה-sysctls ברמת הצומת אינם מרווחים שמות ומנהל האשכול צריך להגדיר אותם באופן ידני. מנהל האשכול משתמש בערכת שדים עם מיכל מועדף או יכול לשנות את הפצת הלינוקס של הצומת /etc/sysctls.conf. ניתן להשתמש ב-Node Tuning Operator גם כדי להגדיר את רמת ה-Node sysctls.

מערכות בטוחות לעומת לא בטוחות:

ישנן שתי קבוצות של מערכות: בטוחות ולא בטוחות. ה-Sysctls הבטוחים מרווחים כראוי והם מבודדים לחלוטין בתוך התרמילים באותו צומת. ה-Sysctls הבטוחים מופעלים כברירת מחדל וניתן להשתמש בהם בפוד על ידי שינוי מפרט הפוד. עם זאת, ה-sysctls הלא בטוחים מושבתים כברירת מחדל וצריך להפעיל אותם ידנית על ידי מנהל האשכול. המערכות הבטוחות אינן משפיעות על שכניהם מכיוון שהם מרווחים כראוי. בעוד שהמערכות הלא בטוחות עלולות להשפיע באופן בלתי צפוי על שכניהם כמו עומס יתר על המערכת. קבוצת ה-sysctls הבטוחה היא כדלקמן:

    • net.ipv4.ping_group_range
    • net.ipv4.ip_local_port_range
    • kernel.shm_rmid_forced
    • net.ipv4.tcp_syncookies

הנקודה שיש לציין כאן היא שרק החלפת שמות בלבד אינה מספיקה כדי שה-sysctl ייחשב בטוח.

כעת, לאחר שהבנו את שתי הקטגוריות של sysctls, הבה נמשיך ללמוד כיצד להשתמש ב-sysctls הללו ב-Kubernetes. כאן, אנו נדריך אותך כיצד להשתמש ב-sysctls בטוחים וגם לא בטוחים וכיצד להפעיל ידנית syscts לא בטוחים ב-Kubernetes.

שלב מס' 1: התחל את אשכול Minikube

ניתן להשתמש בפלטפורמת Kubernetes באמצעות אשכולות מסוימים ואנו משתמשים כאן באשכול המיניקוב. כדי להפעיל את אשכול ה-minikube, אתה יכול להשתמש בפקודה שניתנה להלן:

> התחל מיניקוב


זה יתחיל את אשכול ה-minikube שבו תוכל להריץ את פקודות kubectl ולהשתמש ב-Linux sysctls בפלטפורמת Kubernetes. כאשר אתה מבצע פקודה זו, תקבל פלט דומה לזה שניתן להלן:

שלב מס' 2: בדוק את הפרמטרים של sysctls

ממשק sysctls משמש לשינוי פרמטרי הליבה שנמצאים בקובץ התהליך הווירטואלי /proc/sys/. כדי לרשום את כל הפרמטרים, ניתן להשתמש בפקודה שניתנה להלן:

> סודו sysctl


פקודה זו תפרט את כל פרמטרי הליבה מקובץ התהליך הווירטואלי /proc/sys/. ראה את הפלט לדוגמה שניתן בתמונת המצב שלהלן:

שלב מס' 3: הפעל sysctls לא בטוחים

יש להפעיל את ה-sysctls הלא בטוחים באופן ידני מכיוון שהם מושבתים כברירת מחדל. מנהל האשכול מאפשר באופן ידני את המערכות הלא בטוחות על בסיס של צומת. לא ניתן להפעיל את הפודים שהשביתו מערכות לא בטוחות אלא רק לתזמן. ישנם כמה תנאים ספציפיים (כמו כוונון יישומי זמן ריצה, ביצועים גבוהים וכו') כאשר מנהל האשכול יכול לאפשר את ה-sysctls הלא בטוחים. כדי להפעיל את ה-sysctls הלא בטוחים על בסיס צומת אחר צומת, אתה יכול להשתמש בפקודה kubectl הניתנת להלן:

> kubectl –allowed-unsafe-sysctls \


זוהי דרך בסיסית ופשוטה מאוד לאפשר sysctls לא בטוחים באמצעות הפקודה kubectl.


יתר על כן, ניתן להפעיל syscts לא בטוחים על ידי שימוש בדגל minikube extra-config. ניתן לעשות זאת באמצעות הפקודה המפורטת להלן:

> minikube start –extra-config=”kubectl.allowed-unsafe-sysctls=kernel.msg * ,net.core.somaxconn'...


פקודה זו מאפשרת לך להפעיל את ה-sysctls הלא בטוחים דרך אשכול ה-minikube. עם זאת, זה יכול להפעיל רק את ה-sysctls עם רווחי שמות. ראה את הפלט לדוגמה שניתן בתמונת המצב שלהלן:

סיכום

מאמר זה סיפק לנו סקירה כללית של ממשק Linux sysctls. דנו במה זה Linux sysctl וכיצד ניתן להשתמש בו בסביבת Kubernetes. ישנן שתי קבוצות של sysctls: בטוח ולא בטוח. הקבוצה הבטוחה של sysctls מופעלת כברירת מחדל, בעוד שקבוצת sysctls הלא בטוחים מושבתת כברירת מחדל. בעזרת דוגמה פשוטה וקלה, למדנו כיצד להפעיל את ה-sysctls הלא בטוחים באמצעות הפקודה kubectl ודגל minikube –extra-config.