Επισκόπηση του k9s - μια προηγμένη διεπαφή τερματικού για Kubernetes

Επισκόπηση του k9s - μια προηγμένη διεπαφή τερματικού για Kubernetes

Κ9δ παρέχει μια διεπαφή χρήστη τερματικού για αλληλεπίδραση με συμπλέγματα Kubernetes. Ο στόχος αυτού του έργου ανοιχτού κώδικα είναι να διευκολύνει την πλοήγηση, την παρακολούθηση και τη διαχείριση εφαρμογών στα K8. Το K9s παρακολουθεί συνεχώς τις αλλαγές στο Kubernetes και προσφέρει γρήγορες εντολές για εργασία με πόρους που παρακολουθούνται.

Το έργο είναι γραμμένο στο Go και υπάρχει εδώ και ενάμιση χρόνο: η πρώτη δέσμευση έγινε την 1η Φεβρουαρίου 2019. Τη στιγμή της γραφής, υπάρχουν πάνω από 9000 αστέρια GitHub και περίπου 80 συντελεστές. Ας δούμε τι μπορούν να κάνουν τα k9;

Εγκατάσταση και εκκίνηση

Αυτή είναι μια εφαρμογή πελάτη (σε σχέση με το σύμπλεγμα Kubernetes) που είναι πιο εύκολο να εκτελεστεί ως εικόνα Docker:

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

Για ορισμένες διανομές Linux και άλλα λειτουργικά συστήματα, υπάρχουν επίσης έτοιμα προς εγκατάσταση пакеты. Γενικά, για συστήματα Linux, μπορείτε να εγκαταστήσετε ένα δυαδικό αρχείο:

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

Παω σε λειτουργία εντολής γίνεται πατώντας ":". Μετά από αυτό, μπορείτε να ελέγξετε τη λειτουργία των k9 χρησιμοποιώντας εντολές - για παράδειγμα, για να δείτε τη λίστα 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), θα εμφανιστούν οι αντίστοιχες πληροφορίες για αυτόν: πόσα pods εκτελούνται με σύντομες πληροφορίες σχετικά με αυτά.

Επισκόπηση του k9s - μια προηγμένη διεπαφή τερματικού για Kubernetes

Μόνο οι λοβοί μπορεί να έχουν ενδιαφέρον - τότε αρκεί να μπείτε :pod. Στην περίπτωση των ConfigMaps (:cm - για τη λίστα αυτών των πόρων), μπορείτε να επιλέξετε το αντικείμενο ενδιαφέροντος και να κάνετε κλικ στο "u", μετά το οποίο το K9 θα σας πει ποιος το χρησιμοποιεί συγκεκριμένα (αυτό το CM).

Ένα άλλο εύχρηστο χαρακτηριστικό για την προβολή πόρων είναι το δικό τους "ακτινογραφία" (προβολή ακτίνων Χ). Αυτή η λειτουργία καλείται από την εντολή :xray RESOURCE και ... είναι πιο εύκολο να δείξεις πώς λειτουργεί παρά να εξηγήσεις. Ακολουθεί μια απεικόνιση για StatefulSets:

Επισκόπηση του k9s - μια προηγμένη διεπαφή τερματικού για Kubernetes
(Καθένας από αυτούς τους πόρους μπορεί να επεξεργαστεί, να αλλάξει, να γίνει describe.)

Και εδώ είναι Deployment with 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

Μπορείτε να εισαγάγετε οποιοδήποτε από τα κοντέινερ χρησιμοποιώντας το κέλυφος: για να το κάνετε αυτό, μεταβείτε στο επιθυμητό pod, κάντε κλικ στο "s" (κέλυφος) και επιλέξτε το δοχείο.

Άλλα χαρακτηριστικά

Φυσικά, υποστηρίζεται και η προβολή αρχείων καταγραφής ("l" για τον επιλεγμένο πόρο). Και για να παρακολουθήσετε νέα αρχεία καταγραφής, δεν χρειάζεται να πατάτε συνεχώς Enter: αρκεί να επισημάνετε ("m") και στη συνέχεια να παρακολουθείτε μόνο νέα μηνύματα.

Επισκόπηση του k9s - μια προηγμένη διεπαφή τερματικού για Kubernetes

Επίσης, στο ίδιο παράθυρο, μπορείτε να επιλέξετε το χρονικό εύρος για την έξοδο των αρχείων καταγραφής:

  • κλειδί "1" - για 1 λεπτό.
  • "2" - 5 λεπτά.
  • "3" - 15 λεπτά.
  • "4" - 30 λεπτά.
  • "5" - 1 ώρα.
  • "0" - για όλη τη διάρκεια ζωής του λοβού.

Ειδικός τρόπος λειτουργίας Pulse (εντολή :pulse) εμφανίζει γενικές πληροφορίες για το σύμπλεγμα Kubernetes:

Επισκόπηση του k9s - μια προηγμένη διεπαφή τερματικού για Kubernetes

Σε αυτό μπορείτε να δείτε τον αριθμό των πόρων και την κατάστασή τους (το πράσινο δείχνει αυτούς που έχουν την κατάσταση Running).

Ένα άλλο ωραίο χαρακτηριστικό του K9 ονομάζεται Popeye. Ελέγχει όλους τους πόρους για ορισμένα κριτήρια ορθότητας και εμφανίζει την προκύπτουσα "βαθμολόγηση" με επεξηγήσεις. Για παράδειγμα, μπορείτε να δείτε ότι δεν υπάρχουν αρκετά δείγματα ή όρια και κάποιο κοντέινερ μπορεί να λειτουργεί ως root ...

Επισκόπηση του k9s - μια προηγμένη διεπαφή τερματικού για Kubernetes

Υπάρχει βασική υποστήριξη Helm. Για παράδειγμα, με αυτόν τον τρόπο μπορείτε να δείτε τις εκδόσεις που αναπτύσσονται στο σύμπλεγμα:

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

αναφοράς

Ακόμα και ενσωματωμένο σε K9 hey είναι μια απλή γεννήτρια φόρτωσης διακομιστή HTTP, μια εναλλακτική λύση στο πιο γνωστό ab (ApacheBench).

Για να το ενεργοποιήσετε, πρέπει να ενεργοποιήσετε το port-forward στο pod. Για να το κάνετε αυτό, επιλέξτε το pod και πατήστε Shift + f, μεταβείτε στο υπομενού port-forward χρησιμοποιώντας το ψευδώνυμο "pf".

Επισκόπηση του k9s - μια προηγμένη διεπαφή τερματικού για Kubernetes

Αφού επιλέξετε τη θύρα και πατήσετε Ctrl + b, θα ξεκινήσει το ίδιο το σημείο αναφοράς. Τα αποτελέσματα της δουλειάς του αποθηκεύονται στο /tmp και είναι διαθέσιμα για μεταγενέστερη προβολή σε K9.

Επισκόπηση του 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 - ανά κατανάλωση CPU.
  • Shift + m - από την κατανάλωση μνήμης.

Εάν σε κάποιον δεν αρέσει ο προεπιλεγμένος συνδυασμός χρωμάτων, το K9s υποστηρίζει ακόμη και δέρματα. Διατίθενται έτοιμα παραδείγματα (7 τεμάχια). εδώ. Εδώ είναι ένα παράδειγμα ενός από αυτά τα δέρματα (στο ναυτικό):

Επισκόπηση του k9s - μια προηγμένη διεπαφή τερματικού για Kubernetes

Плагины

Τέλος, η πρόσθετα σας επιτρέπουν να επεκτείνετε τις δυνατότητες των K9. Εγώ ο ίδιος έχω χρησιμοποιήσει μόνο ένα από αυτά στη δουλειά μου - 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 και ένα βοηθητικό πρόγραμμα για την προβολή αρχείων καταγραφής αυστηρός.

Συμπέρασμα

Για το γούστο μου, τα K9 αποδείχτηκαν πολύ βολικά για να δουλέψετε: μπορείτε γρήγορα να συνηθίσετε να αναζητάτε όλα όσα χρειάζεστε χωρίς να τα χρησιμοποιείτε. kubectl. Ήμουν ευχαριστημένος με την προβολή των αρχείων καταγραφής και την εξοικονόμησή τους, τη γρήγορη επεξεργασία των πόρων, την ταχύτητα εργασίας γενικά *, η λειτουργία Popeye αποδείχθηκε χρήσιμη. Ιδιαίτερη αναφορά είναι η δυνατότητα δημιουργίας πρόσθετων και τροποποίησης της εφαρμογής για να ταιριάζει στις ανάγκες σας.

* Αν και με μεγάλο όγκο κορμών, παρατήρησα και την αργή λειτουργία των K9. Σε τέτοιες στιγμές, το βοηθητικό πρόγραμμα "έφαγε" 2 πυρήνες από το Intel Xeon E312xx και μπορούσε ακόμη και να παγώσει.

Τι λείπει αυτή τη στιγμή; Γρήγορη επαναφορά στην προηγούμενη έκδοση (δεν μιλάμε για RS) χωρίς να πάτε στον κατάλογο. Επιπλέον, η ανάκτηση συμβαίνει μόνο για μόνο πόρος: εάν διαγράψετε έναν σχολιασμό ή μια ετικέτα, θα πρέπει να διαγράψετε και να επαναφέρετε ολόκληρο τον πόρο (εδώ πρέπει να μεταβείτε στον κατάλογο). Ένα άλλο ασήμαντο - δεν υπάρχει αρκετή ημερομηνία για τέτοια αποθηκευμένα "αντίγραφα ασφαλείας".

PS

Διαβάστε επίσης στο blog μας:

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο