9.6. Collecte et stockage des événements Kubernetes
Le routeur d’événements dédié OpenShift est un pod qui regarde les événements Kubernetes et les enregistre pour la collecte par la journalisation. Il faut déployer manuellement le routeur d’événements.
Le routeur de l’événement recueille les événements de tous les projets et les écrit à STDOUT. Le collecteur transmet ensuite ces événements au magasin défini dans la ressource personnalisée ClusterLogForwarder (CR).
Le routeur d’événements ajoute une charge supplémentaire à Fluentd et peut avoir un impact sur le nombre d’autres messages de journal qui peuvent être traités.
9.6.1. Déploiement et configuration du routeur d’événements Copier lienLien copié sur presse-papiers!
Employez les étapes suivantes pour déployer le routeur d’événements dans votre cluster. Il faut toujours déployer le routeur d’événements dans le projet openshift-logging pour s’assurer qu’il recueille les événements de l’ensemble du cluster.
L’image du routeur d’événement ne fait pas partie de l’opérateur de journalisation Red Hat OpenShift et doit être téléchargée séparément.
L’objet Modèle 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. Il est possible d’utiliser ce modèle sans apporter de modifications ou de modifier le modèle pour modifier les requêtes CPU et mémoire de l’objet de déploiement.
Conditions préalables
- Il vous faut des autorisations appropriées pour créer des comptes de service et mettre à jour les liaisons de rôle de cluster. À titre d’exemple, vous pouvez exécuter le modèle suivant avec un utilisateur qui a le rôle de cluster-admin.
- Le Red Hat OpenShift Logging Operator doit être installé.
Procédure
Créer un modèle pour le routeur d’événements:
apiVersion: template.openshift.io/v1 kind: Template metadata: name: eventrouter-template annotations: description: "A pod forwarding kubernetes events to OpenShift Logging stack." tags: "events,EFK,logging,cluster-logging" objects: - kind: ServiceAccount1 apiVersion: v1 metadata: name: eventrouter namespace: ${NAMESPACE} - kind: ClusterRole2 apiVersion: rbac.authorization.k8s.io/v1 metadata: name: event-reader rules: - apiGroups: [""] resources: ["events"] verbs: ["get", "watch", "list"] - kind: ClusterRoleBinding3 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: ConfigMap4 apiVersion: v1 metadata: name: eventrouter namespace: ${NAMESPACE} data: config.json: |- { "sink": "stdout" } - kind: Deployment5 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 securityContext: allowPrivilegeEscalation: false capabilities: drop: ["ALL"] securityContext: runAsNonRoot: true seccompProfile: type: RuntimeDefault volumes: - name: config-volume configMap: name: eventrouter parameters: - name: IMAGE6 displayName: Image value: "registry.redhat.io/openshift-logging/eventrouter-rhel9:v0.4" - name: CPU7 displayName: CPU value: "100m" - name: MEMORY8 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
- Indique l’image, identifiée par une balise telle que v0.4.
- 7
- Indique la quantité minimale de CPU à allouer à la pod de routeur d’événement. Défaut à 100m.
- 8
- Indique la quantité minimale de mémoire à allouer à la pod de routeur d’événements. Défaut à 128Mi.
- 9
- Spécifie le projet openshift-logging pour installer des objets dans.
Utilisez la commande suivante pour traiter et appliquer le modèle:
$ oc process -f <templatefile> | oc apply -n openshift-logging -f -À titre d’exemple:
$ oc process -f eventrouter.yaml | oc apply -n openshift-logging -f -Exemple de sortie
serviceaccount/eventrouter created clusterrole.rbac.authorization.k8s.io/event-reader created clusterrolebinding.rbac.authorization.k8s.io/event-reader-binding created configmap/eventrouter created deployment.apps/eventrouter createdDe valider que le routeur d’événement installé dans le projet openshift-logging:
Consultez le nouveau module de routeur d’événements:
$ oc get pods --selector component=eventrouter -o name -n openshift-loggingExemple de sortie
pod/cluster-logging-eventrouter-d649f97c8-qvv8rConsultez les événements recueillis par le routeur de l’événement:
$ oc logs <cluster_logging_eventrouter_pod> -n openshift-loggingÀ titre d’exemple:
$ oc logs cluster-logging-eventrouter-d649f97c8-qvv8r -n openshift-loggingExemple 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"}}Il est également possible d’utiliser Kibana pour afficher les événements en créant un modèle d’index à l’aide de l’indice Elasticsearch infra.