Notez que tout est expérimental et peut changer considérablement à tout moment.
Ce référentiel recueille les manifestes de Kubernetes, les tableaux de bord Grafana et les règles de Prometheus combinées avec la documentation et les scripts pour fournir une surveillance de cluster Kubernetes de bout en bout avec Prometheus à l'aide de l'opérateur Prometheus.
Le contenu de ce projet est écrit en JSONNET. Ce projet pourrait à la fois être décrit comme un package ainsi qu'une bibliothèque.
Composants inclus dans ce package:
Cette pile est destinée à la surveillance des cluster, il est donc préconfiguré de collecter des mesures de tous les composants Kubernetes. En plus de cela, il fournit un ensemble par défaut de tableaux de bord et de règles d'alerte. De nombreux tableaux de bord et alertes utiles proviennent du projet Kubernetes-Mixin, similaire à ce projet, il fournit un JSONNET composable en tant que bibliothèque à personnaliser à leurs besoins.
Vous aurez besoin d'un cluster Kubernetes, c'est tout! Par défaut, il est supposé que le kubelet utilise l'authentification et l'autorisation des jetons, car autrement Prometheus a besoin d'un certificat client, ce qui lui donne un accès complet au kubelet, plutôt que des mesures. L'authentification et l'autorisation des jetons permet un contrôle d'accès à grain plus fin et plus facile.
Cela signifie que la configuration de Kubelet doit contenir ces drapeaux:
--authentication-token-webhook=true Ce drapeau permet, qu'un jet de ServiceAccount peut être utilisé pour s'authentifier contre le ou les kubelet. Cela peut également être activé en définissant la valeur de configuration de Kubelet authentication.webhook.enabled à true .--authorization-mode=Webhook Cet drapeau permet que le kubelet effectuera une demande RBAC avec l'API pour déterminer si l'entité demandant (Prométhée dans ce cas) est autorisée à accéder à une ressource, en particulier pour ce projet le point final /metrics . Cela peut également être activé en définissant le Kubelet Configuration Value authorization.mode sur Webhook .Cette pile fournit des mesures de ressources en déploiement de l'adaptateur Prométhée. Cet adaptateur est un serveur API d'extension et Kubernetes doit être activé par cette fonctionnalité, sinon l'adaptateur n'a aucun effet, mais est toujours déployé.
Les versions Kubernetes suivantes sont prises en charge et fonctionnent alors que nous testons contre ces versions dans leurs branches respectives. Mais notez que d'autres versions pourraient fonctionner!
| pile Kube-Prometheus | 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 | ✔ | ✔ | ✔ | ✔ | ✔ |
Ce projet est destiné à être utilisé comme bibliothèque (c'est-à-dire que l'intention n'est pas pour vous de créer votre propre copie modifiée de ce référentiel).
Bien que pour un start qui rapide, une version compilée des manifestes Kubernetes générée avec cette bibliothèque (spécifiquement avec example.jsonnet ) est vérifiée dans ce référentiel afin d'essayer rapidement le contenu. Pour essayer la course de pile non personnalisée:
manifests : # 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/ Nous créons d'abord l'espace de noms et les finitions de service personnalisé pour éviter les conditions de course lors du déploiement des composants de surveillance. Alternativement, les ressources dans les deux dossiers peuvent être appliquées avec une seule commande kubectl apply --server-side -f manifests/setup -f manifests , mais il peut être nécessaire d'exécuter la commande plusieurs fois pour que tous les composants soient créés avec succès.
kubectl delete --ignore-not-found=true -f manifests/ -f manifests/setupPour essayer cette pile, démarrez Minikube avec la commande suivante:
$ 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.0La pile Kube-PromethEus comprend un serveur API de métriques de ressources, donc l'addon de métriques-serveur n'est pas nécessaire. Assurez-vous que l'addon Metrics-Server est désactivé sur Minikube:
$ minikube addons disable metrics-serverAvant de déployer Kube-Prometheus dans un environnement de production, lisez:
docs/ Directory. Pour contribuer à Kube-Prometheus, reportez-vous à la contribution.
Si vous avez des questions ou des commentaires concernant Kube-Prometheus, rejoignez la discussion Kube-Prometheus. Alternativement, envisagez de vous joindre à la chaîne Kubernetes Slack # Prometheus-Operator ou aux heures de bureau des contributeurs bihebdomadaires du projet.
Licence Apache 2.0, voir Licence.