סקירה כללית של k9s - ממשק מסוף מתקדם עבור Kubernetes

סקירה כללית של k9s - ממשק מסוף מתקדם עבור Kubernetes

K9s מספק ממשק משתמש מסוף לאינטראקציה עם אשכולות Kubernetes. המטרה של פרויקט קוד פתוח זה היא להקל על ניווט, ניטור וניהול יישומים ב-K8s. K9s מנטר כל הזמן שינויים ב-Kubernetes ומציע פקודות מהירות לעבודה עם משאבים מנוטרים.

הפרויקט כתוב ב-Go וקיים כבר למעלה משנה וחצי: ההתחייבות הראשונה בוצעה ב-1 בפברואר 2019. בזמן כתיבת שורות אלה, יש 9000+ כוכבים GitHub וכ-80 תורמים. בוא נראה מה K9s יכול לעשות?

התקנה והשקה

זהו יישום לקוח (ביחס לאשכול Kubernetes) שהכי קל להפעיל אותו כתמונת Docker:

docker run --rm -it -v $KUBECONFIG:/root/.kube/config quay.io/derailed/k9s

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

sudo wget -qO- https://github.com/derailed/k9s/releases/download/v0.22.0/k9s_Linux_x86_64.tar.gz | tar zxvf -  -C /tmp/
sudo mv /tmp/k9s /usr/local/bin

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

האפליקציה מופעלת באמצעות התצורה הסטנדרטית .kube/config - דומה לאופן שבו זה עושה kubectl.

שיט

כברירת מחדל, נפתח חלון עם מרחב השמות המוגדר כברירת מחדל עבור ההקשר. כלומר, אם כתבת kubectl config set-context --current --namespace=test, ואז ייפתח מרחב השמות test. (ראה להלן לשינוי הקשרים/מרחבי שמות.)

סקירה כללית של k9s - ממשק מסוף מתקדם עבור Kubernetes

לך ל מצב פקודה נעשה על ידי לחיצה על ":". לאחר מכן, ניתן לשלוט על פעולת ה-k9s באמצעות פקודות - למשל, כדי להציג את רשימת ה-StatefulSets (במרחב השמות הנוכחי), ניתן להיכנס :sts.

סקירה כללית של k9s - ממשק מסוף מתקדם עבור Kubernetes

עבור כמה משאבים אחרים של Kubernetes:

  • :ns - מרחבי שמות;
  • :deploy - פריסות;
  • :ing - כניסות;
  • :svc - שירותים.

כדי להציג רשימה מלאה של סוגי משאבים הזמינים לצפייה, יש פקודה :aliases.

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

סקירה כללית של k9s - ממשק מסוף מתקדם עבור Kubernetes

גם ב-k9s יש מצב חיפוש, כדי ללכת אליו מספיק להזין "/". בעזרתו מתבצע חיפוש על תוכן ה"חלון" הנוכחי. נניח אם נכנסת בעבר :ns, יש לך רשימה של מרחבי שמות פתוחה. אם יש יותר מדי מהם, אז כדי לא לגלול למטה במשך זמן רב, מספיק להיכנס לחלון עם מרחבי שמות /mynamespace.

כדי לחפש לפי תוויות, אתה יכול לבחור את כל הפודים במרחב השמות הרצוי, ואז להזין, למשל, / -l app=whoami. נקבל רשימה של תרמילים עם התווית הזו:

סקירה כללית של k9s - ממשק מסוף מתקדם עבור Kubernetes

החיפוש עובד בכל מיני חלונות, כולל יומנים, צפייה במניפסטים של YAML ו describe למשאבים - ראה למטה לפרטים נוספים על תכונות אלה.

איך נראית זרימת הניווט הכוללת?

עם הפקודה :ctx אתה יכול לבחור הקשר:

סקירה כללית של k9s - ממשק מסוף מתקדם עבור Kubernetes

כדי לבחור מרחב שמות, יש את הפקודה שכבר הוזכרה :ns, ולאחר מכן תוכל להשתמש בחיפוש עבור המרחב הרצוי: /test.

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

סקירה כללית של k9s - ממשק מסוף מתקדם עבור Kubernetes

רק פודים עשויים לעניין - אז מספיק להיכנס :pod. במקרה של ConfigMaps (:cm - עבור רשימת המשאבים הללו), אתה יכול לבחור את אובייקט העניין וללחוץ על "u", ולאחר מכן K9s יגידו לך מי ספציפית משתמש בו (CM זה).

תכונה שימושית נוספת לצפייה במשאבים היא שלהם "רנטגן" (תצוגת רנטגן). מצב זה נקרא על ידי הפקודה :xray RESOURCE ו... קל יותר להראות איך זה עובד מאשר להסביר. הנה איור עבור StatefulSets:

סקירה כללית של k9s - ממשק מסוף מתקדם עבור Kubernetes
(ניתן לערוך, לשנות, ליצור כל אחד מהמשאבים הללו describe.)

והנה פריסה עם Ingress:

סקירה כללית של k9s - ממשק מסוף מתקדם עבור Kubernetes

עבודה עם משאבים

אתה יכול לקבל מידע על כל משאב ב-YAML או שלו describe על ידי לחיצה על קיצורי המקשים המתאימים ("y" ו-"d", בהתאמה). כמובן, ישנן פעולות בסיסיות אפילו יותר: הרשימה וקיצורי המקלדת שלהם תמיד גלויים הודות ל"כותרת" נוחה בממשק (מוסתרת על ידי לחיצה על Ctrl + e).

סקירה כללית של k9s - ממשק מסוף מתקדם עבור Kubernetes

בעת עריכת משאב כלשהו ("e" לאחר בחירתו), עורך הטקסט המוגדר במשתני הסביבה נפתח (export EDITOR=vim).

והנה איך נראה התיאור המפורט של המשאב (describe):

סקירה כללית של k9s - ממשק מסוף מתקדם עבור Kubernetes

ניתן לשמור פלט זה (או הפלט של צפייה במניפסט YAML של המשאב) באמצעות קיצור המקשים המוכר Ctrl + s. היכן הוא יישמר ייוודע מההודעה K9s:

Log /tmp/k9s-screens-root/kubernetes/Describe-1601244920104133900.yml saved successfully!

ניתן גם לשחזר משאבים מקובצי הגיבוי שנוצרו, לאחר הסרת תוויות מערכת והערות. כדי לעשות זאת, אתה צריך ללכת לספרייה איתם (:dir /tmp), ולאחר מכן בחר את הקובץ הרצוי והחל apply.

אגב, בכל עת אתה יכול לחזור אחורה ל-ReplicaSet הקודם אם יש בעיות עם הנוכחי. לשם כך, בחר את ה-RS הרצוי (:rs לרשימה שלהם):

סקירה כללית של k9s - ממשק מסוף מתקדם עבור Kubernetes

... והחזרה לאחור עם Ctrl + l. אנחנו צריכים לקבל הודעה שהכל הלך כשורה:

k9s/whoami-5cfbdbb469 successfully rolled back

וכדי לשנות את קנה המידה של ההעתקים, פשוט לחץ על ה"s" (קנה מידה) ובחר את מספר המופעים הרצוי:

סקירה כללית של k9s - ממשק מסוף מתקדם עבור Kubernetes

ניתן להיכנס לכל אחד מהמיכלים באמצעות הקליפה: לשם כך, עבור אל הפוד הרצוי, לחץ על "s" (קליפה) ובחר את המיכל.

תכונות אחרות

כמובן, צפייה ביומנים נתמכת גם ("l" עבור המשאב הנבחר). וכדי לצפות ביומנים חדשים, אין צורך ללחוץ כל הזמן על Enter: מספיק לסמן ("m") ואז רק לעקוב אחר הודעות חדשות.

סקירה כללית של k9s - ממשק מסוף מתקדם עבור Kubernetes

גם באותו חלון, אתה יכול לבחור את טווח הזמן עבור הפלט של יומנים:

  • מקש "1" - למשך דקה אחת;
  • "2 דקות;
  • "3 דקות;
  • "4 דקות;
  • "5" - שעה אחת;
  • "0" - למשך כל חיי התרמיל.

מצב הפעלה מיוחד דופק (פקודה :pulse) מציג מידע כללי על אשכול Kubernetes:

סקירה כללית של k9s - ממשק מסוף מתקדם עבור Kubernetes

בו ניתן לראות את מספר המשאבים והסטטוס שלהם (ירוק מציג את אלו שיש להם את הסטטוס Running).

עוד תכונה מגניבה של K9s נקראת פופאי. הוא בודק את כל המשאבים עבור קריטריונים מסוימים של נכונות ומציג את ה"דירוג" המתקבל עם הסברים. לדוגמה, אתה יכול לראות שאין מספיק דוגמאות או מגבלות, ומיכל כלשהו יכול לפעול כשורש ...

סקירה כללית של k9s - ממשק מסוף מתקדם עבור Kubernetes

יש תמיכה בסיסית להלם. לדוגמה, כך תוכל לראות את המהדורות הפרוסות באשכול:

:helm all # все
:helm $namespace # в конкретном пространстве имен

בנצ 'מרק

אפילו מובנה בתוך K9s היי הוא מחולל עומס שרת HTTP פשוט, חלופה ל-ab הידוע יותר (ApacheBench).

כדי להפעיל אותו, עליך להפעיל העברה קדימה בפוד. כדי לעשות זאת, בחר את הפוד והקש Shift + f, עבור לתפריט המשנה של port-forward באמצעות הכינוי "pf".

סקירה כללית של k9s - ממשק מסוף מתקדם עבור Kubernetes

לאחר בחירת היציאה ולחיצה על Ctrl + b, המדד עצמו יתחיל. תוצאות עבודתו מאוחסנות ב /tmp וזמינים לצפייה מאוחרת יותר ב-K9s.

סקירה כללית של k9s - ממשק מסוף מתקדם עבור Kubernetes
סקירה כללית של k9s - ממשק מסוף מתקדם עבור Kubernetes

כדי לשנות את תצורת המדד, עליך ליצור קובץ $HOME/.k9s/bench-<my_context>.yml (נקבע עבור כל אשכול).

הערה: חשוב להרחיב את כל קבצי YAML בספרייה .k9s זה היה בדיוק .yml (.yaml לא עובד כמו שצריך).

דוגמה לתצורה:

benchmarks:
  defaults:
    # Количество потоков
    concurrency: 2
    # Количество запросов
    requests: 1000
  containers:
    # Настройки для контейнера с бенчмарком
    # Контейнер определяется как namespace/pod-name:container-name
    default/nginx:nginx:
      concurrency: 2
      requests: 10000
      http:
        path: /
        method: POST
        body:
          {"foo":"bar"}
        header:
          Accept:
            - text/html
          Content-Type:
            - application/json
 services:
    # Можно проводить бенчмарк на сервисах типа NodePort и LoadBalancer
    # Синтаксис: namespace/service-name
    default/nginx:
      concurrency: 5
      requests: 500
      http:
        method: GET
        path: /auth
      auth:
        user: flant
        password: s3cr3tp455w0rd

ממשק

המראה של עמודות עבור רשימות משאבים משתנה על ידי יצירת קובץ $HOME/.k9s/views.yml. דוגמה לתוכן שלו:

k9s:
 views:
   v1/pods:
     columns:
       - AGE
       - NAMESPACE
       - NAME
       - IP
       - NODE
       - STATUS
       - READY
   v1/services:
     columns:
       - AGE
       - NAMESPACE
       - NAME
       - TYPE
       - CLUSTER-IP

נכון, אין מספיק עמודה לתוויות, שעבורן יש נושא בפרויקט.

המיון לפי עמודות מתבצע באמצעות קיצורי מקשים:

  • Shift + n - לפי שם;
  • Shift + o - לפי צמתים;
  • Shift + i - לפי IP;
  • Shift + a - לכל החיים של המיכל;
  • Shift + t - לפי מספר ההתחלות מחדש;
  • Shift + r - לפי מצב מוכנות;
  • Shift + c - לפי צריכת מעבד;
  • Shift + m - לפי צריכת זיכרון.

אם מישהו לא אוהב את ערכת הצבעים המוגדרת כברירת מחדל, K9s אפילו תומך עורות. דוגמאות מוכנות (7 חלקים) זמינות כאן. הנה דוגמה לאחד מהעורות הללו (בחיל הים):

סקירה כללית של k9s - ממשק מסוף מתקדם עבור Kubernetes

Плагины

לבסוף, תוספים מאפשרים לך להרחיב את היכולות של K9s. אני עצמי השתמשתי רק באחד מהם בעבודתי - kubectl get all -n $namespace.

זה נראה כמו זה. צור קובץ $HOME/.k9s/plugin.yml עם תוכן כזה:

plugin:
 get-all:
   shortCut: g    
   confirm: false    
   description: get all
   scopes:
   - all
   command: sh
   background: false
   args:
   - -c
   - "kubectl -n $NAMESPACE get all -o wide | less"

כעת אתה יכול ללכת למרחב השמות וללחוץ על "g" כדי לבצע עם הפקודה המתאימה:

סקירה כללית של k9s - ממשק מסוף מתקדם עבור Kubernetes

בין התוספים יש, למשל, אינטגרציות עם kubectl-jq וכלי עזר לצפייה ביומנים שטרן.

מסקנה

לטעמי, K9s התגלו כנוחות מאוד לעבודה: אפשר להתרגל במהירות לחפש את כל מה שצריך בלי להשתמש בו. kubectl. הייתי מרוצה מהנוף של היומנים ומהשמירה שלהם, עריכה מהירה של משאבים, מהירות העבודה באופן כללי *, מצב Popeye התברר כמועיל. אזכור מיוחד הוא היכולת ליצור תוספים ולשנות את האפליקציה כך שתתאים לצרכים שלך.

* אמנם, עם נפח גדול של יומנים, שמתי לב גם לפעולה האיטית של K9s. ברגעים כאלה, תוכנית השירות "אכלה" 2 ליבות מה-Intel Xeon E312xx ואף עלולה להקפיא.

מה חסר כרגע? חזרה מהירה לגרסה הקודמת (אנחנו לא מדברים על RS) בלי ללכת לספרייה. בנוסף, ההחלמה מתרחשת רק עבור רק משאב: אם תמחק הערה או תווית, תצטרך למחוק ולשחזר את כל המשאב (כאן אתה צריך ללכת לספרייה). עוד זוטה - אין מספיק תאריך ל"גיבויים" שמורים כאלה.

נ.ב.

קרא גם בבלוג שלנו:

מקור: www.habr.com