Mit seinem eigenen Stapel von Schedulern und Controllern kann Kubernetes sich von kleineren Ausfällen, Knotenausfällen oder Apps, die in ihren Pods abstürzen, wiederherstellen. Wenn jedoch viele Abstürze auftreten, hat dies möglicherweise nichts mit der Infrastruktur zu tun, sondern mit Ihrer App, die Kubernetes möglicherweise immer wieder neu startet, aber da der Code fehlerhaft ist, bleibt der Fehler bestehen und kann sogar unbemerkt bleiben.
Die Art von Fehlern, die die meiste Zeit unbemerkt bleiben, sind diejenigen, bei denen Apps nicht abstürzen, sondern am Ende die Systemressourcen überlasten und die Cluster über die gesamte Leistung beeinträchtigen. Dies sind die besonders schlimmen Fälle und Kubernetes Metrics Server kann ein nützliches Werkzeug sein, um sie im Auge zu behalten.
Das Projekt ist offiziell Teil des Kubernetes-Projekts, ist aber in den meisten Kubernetes-zertifizierten Distributionen nicht voraktiviert. Es enthält zwei wichtige Teile, die es wert sind, die Metrics API und den Metrics Server selbst zu diskutieren. Aber zuerst stellen wir es auf unserem Kubernetes (K8)-Cluster bereit.
Ein experimentelles Kubernetes-Setup
Ab Juli 2018 sind Docker für Mac und Windows beide mit einer Kubernetes-zertifizierten Implementierung von K8 selbst ausgestattet. So einfach wie die Installation von K8 auf einer Linux-Distribution. Sie können zu den Docker-Einstellungen gehen und wenn die Docker-Instanz auf dem neuesten Stand ist, finden Sie im Menü einen Kubernetes-Tab. Aktivieren Sie einfach Kubernetes anstelle von Docker Swarm und Sie haben einen Single-Node-Cluster, der bereit für Experimente ist.
Als Nächstes benötigen wir einige einfache Anwendungen, die für unseren Anwendungsfall ausgeführt werden. Erstellen Sie einen Ordner namens Deployments und erstellen Sie darin einen nginx-Bereitstellung.yaml Dateien, die zustandslose Nginx-Pods bereitstellen würden.
apiVersion: apps/v1 # für Versionen vor 1.9.0 verwende Apps/v1beta2Art: Bereitstellung
Metadaten:
Name: nginx-Bereitstellung
spezifikation:
Wähler:
matchLabels:
App: nginx
Repliken: 2 # weist die Bereitstellung an, 2 Pods auszuführen, die der Vorlage entsprechen
Vorlage:
Metadaten:
Etiketten:
App: nginx
spezifikation:
Behälter:
- Name: nginx
Bild: nginx:1.7.9
Häfen:
- ContainerPort: 80
Speichern Sie die Datei und führen Sie im selben Verzeichnis, in dem sich diese Datei befindet, den Befehl aus:
$ kubectl create -f nginx-deployment.yamlWir müssen möglicherweise ein paar Minuten warten, damit Kubernetes die Container-Images herunterladen, die Container bereitstellen und ein bisschen verschiedene Buchhaltungen durchführen kann. Sobald dies erledigt ist, können Sie die Liste der Pods wie folgt sehen:
$ kubectl Pods erhalten
Wie Sie sehen können, haben wir zwei Instanzen des Pods, als die .yaml-Datei hatte vorgeschrieben.
Da wir nun etwas zu überwachen haben, müssen wir Metrics Server aktivieren enable. Überprüfen Sie zuerst die Version von Kubernetes, die Sie ausführen. Wenn die Version 1 . ist.8 oder höher, dann würden wir eine andere Bereitstellung ausführen und wenn es 1 ist.7 dann greifen wir auf das alte zurück:
$kubectl-VersionSie können das offizielle Image abrufen und beginnen, indem Sie dieses GitHub-Repository klonen und dann im Stammverzeichnis des Repositorys das kubectl create -f mit dem passenden .yaml abhängig von der K8-Version, die Sie ausführen.
$ git-Klon https://github.com/kubernetes-incubator/metrics-server.git$ cd Metrik-Server
# Wenn Sie Kubernetes-Version 1 ausführen.8 oder höher
$ kubectl create -f deploy/1.8+/
# Wenn die Version 1 . ist.7, dann
$ kubectl create -f deploy/1.7/
Geben Sie den Kubernetes eine Weile, um die Bilder herunterzuladen und den Metrikserver hochzufahren. Es kann ein paar Minuten dauern. Sobald dies erledigt ist, können Sie den Metrikserver ausführen. Der Grundbefehl ist inspiriert von der oben Befehl, der häufig ausgeführt wird, um ein Linux-System zu überwachen. Aber es gibt zwei Varianten, eine zum Überprüfen der Ressourcennutzungen auf dem rechner Knoten und zweitens, um die zu messen Ressourcenverbrauch durch die eingesetzten Schoten und der. So sehen Sie diese beiden Details:
$ kubectl oberster Knoten$ kubectl top pod
Sie können sehen, wie viel ein Pod Ihr System in Bezug auf Arbeitsspeicher oder CPU-Zeit beansprucht, und mithilfe der Metrik-API können Sie auch Warnungen entsprechend einrichten.
Wohin wird es von hier aus gehen?
Die aufkommenden Anwendungsfälle des Metrikservers werden in der Zukunft von Kubernetes entscheidend sein. Dieses Projekt ist noch in Version 0.2.x, sobald es ausgereift und in die Mainstream-Kubernetes-Architektur integriert ist, sammelt es wichtige Daten für den Scheduler und hilft ihm dabei, Pods effizienter und effizienter zu Knoten zuzuweisen.
Ebenso wird Horizontal Pod Autoscaler stark von dem Projekt profitieren und Ihnen helfen, hoch- oder herunterzuskalieren, damit die Ressourcen von den Anwendungen optimal genutzt werden.
Verweise
- Nginx-Bereitstellungen
- Kubernetes-Metrikenserver
- Design Docs für die Metrics API finden Sie hier und ähnliche Informationen zum Metrics Server finden Sie hier.