Ανακοίνωση της προβολής Ιστού Kubernetes (και μια σύντομη επισκόπηση άλλων διεπαφών ιστού για το Kubernetes)

Σημείωση. μετάφρ.: Ο συγγραφέας του πρωτότυπου υλικού είναι ο Henning Jacobs από το Zalando. Δημιούργησε μια νέα διεπαφή ιστού για εργασία με την Kubernetes, η οποία είναι τοποθετημένη ως "kubectl για τον ιστό". Γιατί εμφανίστηκε ένα νέο έργο ανοιχτού κώδικα και ποια κριτήρια δεν πληρούσαν οι υπάρχουσες λύσεις - διαβάστε το άρθρο του.

Ανακοίνωση της προβολής Ιστού Kubernetes (και μια σύντομη επισκόπηση άλλων διεπαφών ιστού για το Kubernetes)

Σε αυτήν την ανάρτηση, εξετάζω τις διάφορες διεπαφές ιστού Kubernetes ανοιχτού κώδικα, παρουσιάζω τις απαιτήσεις μου για μια καθολική διεπαφή χρήστη και εξηγώ γιατί ανέπτυξα Kubernetes WebView — μια διεπαφή σχεδιασμένη για να διευκολύνει την υποστήριξη και την αντιμετώπιση προβλημάτων πολλαπλών συμπλεγμάτων ταυτόχρονα.

Θήκες χρήσης

Στο Zalando εξυπηρετούμε μεγάλο αριθμό χρηστών Kubernetes (900+) και συμπλέγματα (100+). Υπάρχουν μερικές συνήθεις περιπτώσεις χρήσης που θα επωφεληθούν από ένα ειδικό εργαλείο ιστού:

  1. επικοινωνία με συναδέλφους για υποστήριξη·
  2. ανταπόκριση σε περιστατικά και διερεύνηση των αιτιών τους.

Υποστήριξη

Από την εμπειρία μου, οι επικοινωνίες υποστήριξης συχνά μοιάζουν με αυτό:

— Βοήθεια, η υπηρεσία μας XYZ δεν είναι διαθέσιμη!
— Τι βλέπεις όταν κάνεις παράσταση kubectl describe ingress ...?

Ή κάτι παρόμοιο για το CRD:

— Έχω κάποιο πρόβλημα με την υπηρεσία αναγνώρισης...
— Τι παράγει η εντολή; kubectl describe platformcredentialsset ...?

Μια τέτοια επικοινωνία συνήθως καταλήγει στην εισαγωγή διαφόρων παραλλαγών της εντολής kubectl προκειμένου να εντοπιστεί το πρόβλημα. Ως αποτέλεσμα, και τα δύο μέρη της συνομιλίας αναγκάζονται να εναλλάσσονται συνεχώς μεταξύ του τερματικού και της διαδικτυακής συνομιλίας, ενώ παρατηρούν μια διαφορετική κατάσταση.

Επομένως, θα ήθελα η διεπαφή ιστού Kubernetes να επιτρέπει τα εξής:

  • οι χρήστες θα μπορούσαν ανταλλαγή συνδέσμων και παρατηρήστε το ίδιο πράγμα?
  • θα βοηθούσε αποφύγετε τα ανθρώπινα λάθη στην υποστήριξη: για παράδειγμα, σύνδεση σε λάθος σύμπλεγμα στη γραμμή εντολών, τυπογραφικά λάθη στις εντολές CLI κ.λπ.
  • θα επέτρεπε δημιουργήστε τις δικές σας απόψεις αποστολή σε συναδέλφους, δηλαδή προσθήκη στηλών ετικετών, εμφάνιση πολλών τύπων πόρων σε μία σελίδα.
  • Στην ιδανική περίπτωση, αυτό το εργαλείο web θα πρέπει να σας επιτρέπει να ορίσετε "βαθιές" συνδέσεις σε συγκεκριμένες ενότητες του YAML (για παράδειγμα, επισήμανση μιας λανθασμένης παραμέτρου που προκαλεί βλάβες).

Απόκριση και ανάλυση περιστατικού

Η απόκριση σε συμβάντα υποδομής απαιτεί επίγνωση της κατάστασης, ικανότητα αξιολόγησης του αντίκτυπου και αναζήτησης μοτίβων σε ομάδες. Μερικά παραδείγματα πραγματικής ζωής:

  • Μια κρίσιμη υπηρεσία παραγωγής αντιμετωπίζει προβλήματα και πρέπει να το κάνετε βρείτε όλους τους πόρους του Kubernetes ονομαστικά σε όλα τα συμπλέγματαγια την αντιμετώπιση προβλημάτων?
  • οι κόμβοι αρχίζουν να πέφτουν κατά την κλιμάκωση και χρειάζεστε βρείτε όλες τις ομάδες με την κατάσταση "Σε εκκρεμότητα" σε όλα τα συμπλέγματανα αξιολογήσει το εύρος του προβλήματος·
  • μεμονωμένοι χρήστες αναφέρουν ένα πρόβλημα με το DaemonSet που έχει αναπτυχθεί σε όλα τα συμπλέγματα και πρέπει να το ανακαλύψουν Είναι το πρόβλημα συνολικό;.

Η τυπική μου λύση σε τέτοιες περιπτώσεις είναι κάτι σαν for i in $clusters; do kubectl ...; done. Προφανώς, είναι δυνατή η ανάπτυξη ενός εργαλείου που παρέχει παρόμοιες δυνατότητες.

Υπάρχουσες διεπαφές ιστού Kubernetes

Ο κόσμος ανοιχτού κώδικα των διεπαφών Ιστού στο Kubernetes δεν είναι πολύ μεγάλος*, γι' αυτό προσπάθησα να συγκεντρώσω περισσότερες πληροφορίες χρησιμοποιώντας Twitter:

Ανακοίνωση της προβολής Ιστού Kubernetes (και μια σύντομη επισκόπηση άλλων διεπαφών ιστού για το Kubernetes)

*Η εξήγησή μου για τον περιορισμένο αριθμό διεπαφών ιστού για το Kubernetes: οι υπηρεσίες cloud και οι πωλητές Kubernetes συνήθως προσφέρουν τα δικά τους frontend, επομένως η αγορά για «καλή» δωρεάν διεπαφή χρήστη Kubernetes είναι σχετικά μικρή.

Μέσα από ένα tweet το έμαθα K8Dash, Kubernator и Ογδοο του κύκλου. Ας δούμε αυτές και άλλες υπάρχουσες λύσεις ανοιχτού κώδικα, ας προσπαθήσουμε να καταλάβουμε τι είναι.

K8Dash

"Το K8Dash είναι ο απλούστερος τρόπος διαχείρισης ενός συμπλέγματος Kubernetes."

Ανακοίνωση της προβολής Ιστού Kubernetes (και μια σύντομη επισκόπηση άλλων διεπαφών ιστού για το Kubernetes)

K8Dash Φαίνεται καλό και έχει γρήγορη αίσθηση, αλλά έχει μια σειρά από μειονεκτήματα για τις περιπτώσεις χρήσης που αναφέρονται παραπάνω:

  • Λειτουργεί μόνο εντός των ορίων ενός συμπλέγματος.
  • Η ταξινόμηση και το φιλτράρισμα είναι δυνατά, αλλά δεν έχουν μόνιμους συνδέσμους.
  • Δεν υπάρχει υποστήριξη για Προσαρμοσμένους ορισμούς πόρων (CRD).

Kubernator

«Το Kubernator είναι μια εναλλακτική διεπαφή χρήστη για την Kubernetes. Σε αντίθεση με τον πίνακα ελέγχου υψηλού επιπέδου Kubernetes, παρέχει έλεγχο χαμηλού επιπέδου και εξαιρετική ορατότητα σε όλα τα αντικείμενα του συμπλέγματος με τη δυνατότητα δημιουργίας νέων, επεξεργασίας και επίλυσης διενέξεων. Όντας μια εφαρμογή εξ ολοκλήρου πελάτη (όπως το kubectl), δεν απαιτεί άλλο backend εκτός από τον ίδιο τον διακομιστή Kubernetes API και επίσης σέβεται τους κανόνες πρόσβασης συμπλέγματος.

Ανακοίνωση της προβολής Ιστού Kubernetes (και μια σύντομη επισκόπηση άλλων διεπαφών ιστού για το Kubernetes)

Αυτή είναι μια αρκετά ακριβής περιγραφή Kubernator. Δυστυχώς, του λείπουν ορισμένα χαρακτηριστικά:

  • Εξυπηρετεί μόνο ένα σύμπλεγμα.
  • Δεν υπάρχει λειτουργία προβολής λίστας (δηλαδή, δεν μπορείτε να εμφανίσετε όλα τα pods με την κατάσταση "Σε εκκρεμότητα").

Πίνακας ελέγχου Kubernetes

"Το Kubernetes Dashboard είναι μια καθολική διεπαφή ιστού για συμπλέγματα Kubernetes. Επιτρέπει στους χρήστες να διαχειρίζονται και να αντιμετωπίζουν εφαρμογές που εκτελούνται σε ένα σύμπλεγμα, καθώς και να διαχειρίζονται το ίδιο το σύμπλεγμα."

Ανακοίνωση της προβολής Ιστού Kubernetes (και μια σύντομη επισκόπηση άλλων διεπαφών ιστού για το Kubernetes)

Δυστυχώς, Πίνακας ελέγχου Kubernetes δεν βοηθά πραγματικά με τις δραστηριότητες υποστήριξης και αντιμετώπισης περιστατικών, επειδή:

  • δεν υπάρχουν μόνιμοι σύνδεσμοι, για παράδειγμα όταν φιλτράρω πόρους ή αλλάζω τη σειρά ταξινόμησης.
  • δεν υπάρχει εύκολος τρόπος φιλτραρίσματος κατά κατάσταση - για παράδειγμα, δείτε όλα τα pods με την κατάσταση "Σε εκκρεμότητα".
  • υποστηρίζεται μόνο ένα σύμπλεγμα.
  • Τα CRD δεν υποστηρίζονται (αυτή η δυνατότητα είναι υπό ανάπτυξη).
  • χωρίς προσαρμοσμένες στήλες (όπως στήλες με ετικέτα ανά τύπο kubectl -L).

Λειτουργική προβολή Kubernetes (kube-ops-view)

"Παρατηρητής πίνακα ταμπλό συστήματος για K8s Cluster Space."

Ανακοίνωση της προβολής Ιστού Kubernetes (και μια σύντομη επισκόπηση άλλων διεπαφών ιστού για το Kubernetes)

У Λειτουργική προβολή Kubernetes Μια εντελώς διαφορετική προσέγγιση: αυτό το εργαλείο εμφανίζει μόνο κόμβους συμπλέγματος και λοβούς χρησιμοποιώντας WebGL, χωρίς λεπτομέρειες για το αντικείμενο κειμένου. Είναι εξαιρετικό για μια γρήγορη επισκόπηση της υγείας του συμπλέγματος (πέφτουν οι λοβοί;)*, αλλά δεν είναι κατάλληλο για τις περιπτώσεις χρήσης υποστήριξης και απόκρισης περιστατικών που περιγράφονται παραπάνω.

* Σημείωση. μετάφρ.: Υπό αυτή την έννοια, μπορεί επίσης να σας ενδιαφέρει το πρόσθετο μας grafana-statusmap, για το οποίο μιλήσαμε αναλυτικότερα στο Αυτό το άρθρο.

Αναφορά πόρων Kubernetes (kube-resource-report)

"Συλλέξτε αιτήματα πόρων για ομάδες pod και Kubernetes, συγκρίνετε τα με την κατανάλωση πόρων και δημιουργήστε στατικό HTML."

Ανακοίνωση της προβολής Ιστού Kubernetes (και μια σύντομη επισκόπηση άλλων διεπαφών ιστού για το Kubernetes)

Αναφορά πόρων Kubernetes δημιουργεί στατικές αναφορές HTML σχετικά με τη χρήση πόρων και την κατανομή κόστους μεταξύ ομάδων/εφαρμογών σε συμπλέγματα. Η αναφορά είναι κάπως χρήσιμη για υποστήριξη και απόκριση συμβάντων, επειδή σας επιτρέπει να βρείτε γρήγορα το σύμπλεγμα όπου έχει αναπτυχθεί η εφαρμογή.

Σημείωση. μετάφρ.: Μια υπηρεσία και ένα εργαλείο μπορεί επίσης να είναι χρήσιμα για την προβολή πληροφοριών σχετικά με την κατανομή των πόρων και το κόστος τους μεταξύ των παρόχων cloud Kubecost, το οποίο εξετάζουμε πρόσφατα δημοσιεύτηκε.

Ογδοο του κύκλου

"Μια επεκτάσιμη διαδικτυακή πλατφόρμα για προγραμματιστές που έχει σχεδιαστεί για να παρέχει μεγαλύτερη κατανόηση της πολυπλοκότητας των συμπλεγμάτων Kubernetes."

Ανακοίνωση της προβολής Ιστού Kubernetes (και μια σύντομη επισκόπηση άλλων διεπαφών ιστού για το Kubernetes)

Ογδοο του κύκλου, που δημιουργήθηκε από τη VMware, είναι ένα νέο προϊόν για το οποίο έμαθα σχετικά πρόσφατα. Με τη βοήθειά του, είναι βολικό να εξερευνήσετε το σύμπλεγμα σε ένα τοπικό μηχάνημα (υπάρχουν ακόμη και απεικονίσεις), αλλά αντιμετωπίζει τα θέματα υποστήριξης και απόκρισης περιστατικών μόνο σε περιορισμένο βαθμό. Μειονεκτήματα του Octant:

  • Δεν υπάρχει αναζήτηση συμπλέγματος.
  • Λειτουργεί μόνο στο τοπικό μηχάνημα (δεν αναπτύσσεται σε ένα σύμπλεγμα).
  • Δεν είναι δυνατή η ταξινόμηση/φιλτράρισμα αντικειμένων (υποστηρίζεται μόνο ο επιλογέας ετικετών).
  • Δεν μπορείτε να καθορίσετε προσαρμοσμένες στήλες.
  • Δεν μπορείτε να παραθέσετε αντικείμενα κατά χώρο ονομάτων.

Είχα επίσης προβλήματα με τη σταθερότητα του Octant με συστάδες Zalando: σε ορισμένα CRD έπεφτε.

Παρουσιάζουμε το Kubernetes Web View

"kubectl για τον Ιστό".

Ανακοίνωση της προβολής Ιστού Kubernetes (και μια σύντομη επισκόπηση άλλων διεπαφών ιστού για το Kubernetes)

Αφού ανέλυσα τις διαθέσιμες επιλογές διεπαφής για το Kubernetes, αποφάσισα να δημιουργήσω ένα νέο: Kubernetes WebView. Τελικά, στην πραγματικότητα, χρειάζομαι μόνο όλη τη δύναμη kubectl στον Ιστό, και συγκεκριμένα:

  • διαθεσιμότητα όλων των λειτουργιών (μόνο για ανάγνωση) για τις οποίες οι χρήστες προτιμούν να χρησιμοποιούν το kubectl.
  • όλες οι διευθύνσεις URL πρέπει να είναι μόνιμες και να αντιπροσωπεύουν τη σελίδα στην αρχική της μορφή, έτσι ώστε οι συνάδελφοι να μπορούν να τις μοιράζονται και να τις χρησιμοποιούν σε άλλα εργαλεία.
  • υποστήριξη για όλα τα αντικείμενα Kubernetes, τα οποία θα σας επιτρέψουν να λύσετε οποιοδήποτε είδος προβλήματος.
  • Οι λίστες πόρων θα πρέπει να μπορούν να ληφθούν για περαιτέρω εργασία (σε υπολογιστικά φύλλα, εργαλεία CLI όπως grep) και αποθήκευση (για παράδειγμα, για νεκροτομές).
  • υποστήριξη για την επιλογή πόρων ανά ετικέτα (παρόμοια με kubectl get .. -l);
  • τη δυνατότητα δημιουργίας συνδυασμένων λιστών διαφόρων τύπων πόρων (παρόμοια με kubectl get all) να αποκτήσουν μια κοινή επιχειρησιακή εικόνα μεταξύ των συναδέλφων (για παράδειγμα, κατά τη διάρκεια μιας αντίδρασης σε περιστατικό)·
  • τη δυνατότητα προσθήκης προσαρμοσμένων έξυπνων συνδέσμων σε βάθος σε άλλα εργαλεία όπως πίνακες εργαλείων, καταγραφικά, μητρώα εφαρμογών κ.λπ. για τη διευκόλυνση της αντιμετώπισης προβλημάτων/επίλυσης σφαλμάτων και της απόκρισης σε περιστατικά·
  • Το frontend θα πρέπει να είναι όσο το δυνατόν πιο απλό (καθαρό HTML) για να αποφευχθούν τυχαία προβλήματα, όπως παγωμένη JavaScript.
  • υποστήριξη για πολλαπλά συμπλέγματα για την απλοποίηση της αλληλεπίδρασης κατά τη διάρκεια της απομακρυσμένης διαβούλευσης (για παράδειγμα, για να θυμάστε μόνο ένα URL).
  • Εάν είναι δυνατόν, η ανάλυση καταστάσεων θα πρέπει να απλοποιηθεί (για παράδειγμα, με συνδέσμους για λήψη πόρων για όλα τα συμπλέγματα/χώρους ονομάτων).
  • πρόσθετες ευκαιρίες για τη δημιουργία ευέλικτων συνδέσμων και την επισήμανση πληροφοριών κειμένου, για παράδειγμα, ώστε να μπορείτε να κατευθύνετε τους συναδέλφους σε μια συγκεκριμένη ενότητα στην περιγραφή του πόρου (μια γραμμή στο YAML).
  • τη δυνατότητα προσαρμογής στις απαιτήσεις ενός συγκεκριμένου πελάτη, για παράδειγμα, επιτρέποντάς σας να δημιουργήσετε ειδικά πρότυπα εμφάνισης για CRD, τις δικές σας προβολές πίνακα και να αλλάξετε στυλ CSS.
  • εργαλεία για περαιτέρω εξερεύνηση στη γραμμή εντολών (για παράδειγμα, εμφάνιση πλήρους εντολών kubectl, έτοιμο για αντιγραφή).

Πέρα από τις εργασίες που επιλύθηκαν στο Kubernetes Web View (χωρίς γκολ) παρέμεινε:

  • αφαίρεση αντικειμένων Kubernetes.
  • διαχείριση εφαρμογών (για παράδειγμα, διαχείριση ανάπτυξης, χάρτες πηδαλίου κ.λπ.)
  • λειτουργίες εγγραφής (πρέπει να γίνονται μέσω ασφαλών εργαλείων CI/CD και/ή GitOps).
  • όμορφη διεπαφή (JavaScript, θέματα, κ.λπ.)
  • οπτικοποίηση (βλ kube-ops-view);
  • ανάλυση κόστους (βλ kube-resource-report).

Πώς βοηθά το Kubernetes Web View με την υποστήριξη και την απόκριση σε περιστατικά;

Υποστήριξη

  • Όλοι οι σύνδεσμοι είναι μόνιμοι, γεγονός που διευκολύνει την ανταλλαγή πληροφοριών με συναδέλφους.
  • Μπορείτε να δημιουργήσετε τις ιδέες σας, για παράδειγμα, εμφανίστε όλες τις αναπτύξεις και τις ομάδες ομάδων με μια συγκεκριμένη ετικέτα σε δύο συγκεκριμένα συμπλέγματα (μπορούν να καθοριστούν πολλά ονόματα συμπλεγμάτων και τύποι πόρων σε έναν σύνδεσμο, διαχωρισμένα με κόμματα).
  • Μπορείτε να ανατρέξετε σε συγκεκριμένες γραμμές σε ένα αρχείο YAML αντικείμενο, υποδεικνύοντας πιθανά προβλήματα στις προδιαγραφές του αντικειμένου.

Ανακοίνωση της προβολής Ιστού Kubernetes (και μια σύντομη επισκόπηση άλλων διεπαφών ιστού για το Kubernetes)
Αναζήτηση ανά συμπλέγματα στο Kubernetes Web View

Αντιμετώπιση περιστατικού

  • Καθολική αναζήτηση (καθολική αναζήτηση) σας επιτρέπει να αναζητήσετε αντικείμενα σε όλα τα συμπλέγματα.
  • Προβολές λίστας μπορεί να εμφανίσει όλα τα αντικείμενα με μια συγκεκριμένη κατάσταση/στήλη σε όλα τα συμπλέγματα (για παράδειγμα, πρέπει να βρούμε όλα τα pods με την κατάσταση "Σε εκκρεμότητα").
  • Μπορείτε να κατεβάσετε λίστες αντικειμένων σε μορφή τιμής διαχωρισμένης με στηλοθέτες (TSV) για μεταγενέστερη ανάλυση.
  • Προσαρμόσιμοι εξωτερικοί σύνδεσμοι Σας επιτρέπει να μεταβείτε σε σχετικούς πίνακες εργαλείων και άλλα εργαλεία.

Ανακοίνωση της προβολής Ιστού Kubernetes (και μια σύντομη επισκόπηση άλλων διεπαφών ιστού για το Kubernetes)
Kubernetes Web View: λίστα ομάδων με κατάσταση "Σε εκκρεμότητα" σε όλα τα συμπλέγματα

Αν θέλετε να δοκιμάσετε το Kubernetes Web View, σας προτείνω να το ελέγξετε τεκμηρίωση ή κοιτάξτε ζωντανή επίδειξη.

Φυσικά, η διεπαφή θα μπορούσε να είναι καλύτερη, αλλά προς το παρόν το Kubernetes Web View είναι ένα εργαλείο για «προχωρημένους χρήστες» που δεν διστάζουν να χειριστούν τις διαδρομές URL με μη αυτόματο τρόπο, εάν είναι απαραίτητο. Εάν έχετε οποιαδήποτε σχόλια/προσθήκες/προτάσεις, επικοινωνήστε μαζί μου στο Twitter!

Αυτό το άρθρο είναι ένα σύντομο ιστορικό του παρασκηνίου που οδήγησε στη δημιουργία του Kubernetes Web View. Θα ακολουθήσουν κι άλλα! (Σημείωση. μετάφρ.: Πρέπει να περιμένουμε μέσα blog του συγγραφέα.)

ΥΓ από τον μεταφραστή

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

Πηγή: www.habr.com

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