Web UI Dashboard für Kubernetes
Das Kubernetes Dashboard bietet eine webbasierte Benutzeroberfläche für den Cluster. Über das Dashboard kannst du Anwendungen im Cluster bereitstellen und Fehler in den bestehenden Anwendungen im Cluster beheben. Das Dashboard bietet außerdem einen Überblick über die Ressourcen im Cluster. Das Dashboard wird offiziell von Kubernetes bereitgestellt. Mit dem Dashboard kannst du Kubernetes-Objekte erstellen, ändern, aktualisieren und löschen.
In diesem Artikel werden wir das offizielle Dashboard von Kubernetes installieren und ein Dienstkonto für den Zugriff darauf einrichten. Bevor wir mit diesem Artikel fortfahren, setzen wir voraus, dass du mit Kubernetes vertraut bist und einen Kubernetes Cluster besitzt.
Vorraussetzungen
- Kubernetes Cluster mit mindestens 1 Worker Node.
Wenn du lernen willst, wie man einen Kubernetes Cluster erstellt, klicke hier. Diese Anleitung hilft dir, einen Kubernetes Cluster mit 1 Master und 2 Worker Nodes auf AWS Ubuntu 18.04 EC2 Instanzen zu erstellen. - Grundlegendes Verständnis von Kubernetes.
Was werden wir tun?
- Installiere das Kubernetes Dashboard.
- Einen ServiceAccount für den Zugriff auf das Kubernetes Dashboard einrichten.
- Zugriff auf das Kubernetes Dashboard.
Bereitstellen des Kubernetes Dashboards
Um das Kubernetes Dashboard einzurichten, können wir die Objektdatei von Github herunterladen. Verwende den folgenden Befehl, um die Objektdatei herunterzuladen. Diese Datei enthält Definitionen für Namespace, ServiceAccount, Service, Secret, ConfigMap, Role, ClusterRole, RoleBinding, ClusterRoleBinding, Deployment und Service.
pwd
wget https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended.yaml
Benenne die Datei um und ändere den Diensttyp in NodePort. Siehe dazu den folgenden Screenshot.
mv recommended.yaml kubernetes-dashboard-deployment.yml
vim kubernetes-dashboard-deployment.yml
Sobald du den Diensttyp in NodePort geändert hast, ist es an der Zeit, alle Objekte zu erstellen, die für die Bereitstellung des Kubernetes-Dashboards verantwortlich sind.
kubectl apply -f kubernetes-dashboard-deployment.yml
Überprüfe die Objekte Deployment, Pod und Service, die mit dem obigen Befehl erstellt wurden. Der obige Befehl erstellt auch Namespace, ServiceAccount, Service, Secret, ConfigMap, Role, ClusterRole, RoleBinding, ClusterRoleBinding, Deployment und Service.
kubectl get deployments -n kubernetes-dashboard
kubectl get svc
kubectl get pods
kubectl get pods -n kubernetes-dashboard
kubectl get svc -n kubernetes-dashboard
Im obigen Screenshot kannst du sehen, dass der Kubernetes Dashboard Service mit dem Typ „NodePort“ erstellt worden ist. Das bedeutet, dass das Dashboard auf allen IPs der Knoten am NodePort „32304“ verfügbar sein wird. Möglicherweise wird in deinem Cluster ein anderer Port für den Dienst angezeigt.
Benutze den folgenden Befehl, um die IPs deiner Knoten zu ermitteln, die du in den späteren Schritten benötigst.
kubectl get nodes -o wide
Einrichten eines ServiceAccounts für den Zugriff auf das Kubernetes Dashboard
Um auf das Kubernetes Dashboard zugreifen zu können, brauchst du ein Token. Um ein Token zu erstellen, müssen wir zunächst einen ServiceAccount einrichten
Erstelle eine neue Datei und füge ihr den folgenden Inhalt hinzu, um einen ServiceAccount zu erstellen. Du kannst die Objektdatei auch von meinemGithub Repo herunterladen.
vim admin-sa.yml
cat admin-sa.yml
apiVersion: v1 kind: ServiceAccount metadata: name: rahul-admin namespace: kube-system
Sobald du die Objektdatei hast, führe den folgenden Befehl aus, um einen ServiceAccount zu erstellen.
kubectl apply -f admin-sa.yml
Nun musst du den ServiceAccount „rahul-admin“ mit der Clusterrolle „cluster-admin“ verknüpfen. Erstelle eine neue Datei mit folgendem Inhalt, um eine ClusterRoleBinding zu erstellen oder klickehier, um die Objektdatei aus meinem Github Repo herunterzuladen.
vim admin-rbac.yml
cat admin-rbac.yml
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: rahul-admin roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: rahul-admin namespace: kube-system
Führe den folgenden Befehl aus, um eine „ClusterRoleBinding“ zu erstellen.
kubectl apply -f admin-rbac.yml
Jetzt haben wir eine „ClusterRole“ –> „cluster-admin“ an den „ServiceAccount“ –> „rahul-admin“ gebunden.
Jetzt können wir das Token abrufen, mit dem wir uns im Kubernetes Dashboard anmelden. Um das Token abzurufen, führe die folgenden Befehle aus.
SA_NAME="rahul-admin"
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep ${SA_NAME} | awk '{print $1}')
Im obigen Screenshot siehst du ein Token, mit dem du dich im Kubernetes-Dashboard anmelden kannst. Kopiere dieses Token und rufe die Dashboard-URL unter „NodeIP:NodePort“ auf.
NodeIP ist die IP eines beliebigen Knotens im Cluster und NodePort ist der Port (in diesem Fall 32304, in deinem Fall kann es sein, dass du einen anderen Port hast) des Dienstes, den wir erstellt haben.
Sobald du die URL „NodeIP:NodePort“ eingibst, siehst du den folgenden Bildschirm. Hier wählst du die Option „Token“ aus, gibst den Token ein, den wir im obigen Schritt geholt haben, und klickst auf die Schaltfläche „Sign in“.
Zugriff auf das Kubernetes Dashboard
Sobald du dich erfolgreich angemeldet hast, solltest du das Kubernetes Dashboard wie folgt sehen.
Oben auf dem Bildschirm kannst du sogar den Namespace ändern und die Ressourcen darin sehen. Jetzt kannst du das Kubernetes Dashboard erkunden.
Fazit
In diesem Artikel haben wir alle notwendigen Kubernetes-Objekte implementiert, um das Dashboard im Cluster zu nutzen. Wir haben einen ServiceAccount und eine ClusterRoleBinding erstellt, um ein Token für den Zugriff auf das Kubernetes Dashboard zu haben, da es nicht einfach zugänglich ist. Mit dem Dashboard kannst du dir einen Überblick über den Cluster verschaffen und alle darin enthaltenen Objekte sehen.