Comment visualiser les événements du cluster Kubernetes en temps réel



Cet article de blog vous aidera à apprendre à publier des données d'événements de cluster Kubernetes sur Amazon Elastic Search à l'aide de l'agent de journalisation Fluentd.

Dans cet article, vous apprendrez à publier des données d'événements de cluster Kubernetes sur Amazon en utilisant l'agent de journalisation Fluentd. Les données seront ensuite visualisées en utilisant , un outil de visualisation open source pour Elasticsearch. Amazon ES consiste en une intégration Kibana intégrée.

Nous vous guiderons tout au long du processus suivant:





Étape 1: création d'un cluster Kubernetes

Kubernetes est une plateforme open source créée par Google pour gérer les applications conteneurisées. il vous permet de gérer, de mettre à l'échelle et de déployer vos applications conteneurisées dans un environnement en cluster. Nous pouvons orchestrer nos conteneurs sur différents hôtes avec Gouverneurs , faites évoluer les applications conteneurisées avec toutes les ressources à la volée et disposez d'un environnement de gestion de conteneurs centralisé.

Nous commencerons par créer un cluster Kubernetes et je vous montrerai étape par étape comment installer et configurer Kubernetes sur CentOS 7.



longueur du tableau en javascript

un. Configurer les hôtes

    • vi / etc / hosts
    • apporter des modifications en fonction des détails de votre hôte dans le fichier hosts

IMG1 - Elasticsearch - Edureka

2. Désactivez SELinux en exécutant les commandes ci-dessous



    • setenforce 0
    • sed -i –follow-symlinks ‘s / SELINUX = enforcing / SELINUX = désactivé / g’ / etc / sysconfig / selinux

3. Activer le module de noyau br_netfilter

Le module br_netfilter est requis pour l'installation de Kubernetes. Exécutez la commande ci-dessous pour activer le module de noyau br_netfilter.
    • modprobe br_netfilter
    • echo ‘1’> / proc / sys / net / bridge / bridge-nf-call-iptables

Quatre. Désactivez SWAP en exécutant les commandes ci-dessous.

    • swapoff -a
    • Puis éditez / etc / fstab et commentez la ligne de swap

5. Installez la dernière version de Docker CE.Installez les dépendances de package pour docker-ce en exécutant les commandes ci-dessous.

    • yum install -y yum-utils device-mapper-persistent-data lvm2
Ajoutez le référentiel docker au système et installez docker-ce à l'aide de la commande yum.

6. Installez Kubernetes

Utilisez la commande suivante pour ajouter le référentiel kubernetes au système centos 7.
    • yum installer -y kubelet bebeadm kubectl

[kubernetes] name = Kubernetes baseurl = https: //packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled = 1 gpgcheck = 1 repo_gpgcheck = 1 gpgkey = https: //packages.cloud.google. com / yum / doc / yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF
Installez le packages kubeadm, kubelet et kubectl en exécutant la commande yum ci-dessous.
  • systemctl démarrer le docker && systemctl activer le docker

Une fois l'installation terminée, redémarrez tous ces serveurs.Après le redémarrage, démarrez le docker et le kubelet des services

  • systemctl démarrer le docker && systemctl activer le docker
  • systemctl démarrer kubelet && systemctl activer kubelet
sept. Initialisation du cluster Kubernetes Connectez-vous au serveur maître et exécutez la commande ci-dessous
  • systemctl démarrer kubelet && systemctl activer kubelet
Une fois l'initialisation de Kubernetes terminée, vous obtiendrez les résultats.Copiez les commandes des résultats que vous avez obtenus et exécutez-les pour commencer à utiliser le cluster. Notez la commande kubeadm join à partir des résultats. La commande sera utilisée pour enregistrer de nouveaux nœuds dans le cluster kubernetes. 8. Déployez le réseau Flannel sur le cluster Kubernetes kubectl appliquer -f

https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

Le réseau Flannel a été déployé sur le cluster Kubernetes. Attendez un peu, puis vérifiez le nœud et les pods kubernetes à l'aide des commandes ci-dessous.
    • kubectl obtenir des nœuds
    • kubectl get pods –all-namespaces
Et vous obtiendrez que le nœud `` k8s-master '' s'exécute en tant que cluster `` maître '' avec le statut `` prêt '', et vous obtiendrez tous les pods nécessaires pour le cluster, y compris le `` kube-flannel-ds '' pour le pod réseau configuration.

9. Ajout de nœuds au clusterConnectez-vous au serveur node01 et exécutez la commande kubeadm join

    • kubeadm join 172.31.7.47:6443 –token at03m9.iinkh5ps9q12sh2i –discovery-token-ca-cert-hash sha256: 3f6c1824796ef1ff3d9427c883bde915d5bc13331d74891d831fcab5c

Connectez-vous au serveur node02 et exécutez la commande kubeadm join

    • kubeadm join 172.31.7.47:6443 –token at03m9.iinkh5ps9q12sh2i –discovery-token-ca-cert-hash sha256: 3f6c1824796ef1ff3d9427c883bde915d5bc13331d74891d031fc5ab8c

Attendez quelques instants et validez le serveur de cluster maître «k8s-master», vérifiez les nœuds et les pods à l'aide de la commande suivante.

      • kubectl obtenir des nœuds

Maintenant, vous obtiendrez worker1 et worker2 a été ajouté au cluster avec le statut «prêt».

      • kubectl get pods –all-namespaces

L'initialisation et la configuration du maître de cluster Kubernetes sont terminées.

Étape 2: Création d'un cluster Amazon ES

Elasticsearch est un moteur de recherche et d'analyse open source utilisé pour l'analyse des journaux et la surveillance en temps réel des applications. Amazon Elasticsearch Service (Amazon ES) est un service AWS qui permet le déploiement, l'exploitation et la mise à l'échelle d'Elasticsearch dans le cloud AWS. Vous pouvez utiliser Amazon ES pour analyser les événements d'envoi d'e-mails depuis votre Amazon SES

Nous allons créer un cluster Amazon ES, puis déployer l'agent de journalisation Fluentd sur le cluster Kubernetes qui collectera les journaux et les enverra au cluster Amazon ES

Cette section montre comment utiliser la console Amazon ES pour créer un cluster Amazon ES.

Pour créer un cluster Amazon ES

    1. Connectez-vous à AWS Management Console et ouvrez la console Amazon Elasticsearch Service à l'adresse https://console.aws.amazon.com/es/
    2. Sélectionner Créez un nouveau domaine et choisissez le type de déploiement dans la console Amazon ES.
    3. Sous Version, laissez la valeur par défaut du champ Version d'Elasticsearch.
    4. Sélectionnez Suivant
    5. Saisissez un nom pour votre domaine de recherche Elastic sur le configurer le cluster page sous Configurer le domaine.
    6. Sur la page Configurer le cluster, sélectionnez les options suivantes sous Instances de données
      • Type d'instance - Choisissez t2.micro.elasticsearch (éligible au niveau gratuit).
      • Nombre d'instances - un
    7. En dessous deInstances principales dédiées
      • Activer le maître dédié - N'activez pas cette option.
      • Activer la détection de zone - N'activez pas cette option.
    8. Sous Configuration du stockage, choisissez les options suivantes.
      • Type de stockage - Choisissez EBS. Pour les paramètres EBS, choisissez le type de volume EBS à usage général (SSD) et la taille de volume EBS& thinspsur 10.
    9. Sous cryptage - N'activez pas cette option
    10. Sous la configuration de l'instantané
      • Heure de début de l'instantané automatisé - Choisissez l'heure de début des instantanés automatisés 00:00 UTC (par défaut).
    11. Choisissez suivant
    12. Sous Configuration du réseau, sélectionnez Accès au VPC et sélectionnez les détails selon votre VPC, comme indiqué ci-dessous.Sous authentification Kibana: - N'activez pas cette option.
    13. Pour définir la stratégie d'accès, sélectionnez Autoriser l'accès ouvert au domaine.Remarque: - En production, vous devez restreindre l'accès à des adresses IP ou des plages spécifiques.
    14. Choisissez Suivant.
    15. Sur la page Vérifier, vérifiez vos paramètres, puis choisissez Confirmer et créer.

Remarque: le déploiement du cluster prendra jusqu'à dix minutes. Prenez note de votre URL Kibana une fois que vous avez cliqué sur le domaine de recherche élastique créé.

Étape 3: déployer l'agent de journalisation Fluentd sur le cluster Kubernetes

Fluentd est un collecteur de données open source, qui vous permet d'unifier la collecte et la consommation de données pour une meilleure utilisation et compréhension des données. Dans ce cas, nous déploierons la journalisation Fluentd sur le cluster Kubernetes, qui collectera les fichiers journaux et les enverra à Amazon Elastic Search.

Nous allons créer un ClusterRole qui fournit des autorisations sur les pods et les objets d'espace de noms pour faire des requêtes get, list et watch au cluster.

Tout d'abord, nous devons configurer les autorisations RBAC (contrôle d'accès basé sur les rôles) afin que Fluentd puisse accéder aux composants appropriés.

1.fluentd-rbac.yaml:

est java basé sur c
apiVersion: v1 kind: métadonnées ServiceAccount: nom: espace de noms fluentd: kube-system --- apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRole métadonnées: nom: espace de noms fluentd: règles système kube: - apiGroups: - ' 'resources: - pods - namespaces verbs: - get - list - watch --- kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1beta1 metadata: name: fluentd roleRef: kind: ClusterRole name: fluentd apiGroup: rbac.authorization Sujets .k8s.io: - kind: ServiceAccount name: fluentd namespace: kube-system

Créer: $ kubectl create -f kubernetes / fluentd-rbac.yaml
Maintenant, nous pouvons créer le DaemonSet.

2. fluentd-daemonset.yaml

apiVersion: extensions / v1beta1 kind: métadonnées DaemonSet: nom: espace de noms fluentd: kube-system labels: k8s-app: fluentd-logging version: v1 kubernetes.io/cluster-service: 'true' spec: template: metadata: labels: k8s -app: fluentd-logging version: v1 kubernetes.io/cluster-service: 'true' spec: serviceAccount: fluentd serviceAccountName: fluentd tolérances: - clé: node-role.kubernetes.io/master effet: NoSchedule conteneurs: - nom: image fluentd: fluent / fluentd-kubernetes-daemonset: v1.3-debian-elasticsearch env: - nom: FLUENT_ELASTICSEARCH_HOST valeur: 'elasticsearch.logging' - nom: FLUENT_ELASTICSEARCH_PORT valeur: '9200' - nom: FLUENT_ELASTICSEARCH valeur_SCHEM nom: FLUENT_UID valeur: '0' ressources: limites: mémoire: 200Mi requêtes: cpu: 100m mémoire: 200Mi volumeMounts: - nom: varlog mountPath: / var / log - nom: varlibdockercontainers mountPath: / var / lib / docker / containers readOnly : true terminaisonGracePeriodSeconds: 30 volumes: - nom: varlog hostPath: chemin: / var / log - nom: varlibdockercontainers hostPath: chemin: / var / lib / docker / containers

Assurez-vous de définir FLUENT_ELASTICSEARCH_HOST et FLUENT_ELASTICSEARCH_PORT en fonction de votre environnement de recherche élastique

Déployer:

c ++ tri d'un tableau

$ kubectl create -f kubernetes / fluentd-daemonset.yaml

Validez les logs

$ kubectl enregistre fluentd-lwbt6 -n kube-system | Connexion grep

Vous devriez voir que Fluentd se connecte à Elasticsearch dans les journaux:

Étape 4: Visualisez les données Kubernetes dans Kibana

  1. Connectez-vous à l'URL du tableau de bord kibana pour obtenir à partir de la console Amazon ES
  2. Pour voir les journaux collectés par Fluentd à Kibana, cliquez sur «Gestion», puis sélectionnez «Modèles d'index» sous «Kibana»
  3. choisissez le modèle d'index par défaut (logstash- *)
  4. Cliquez sur Étape suivante et définissez le 'Nom du champ de filtre temporel' (@timestamp) et choisissez Créer un modèle d'index
  5. Cliquez sur Découvrir pour afficher les journaux de votre application
  6. Cliquez sur Visualiser et sélectionnez Créer une visualisation et choisissez Pie. Remplissez les champs suivants comme indiqué ci-dessous.
    • Sélectionnez Logstash- * index et cliquez sur les tranches fractionnées
    • Agrégation - Termes importants
    • Champ = Kubernetes.pod_name.keyword
    • Taille - 10

7. Et appliquer les modifications

C'est tout! C'est ainsi que vous pouvez visualiser le pod Kubernetes créé dans Kibana.

Sommaire :

La surveillance par analyse des journaux est un composant essentiel de tout déploiement d'application. Vous pouvez collecter et consolider les journaux de votre cluster dans Kubernetes pour surveiller l'ensemble du cluster à partir d'un seul tableau de bord. Dans notre exemple, nous avons vu fluentd agir comme un médiateur entre le cluster kubernetes et Amazon ES. Fluentd combine la collecte et l'agrégation de journaux et envoie des journaux à Amazon ES pour l'analyse des journaux et la visualisation des données avec kibana.

L'exemple ci-dessus montre comment ajouter la journalisation de la recherche AWS Elastic et la surveillance kibana au cluster kubernetes à l'aide de fluentd.

Si vous avez trouvé ce blog Kubernetes pertinent, consultez le par Edureka, une entreprise d'apprentissage en ligne de confiance avec un réseau de plus de 250 000 apprenants satisfaits répartis dans le monde entier.

Vous avez une question pour nous? Veuillez le mentionner dans la section commentaires et nous vous recontacterons.