ADMIN

2021

02

2021-02-01T12:00:00

Sichere Virtualisierung

SCHWERPUNKT

090

Virtualisierung

Kubernetes

Kubernetes-Kommandos mit StatusBay analysieren

Blick hinter die Kulissen

von Chris Binnie

Veröffentlicht in Ausgabe 02/2021 - SCHWERPUNKT

Kubernetes zählt schon länger zu den Platzhirschen unter den Werkzeugen zur Container-Orchestrierung, bietet aber wenig Transparenz bezüglich des K8s-Bereitstellungsprozesses. Um zu sehen, was im Hintergrund vor sich geht, wenn Sie einen Kubernetes-Befehl ausführen, hilft das Open-Source-Programm StatusBay weiter.

StatusBay [1] überwacht Ressourcenänderungen (Create, Update oder Delete) von K8s/K3s-Clustern sowie den Fortschritt aller mit dem Deployment verbundenen Ressourcentypen. Das Werkzeug benachrichtigt den Benutzer bei Erfolg, Fehlschlag oder einer Zeitüberschreitung. Die Ergebnisse zeigt es in einem detaillierten Bericht über die Benutzeroberfläche an.
Um StatusBay in Aktion zu zeigen, verwenden wir die schlanke Kubernetes- Distribution "K3s" [2] zum Aufbau eines Kubernetes-Clusters sowie den Kubernetes-Paketmanager "Helm" [3]. Da Helm wissen muss, wie die Kubernetes-Anwendung aufgebaut ist, erhält es Anweisungen, sogenannte Helm Charts [4]. Diese sind in YAML verfasst und definieren, welche Abhängigkeiten bestehen, welche Ressourcen aus Kubernetes gebraucht werden und was sonst noch für das Bereitstellen der Container-Anwendung notwendig ist.
Bevor wir uns nun näher mit StatusBay beschäftigen, schauen wir uns die Installation von K3s an.
StatusBay [1] überwacht Ressourcenänderungen (Create, Update oder Delete) von K8s/K3s-Clustern sowie den Fortschritt aller mit dem Deployment verbundenen Ressourcentypen. Das Werkzeug benachrichtigt den Benutzer bei Erfolg, Fehlschlag oder einer Zeitüberschreitung. Die Ergebnisse zeigt es in einem detaillierten Bericht über die Benutzeroberfläche an.
Um StatusBay in Aktion zu zeigen, verwenden wir die schlanke Kubernetes- Distribution "K3s" [2] zum Aufbau eines Kubernetes-Clusters sowie den Kubernetes-Paketmanager "Helm" [3]. Da Helm wissen muss, wie die Kubernetes-Anwendung aufgebaut ist, erhält es Anweisungen, sogenannte Helm Charts [4]. Diese sind in YAML verfasst und definieren, welche Abhängigkeiten bestehen, welche Ressourcen aus Kubernetes gebraucht werden und was sonst noch für das Bereitstellen der Container-Anwendung notwendig ist.
Bevor wir uns nun näher mit StatusBay beschäftigen, schauen wir uns die Installation von K3s an.
K3s installieren
Um K3s zum Laufen zu bringen, müssen wir lediglich einen Masterknoten (K3s-Server) bauen. Das Herunterladen und Installieren von K3s erfordert nur einen einfachen Befehl, den Sie als Root-User ausführen:
curl -sfL https://get.k3s.io | sh -
Nach etwa einer halben Minute erscheint eine Ausgabe auf der Kommandozeile, die den Erfolg der Installation bestätigt. Prüfen Sie nun mittels k3s kubectl get node, ob der Masterknoten läuft. Das Listing zeigt die Ausgabe.
Listing: Masterknoten-Test
NAME      STATUS      ROLES      AGE      VERSION Echo        Ready           master       53s        v1.17.3+k3s1
StatusBay installieren
Wie bereits erwähnt, verwenden wir für die Installation von StatusBay den Kubernetes-Paketmanager Helm sowie Helm Chart:
git clone https://github.com/similarweb/statusbay-helm.git
 
Cloning into 'statusbay-helm'...
remote: Enumerating objects: 74, done.
remote: Counting objects: 100% (74/74), done.
remote: Compressing objects: 100% (54/54), done.
remote: Total 371 (delta 32), reused 44 (delta 20), pack-reused 297
Receiving objects: 100% (371/371), 71.24 KiB | 548.00 KiB/s, done.
Resolving deltas: 100% (202/202), done.
Als Nächstes verwenden Sie folgende Befehle auf der Kommandozeile, um Helm zu installieren:
wget https://get.helm.sh/helm-<v3.1.2-linux-amd64>.tar.gz
 
tar -zxvf helm-<v3.1.2-linux-amd64>.tar.gz
 
mv <linux-amd64>/helm /usr/local/bin
Damit Helm weiß, wo es nach dem K3s-Cluster suchen soll, benutzen Sie den Befehl:
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
Anschließend navigieren Sie zum für StatusBay geklonten Repository und benutzen Helm, um den Chart zu installieren:
cd statusbay-helm/
 
helm install my-release
Mit folgendem Kommando stellen Sie sicher, dass StatusBay ordnungsgemäß gestartet wurde:
kubectl get svc,deployments,pods -l "release=my-release,app=statusbay-helm"
Nun können Sie den Port für StatusBay mit dem folgenden Port-Forwarding-Befehl öffnen:
kubectl port-forward svc/my-release-statusbay-helm-ui 3000:80
 
Forwarding from 127.0.0.1:3000 -> 80
Forwarding from [::1]:3000 -> 80
Die Ausgabe zeigt, dass sowohl der IPv4- als auch der IPv6-TCP-Port 80 an den TCP-Port 3000 weitergeleitet werden. Für den Zugriff auf StatusBay öffnen Sie die Adresse "http://127.0.0.1:3000" in Ihrem Browser.
Bild 1: StatusBay in Aktion. Die Spalte "Status" zeigt, dass alle Pods laufen.
StatusBay in Aktion
Um StatusBay einzusetzen, versuchen Sie nun, eine Anwendung in Ihrem Kubernetes-Cluster auszuführen. Unter [5] finden Sie eine einfache Beispiel-Deployment-Datei für nginx.
Speichern Sie diese unter dem Namen "nginx.yaml" ab und starten Sie anschließend den Befehl:
kubectl create -f nginx.yaml
 
deployment.apps/nginx-deployment created
StatusBay zeigt an, was während des nginx-Deployment passiert. Das Tool achtet dabei auf eine Reihe von Kubernetes-Ereignissen, gibt diese über die Benutzeroberfläche aus und überwacht den Fortschritt aller mit dem Deployment verbundenen Ressourcentypen (Deployment, Statefulset, Daemonset et cetera). Zudem zeigt das Werkzeug eine Benachrichtigung bei Erfolg, Misserfolg oder Zeitüberschreitung an und liefert detaillierte Berichte über die GUI.
Bild 2: Das Tool StatusBay visualisiert seine Metriken mithilfe des externen Dienstes "DataDog".
Zusammenarbeit mit externen Diensten
StatusBay lässt sich auch in Verbindung mit anderen Diensten nutzen, um Daten noch besser zu visualisieren. Das Tool unterstützt die Integration von Metriken, Alarmen und Berichten. Die entsprechenden Konfigurationsdateien stehen unter [6] zur Verfügung.
Es ist auch möglich, Protokolle an einen anderen Protokollierungsdienst wie ELK Stack zu übermitteln. Die Konfiguration der API-Einstellungen lautet:
api:
      application:
           log:
                level: INFO gelf_address: 127.0.0.1
Darüber hinaus bieten die StatusBay-Docs unter [7] hilfreiche Informationen, um das Tool noch besser an die eigenen Bedürfnisse anzupassen.
Integrationen für StatusBay
Externer Dienst
Kategorie
DataDog
Metriken
Prometheus
Metriken
StatusCake
Alarme
Pingdom
Alarme
Slack
Berichte
Fazit
Mithilfe von StatusBay lassen sich Orchestrierungsdienste wie Kubernetes tiefgehend überwachen. Die konfigurierbaren Helm Charts ermöglichen bei der Installation eine Reihe von hilfreichen Anpassungen. Auch wenn wir in diesem Beitrag nur einen einzigen Knoten verwendet haben, lassen sich mit dem Tool tatsächlich mehrere Knoten monitoren.
(jm)
Link-Codes