Rechercher

Chapitre 12. Collecte et stockage des événements Kubernetes

download PDF

L'OpenShift Container Platform Event Router est un pod qui observe les événements Kubernetes et les enregistre pour qu'ils soient collectés par le sous-système de journalisation. Vous devez déployer manuellement l'Event Router.

Le routeur d'événements collecte les événements de tous les projets et les écrit sur STDOUT. Le collecteur transmet ensuite ces événements au magasin défini dans la ressource personnalisée (CR) ClusterLogForwarder.

Important

Le routeur d'événements ajoute une charge supplémentaire à Fluentd et peut avoir un impact sur le nombre d'autres messages de journaux qui peuvent être traités.

12.1. Déploiement et configuration de l'Event Router

Suivez les étapes suivantes pour déployer l'Event Router dans votre cluster. Vous devez toujours déployer le routeur d'événements dans le projet openshift-logging afin de vous assurer qu'il collecte les événements de l'ensemble du cluster.

L'objet Template suivant crée le compte de service, le rôle de cluster et la liaison de rôle de cluster requis pour le routeur d'événements. Le modèle configure et déploie également le pod Event Router. Vous pouvez utiliser ce modèle sans y apporter de modifications ou modifier les demandes de CPU et de mémoire de l'objet de déploiement.

Conditions préalables

  • Vous devez disposer des autorisations appropriées pour créer des comptes de service et mettre à jour les liaisons de rôles de cluster. Par exemple, vous pouvez exécuter le modèle suivant avec un utilisateur ayant le rôle cluster-admin.
  • Le sous-système de journalisation pour Red Hat OpenShift doit être installé.

Procédure

  1. Créer un modèle pour le routeur d'événements :

    kind: Template
    apiVersion: template.openshift.io/v1
    metadata:
      name: eventrouter-template
      annotations:
        description: "A pod forwarding kubernetes events to OpenShift Logging stack."
        tags: "events,EFK,logging,cluster-logging"
    objects:
      - kind: ServiceAccount 1
        apiVersion: v1
        metadata:
          name: eventrouter
          namespace: ${NAMESPACE}
      - kind: ClusterRole 2
        apiVersion: rbac.authorization.k8s.io/v1
        metadata:
          name: event-reader
        rules:
        - apiGroups: [""]
          resources: ["events"]
          verbs: ["get", "watch", "list"]
      - kind: ClusterRoleBinding  3
        apiVersion: rbac.authorization.k8s.io/v1
        metadata:
          name: event-reader-binding
        subjects:
        - kind: ServiceAccount
          name: eventrouter
          namespace: ${NAMESPACE}
        roleRef:
          kind: ClusterRole
          name: event-reader
      - kind: ConfigMap 4
        apiVersion: v1
        metadata:
          name: eventrouter
          namespace: ${NAMESPACE}
        data:
          config.json: |-
            {
              "sink": "stdout"
            }
      - kind: Deployment 5
        apiVersion: apps/v1
        metadata:
          name: eventrouter
          namespace: ${NAMESPACE}
          labels:
            component: "eventrouter"
            logging-infra: "eventrouter"
            provider: "openshift"
        spec:
          selector:
            matchLabels:
              component: "eventrouter"
              logging-infra: "eventrouter"
              provider: "openshift"
          replicas: 1
          template:
            metadata:
              labels:
                component: "eventrouter"
                logging-infra: "eventrouter"
                provider: "openshift"
              name: eventrouter
            spec:
              serviceAccount: eventrouter
              containers:
                - name: kube-eventrouter
                  image: ${IMAGE}
                  imagePullPolicy: IfNotPresent
                  resources:
                    requests:
                      cpu: ${CPU}
                      memory: ${MEMORY}
                  volumeMounts:
                  - name: config-volume
                    mountPath: /etc/eventrouter
              volumes:
                - name: config-volume
                  configMap:
                    name: eventrouter
    parameters:
      - name: IMAGE 6
        displayName: Image
        value: "registry.redhat.io/openshift-logging/eventrouter-rhel8:v0.4"
      - name: CPU  7
        displayName: CPU
        value: "100m"
      - name: MEMORY 8
        displayName: Memory
        value: "128Mi"
      - name: NAMESPACE
        displayName: Namespace
        value: "openshift-logging" 9
    1
    Crée un compte de service dans le projet openshift-logging pour le routeur d'événements.
    2
    Crée un ClusterRole pour surveiller les événements dans le cluster.
    3
    Crée un ClusterRoleBinding pour lier le ClusterRole au compte de service.
    4
    Crée une carte de configuration dans le projet openshift-logging pour générer le fichier config.json requis.
    5
    Crée un déploiement dans le projet openshift-logging pour générer et configurer le pod Event Router.
    6
    Spécifie l'image, identifiée par une balise telle que v0.4.
    7
    Spécifie la quantité minimale de CPU à allouer au pod Event Router. La valeur par défaut est 100m.
    8
    Spécifie la quantité minimale de mémoire à allouer au pod Event Router. La valeur par défaut est 128Mi.
    9
    Spécifie le projet openshift-logging dans lequel les objets doivent être installés.
  2. Utilisez la commande suivante pour traiter et appliquer le modèle :

    oc process -f <templatefile> | oc apply -n openshift-logging -f -

    Par exemple :

    $ oc process -f eventrouter.yaml | oc apply -n openshift-logging -f -

    Exemple de sortie

    serviceaccount/eventrouter created
    clusterrole.authorization.openshift.io/event-reader created
    clusterrolebinding.authorization.openshift.io/event-reader-binding created
    configmap/eventrouter created
    deployment.apps/eventrouter created

  3. Validez que l'Event Router est installé dans le projet openshift-logging:

    1. Voir le nouveau pod Event Router :

      $ oc get pods --selector  component=eventrouter -o name -n openshift-logging

      Exemple de sortie

      pod/cluster-logging-eventrouter-d649f97c8-qvv8r

    2. Affichez les événements collectés par le routeur d'événements :

      oc logs <cluster_logging_eventrouter_pod> -n openshift-logging

      Par exemple :

      $ oc logs cluster-logging-eventrouter-d649f97c8-qvv8r -n openshift-logging

      Exemple de sortie

      {"verb":"ADDED","event":{"metadata":{"name":"openshift-service-catalog-controller-manager-remover.1632d931e88fcd8f","namespace":"openshift-service-catalog-removed","selfLink":"/api/v1/namespaces/openshift-service-catalog-removed/events/openshift-service-catalog-controller-manager-remover.1632d931e88fcd8f","uid":"787d7b26-3d2f-4017-b0b0-420db4ae62c0","resourceVersion":"21399","creationTimestamp":"2020-09-08T15:40:26Z"},"involvedObject":{"kind":"Job","namespace":"openshift-service-catalog-removed","name":"openshift-service-catalog-controller-manager-remover","uid":"fac9f479-4ad5-4a57-8adc-cb25d3d9cf8f","apiVersion":"batch/v1","resourceVersion":"21280"},"reason":"Completed","message":"Job completed","source":{"component":"job-controller"},"firstTimestamp":"2020-09-08T15:40:26Z","lastTimestamp":"2020-09-08T15:40:26Z","count":1,"type":"Normal"}}

      Vous pouvez également utiliser Kibana pour afficher les événements en créant un modèle d'index à l'aide de l'index Elasticsearch infra.

Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.