Observer et gérer les performances d'un cluster Kubernetes est crucial pour maintenir la santé des applications, identifier les problèmes et garantir la haute disponibilité. Je vais vous guider dans la configuration d'une solution de surveillance complète à l'aide de kubectl et Helm, le déploiement de Grafana, Loki et Prometheus sur votre cluster et la configuration d'Ingress pour un accès externe.
Nous aborderons les étapes clés suivantes :
Conditions préalables
Avant de commencer, assurez-vous d'avoir les éléments suivants :
Étape 1 : Créer un espace de noms de surveillance
Les espaces de noms vous aident à diviser et à organiser logiquement vos ressources Kubernetes. Pour éviter les conflits et séparer les ressources de surveillance, nous allons créer un espace de noms dédié aux outils de surveillance.
1. Appliquez l'espace de noms de surveillance : enregistrez le contenu suivant dans un fichier monitoring-namespace.yml :
Version api : v1
genre : espace de noms
métadonnées :
nom : surveillance
étiquettes :
app.kubernetes.io/name : surveillance
app.kubernetes.io/instance : surveillance
2. Appliquez l'espace de noms à l'aide de kubectl :
kubectl apply -f monitoring-namespace.yml
Cette commande crée un nouvel espace de noms appelé surveillance dans votre cluster Kubernetes.
Étape 2 : Installer Helm et ajouter le référentiel Grafana
Helm, le gestionnaire de packages Kubernetes, facilite le déploiement d'applications complexes telles que Grafana, Loki et Prometheus. Voici comment installer Helm et configurer le référentiel nécessaire.
sudo snap install helm --classic
Cette commande installe Helm à l'aide de Snap, un système de gestion de packages pour Linux.
helm repo ajouter grafana https://grafana.github.io/helm-charts
mise à jour du dépôt de barre
Cela garantit que Helm dispose des dernières graphiques du référentiel Grafana.
Étape 3 : Déployez Loki, Prometheus et Grafana avec Helm
Maintenant que Helm est installé et configuré, nous allons déployer Loki, Prometheus et Grafana à l'aide de la carte Grafana Helm.
1. Exécutez la commande d'installation Helm :
helm update --install loki --namespace=monitoring grafana/loki-stack \
--set grafana.enabled=true,prometheus.enabled=true,prometheus.alertmanager.persistentVolume.enabled=false,prometheus.server.persistentVolume.enabled=false,loki.persistence.enabled=true,loki.persistence.storageClassName=gp2 ,loki.persistence.size=100Gi --set nodeSelector.name=node.kubernetes.io/description=all_production
A : Grafana : **Cela active Grafana, l'outil de tableau de bord de surveillance, dans le graphique Helm.
**B : Prometheus : **Prometheus est activé pour la collecte de métriques, tandis que les volumes persistants pour Alertmanager et le serveur Prometheus sont désactivés pour simplifier la configuration du stockage.
**C : Loki : Loki, l'outil d'agrégation de journaux, est activé avec un stockage de volume persistant de 100 Gi à l'aide de la classe de stockage gp2.
L'indicateur --install garantit que la pile est installée si elle n'a pas été déployée auparavant. L'indicateur --upgrade met à jour la pile vers la dernière version si elle est déjà installée.
2. Vérifier l'installation : Après une installation réussie, vérifiez l'état des pods exécutés dans l'espace de noms de surveillance :
kubectl obtient les pods -n surveillance
Vous devriez voir des pods pour Grafana, Prometheus, Loki et Promtail (qui envoie les journaux à Loki).
Étape 4 : Configurer Ingress pour l'accès externe
Pour accéder à Grafana, Prometheus ou Loki depuis l'extérieur de votre cluster, vous devez configurer une ressource Ingress. Cela permet un accès HTTP/S externe aux services de surveillance.
*1. Créez une ressource Ingress : enregistrez l'exemple suivant dans un fichier monitoring-ingress.yml :
*
Version api : networking.k8s.io/v1
genre : Entrée
métadonnées :
nom : surveillance-entrée
espace de noms : surveillance
annotations :
kubernetes.io/ingress.class : "nginx"
cert-manager.io/cluster-issuer : permet de chiffrer
spécification :
tl :
- hôtes :
- votre-domaine.com
secretName : nom du certificat
règles:
- hébergeur : votre-domaine.com
http:
chemins :
- chemin: /
pathType : Préfixe
backend :
service:
nom : loki-grafana
port:
numéro : 80
Cette configuration Ingress configure le routage pour Grafana, Prometheus et Loki sous le nom de domaine {votre-domaine.com}. Vous devrez remplacer votre-domaine.com par votre domaine actuel et configurer DNS pour qu'il pointe vers l'adresse IP externe de votre cluster.
2. Appliquer la ressource Ingress :
kubectl apply -f monitoring-ingress.yml
Une fois appliqué, le contrôleur Ingress acheminera le trafic vers les services appropriés en fonction du nom d'hôte.
kubectl obtient la surveillance d'entrée -n
Assurez-vous que votre colonne ADRESSE dispose d'une adresse IP externe pour que les services soient accessibles en externe.
Étape 5 : Accédez au tableau de bord de surveillance
Une fois que l'Ingress est correctement configuré et que le DNS pointe vers votre cluster, vous pouvez accéder à Grafana, Prometheus et Loki.
Conclusion
En quelques commandes seulement, vous avez déployé avec succès une pile de surveillance complète à l'aide de Helm sur votre cluster Kubernetes. En tirant parti des graphiques Helm, vous simplifiez le déploiement d'applications complexes telles que Grafana, Loki et Prometheus tout en intégrant Ingress pour un accès facile. Vous disposez désormais d'une puissante configuration d'observabilité qui vous permet de surveiller les journaux et les métriques en temps réel, vous aidant ainsi à gérer et à optimiser vos applications Kubernetes plus efficacement.
Ce déploiement basé sur Helm garantit l'évolutivité et simplifie les mises à niveau ou les modifications de configuration, facilitant ainsi la gestion de l'observabilité dans un environnement de production.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3