Beachten Sie, dass alles experimentell ist und sich jederzeit erheblich ändern kann.
Dieses Repository sammelt Kubernetes-Manifeste, Grafana-Dashboards und Prometheus-Regeln in Kombination mit Dokumentation und Skripten, um eine einfach zu bedienende Kubernetes-Cluster-Überwachung mit Prometheus mit dem Prometheus-Operator bereitzustellen.
Der Inhalt dieses Projekts ist in JSONNET geschrieben. Dieses Projekt könnte sowohl als Paket als auch als Bibliothek beschrieben werden.
In diesem Paket enthaltene Komponenten:
Dieser Stapel ist für die Clusterüberwachung gedacht, daher ist er vorkonfiguriert, um Metriken von allen Kubernetes-Komponenten zu sammeln. Darüber hinaus liefert es einen Standardsatz von Dashboards und alarmierende Regeln. Viele der nützlichen Dashboards und Benachrichtigungen stammen aus dem Kubernetes-Mixin-Projekt, ähnlich wie bei diesem Projekt, das sie mit komponierbarem JSONNET als Bibliothek für Benutzer anpassen können, um sich an ihre Anforderungen anzupassen.
Sie brauchen einen Kubernetes -Cluster, das war's! Standardmäßig wird davon ausgegangen, dass das Kuberelet -Token -Authentifizierung und -autorisierung verwendet wird, da ansonsten Prometheus ein Client -Zertifikat benötigt, das ihm den vollen Zugriff auf das Kuberet und nicht nur für die Metriken bietet. Die Token -Authentifizierung und -autorisierung ermöglicht eine feinkörnigere und einfachere Zugriffskontrolle.
Dies bedeutet, dass die KuBelet -Konfiguration diese Flags enthalten muss:
--authentication-token-webhook=true Diese Flagge ermöglicht, dass ein ServiceAccount -Token verwendet werden kann, um sich gegen die Kuberet (en) zu authentifizieren. Dies kann auch aktiviert werden, indem die KuBelet authentication.webhook.enabled true wird.--authorization-mode=Webhook Dieses Flag ermöglicht, dass das Kuberelet eine RBAC-Anforderung mit der API ausführt, um festzustellen, ob das anfordernde Entität (Prometheus in diesem Fall) in spezifischem Projekt den /metrics Endpunkt auf eine Ressource zugreifen darf. Dies kann auch aktiviert werden, indem die kuberettische authorization.mode auf Webhook festgelegt wird.Dieser Stack bietet Ressourcenmetriken, indem der Prometheus -Adapter bereitgestellt wird. Dieser Adapter ist ein Erweiterungs -API -Server, und Kubernetes muss diese Funktion aktivieren, da ansonsten der Adapter keinen Einfluss hat, aber weiterhin bereitgestellt wird.
Die folgenden Kubernetes -Versionen werden unterstützt und arbeiten, während wir gegen diese Versionen in ihren jeweiligen Zweigen testen. Beachten Sie jedoch, dass andere Versionen funktionieren könnten!
| Kube-Prometheus Stack | Kubernetes 1.23 | Kubernetes 1.24 | Kubernetes 1.25 | Kubernetes 1.26 | Kubernetes 1.27 | Kubernetes 1.28 | Kubernetes 1.29 | Kubernetes 1.30 | Kubernetes 1.31 |
|---|---|---|---|---|---|---|---|---|---|
release-0.11 | ✔ | ✔ | ✗ | X | X | X | X | X | X |
release-0.12 | ✗ | ✔ | ✔ | X | X | X | X | X | X |
release-0.13 | ✗ | ✗ | X | ✔ | ✔ | ✔ | X | X | X |
release-0.14 | ✗ | ✗ | X | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
main | ✗ | ✗ | X | X | ✔ | ✔ | ✔ | ✔ | ✔ |
Dieses Projekt soll als Bibliothek verwendet werden (dh die Absicht ist nicht darin, eine eigene geänderte Kopie dieses Repositorys zu erstellen).
Für einen QuickStart wird eine kompilierte Version der mit dieser Bibliothek generierten Kubernetes -Manifests (speziell mit example.jsonnet ) in dieses Repository untersucht, um den Inhalt schnell auszuprobieren. Um den unkundenspezifischen Stack auszuprobieren:
manifests -Verzeichnis: # Create the namespace and CRDs, and then wait for them to be available before creating the remaining resources
# Note that due to some CRD size we are using kubectl server-side apply feature which is generally available since kubernetes 1.22.
# If you are using previous kubernetes versions this feature may not be available and you would need to use kubectl create instead.
kubectl apply --server-side -f manifests/setup
kubectl wait
--for condition=Established
--all CustomResourceDefinition
--namespace=monitoring
kubectl apply -f manifests/ Wir erstellen zunächst den Namespace- und CustomResourced -Definitions, um Rennbedingungen bei der Bereitstellung der Überwachungskomponenten zu vermeiden. Alternativ können die Ressourcen in beiden Ordnern mit einem einzigen Befehl kubectl apply --server-side -f manifests/setup -f manifests , aber es kann erforderlich sein, den Befehl mehrmals für alle Komponenten erfolgreich auszuführen.
kubectl delete --ignore-not-found=true -f manifests/ -f manifests/setupUm diesen Stapel auszuprobieren, starten Sie Minikube mit dem folgenden Befehl:
$ minikube delete && minikube start --kubernetes-version=v1.23.0 --memory=6g --bootstrapper=kubeadm --extra-config=kubelet.authentication-token-webhook=true --extra-config=kubelet.authorization-mode=Webhook --extra-config=scheduler.bind-address=0.0.0.0 --extra-config=controller-manager.bind-address=0.0.0.0Der Kube-Prometheus-Stack enthält einen API-Server von Ressourcenmetriken, sodass das Addon des Metriken-Servers nicht erforderlich ist. Stellen Sie sicher, dass das addon metrics-server auf minikube deaktiviert ist:
$ minikube addons disable metrics-serverLesen Sie vor dem Einsatz von Kube-Prometheus in einer Produktionsumgebung:
docs/ Verzeichnis. Um zum Kube-Prometheus beizutragen, finden Sie auf dem Beitrag.
Wenn Sie Fragen oder Feedback zu Kube-Prometheus haben, nehmen Sie der Kube-Prometheus-Diskussion bei. Alternativ können Sie sich dem Kubernetes Slack #Prometheus-Operator-Kanal oder dem zweiwöchentlichen Bürozeiten des Projekts anschließen.
Apache -Lizenz 2.0, siehe Lizenz.