5.2. Installation de l’enregistrement avec Elasticsearch à l’aide du CLI
Elasticsearch est une application à forte intensité de mémoire. Par défaut, OpenShift Dedicated installe trois nœuds Elasticsearch avec des requêtes de mémoire et des limites de 16 Go. Cet ensemble initial de trois nœuds dédiés OpenShift pourrait ne pas avoir assez de mémoire pour exécuter Elasticsearch dans votre cluster. Lorsque vous rencontrez des problèmes de mémoire liés à Elasticsearch, ajoutez plus de nœuds Elasticsearch à votre cluster plutôt que d’augmenter la mémoire sur les nœuds existants.
Conditions préalables
Assurez-vous que vous avez le stockage persistant nécessaire pour Elasticsearch. A noter que chaque nœud Elasticsearch nécessite son propre volume de stockage.
NoteLorsque vous utilisez un volume local pour le stockage persistant, n’utilisez pas de volume de bloc brut, qui est décrit avec volumeMode: bloc dans l’objet LocalVolume. Elasticsearch ne peut pas utiliser les volumes de blocs bruts.
Procédure
Créer un objet Namespace pour l’opérateur OpenShift Elasticsearch:
Exemple d’objet Namespace
apiVersion: v1 kind: Namespace metadata: name: openshift-operators-redhat1 annotations: openshift.io/node-selector: "" labels: openshift.io/cluster-monitoring: "true"2 - 1
- Il faut spécifier l’espace de noms openshift-operators-redhat. L’espace de noms openshift-operators peut contenir des opérateurs communautaires, qui ne sont pas fiables et pourraient publier une métrique avec le même nom qu’une métrique dédiée OpenShift, ce qui provoquerait des conflits.
- 2
- La valeur de chaîne qui spécifie l’étiquette comme indiqué pour s’assurer que la surveillance du cluster gratte l’espace de noms openshift-operators-redhat.
Appliquez l’objet Namespace en exécutant la commande suivante:
$ oc apply -f <filename>.yamlCréer un objet Namespace pour l’opérateur de journalisation OpenShift Red Hat:
Exemple d’objet Namespace
apiVersion: v1 kind: Namespace metadata: name: openshift-logging1 annotations: openshift.io/node-selector: "" labels: openshift.io/cluster-monitoring: "true"- 1
- Il faut spécifier openshift-logging comme espace de noms pour la journalisation des versions 5.7 et antérieures. Dans l’enregistrement 5.8 et plus tard, vous pouvez utiliser n’importe quel espace de noms.
Appliquez l’objet Namespace en exécutant la commande suivante:
$ oc apply -f <filename>.yamlCréer un objet OperatorGroup pour l’opérateur OpenShift Elasticsearch:
Exemple d’objet OperatorGroup
apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: openshift-operators-redhat namespace: openshift-operators-redhat1 spec: {}- 1
- Il faut spécifier l’espace de noms openshift-operators-redhat.
Appliquez l’objet OperatorGroup en exécutant la commande suivante:
$ oc apply -f <filename>.yamlCréer un objet d’abonnement pour abonner un espace de noms à l’opérateur OpenShift Elasticsearch:
NoteLe canal stable ne fournit que des mises à jour de la version la plus récente de l’enregistrement. Afin de continuer à recevoir des mises à jour pour les versions antérieures, vous devez changer votre canal d’abonnement en stable-x.y, où x.y représente la version majeure et mineure de la journalisation que vous avez installée. À titre d’exemple, stable-5.7.
Exemple d’objet d’abonnement
apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: elasticsearch-operator namespace: openshift-operators-redhat1 spec: channel: <channel>2 installPlanApproval: Automatic3 source: redhat-operators4 sourceNamespace: openshift-marketplace name: elasticsearch-operator- 1
- Il faut spécifier l’espace de noms openshift-operators-redhat.
- 2
- Indiquez stable, ou stable-<x.y> comme canal.
- 3
- Automatique permet au gestionnaire de cycle de vie de l’opérateur (OLM) de mettre à jour automatiquement l’opérateur lorsqu’une nouvelle version est disponible. Le manuel exige qu’un utilisateur avec les informations d’identification appropriées approuve la mise à jour de l’opérateur.
- 4
- Indiquez les redhat-operators. Lorsque votre cluster dédié OpenShift est installé sur un réseau restreint, également appelé cluster déconnecté, spécifiez le nom de l’objet CatalogSource que vous avez créé lorsque vous avez configuré le gestionnaire de cycle de vie de l’opérateur (OLM)
Appliquer l’abonnement en exécutant la commande suivante:
$ oc apply -f <filename>.yamlContrôlez l’installation de l’opérateur en exécutant la commande suivante:
$ oc get csv --all-namespacesExemple de sortie
NAMESPACE NAME DISPLAY VERSION REPLACES PHASE default elasticsearch-operator.v5.8.3 OpenShift Elasticsearch Operator 5.8.3 elasticsearch-operator.v5.8.2 Succeeded kube-node-lease elasticsearch-operator.v5.8.3 OpenShift Elasticsearch Operator 5.8.3 elasticsearch-operator.v5.8.2 Succeeded kube-public elasticsearch-operator.v5.8.3 OpenShift Elasticsearch Operator 5.8.3 elasticsearch-operator.v5.8.2 Succeeded kube-system elasticsearch-operator.v5.8.3 OpenShift Elasticsearch Operator 5.8.3 elasticsearch-operator.v5.8.2 Succeeded openshift-apiserver-operator elasticsearch-operator.v5.8.3 OpenShift Elasticsearch Operator 5.8.3 elasticsearch-operator.v5.8.2 Succeeded openshift-apiserver elasticsearch-operator.v5.8.3 OpenShift Elasticsearch Operator 5.8.3 elasticsearch-operator.v5.8.2 Succeeded openshift-authentication-operator elasticsearch-operator.v5.8.3 OpenShift Elasticsearch Operator 5.8.3 elasticsearch-operator.v5.8.2 Succeeded openshift-authentication elasticsearch-operator.v5.8.3 OpenShift Elasticsearch Operator 5.8.3 elasticsearch-operator.v5.8.2 Succeeded openshift-cloud-controller-manager-operator elasticsearch-operator.v5.8.3 OpenShift Elasticsearch Operator 5.8.3 elasticsearch-operator.v5.8.2 Succeeded openshift-cloud-controller-manager elasticsearch-operator.v5.8.3 OpenShift Elasticsearch Operator 5.8.3 elasticsearch-operator.v5.8.2 Succeeded openshift-cloud-credential-operator elasticsearch-operator.v5.8.3 OpenShift Elasticsearch Operator 5.8.3 elasticsearch-operator.v5.8.2 SucceededCréer un objet OperatorGroup pour l’opérateur de journalisation Red Hat OpenShift:
Exemple d’objet OperatorGroup
apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: cluster-logging namespace: openshift-logging1 spec: targetNamespaces: - openshift-logging2 - 1
- Il faut spécifier openshift-logging comme espace de noms pour la journalisation des versions 5.7 et antérieures. Dans l’enregistrement 5.8 et plus tard, vous pouvez utiliser n’importe quel espace de noms.
- 2
- Il faut spécifier openshift-logging comme espace de noms pour la journalisation des versions 5.7 et antérieures. Dans l’enregistrement 5.8 et plus tard, vous pouvez utiliser n’importe quel espace de noms.
Appliquez l’objet OperatorGroup en exécutant la commande suivante:
$ oc apply -f <filename>.yamlCréez un objet d’abonnement pour souscrire l’espace de noms à l’opérateur de journalisation Red Hat OpenShift:
Exemple d’objet d’abonnement
apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: cluster-logging namespace: openshift-logging1 spec: channel: stable2 name: cluster-logging source: redhat-operators3 sourceNamespace: openshift-marketplace- 1
- Il faut spécifier l’espace de noms openshift-logging pour la journalisation des versions 5.7 et antérieures. Lors de l’enregistrement des versions 5.8 et ultérieures, vous pouvez utiliser n’importe quel espace de noms.
- 2
- Indiquez stable ou stable-x.y comme canal.
- 3
- Indiquez les redhat-operators. Lorsque votre cluster dédié OpenShift est installé sur un réseau restreint, également appelé cluster déconnecté, spécifiez le nom de l’objet CatalogSource que vous avez créé lorsque vous avez configuré le gestionnaire de cycle de vie de l’opérateur (OLM).
Appliquez l’objet d’abonnement en exécutant la commande suivante:
$ oc apply -f <filename>.yamlCréer un objet ClusterLogging en tant que fichier YAML:
Exemple ClusterLogging objet
apiVersion: logging.openshift.io/v1 kind: ClusterLogging metadata: name: instance1 namespace: openshift-logging spec: managementState: Managed2 logStore: type: elasticsearch3 retentionPolicy:4 application: maxAge: 1d infra: maxAge: 7d audit: maxAge: 7d elasticsearch: nodeCount: 35 storage: storageClassName: <storage_class_name>6 size: 200G resources:7 limits: memory: 16Gi requests: memory: 16Gi proxy:8 resources: limits: memory: 256Mi requests: memory: 256Mi redundancyPolicy: SingleRedundancy visualization: type: kibana9 kibana: replicas: 1 collection: type: fluentd10 fluentd: {}- 1
- Le nom doit être instance.
- 2
- L’état de gestion OpenShift Logging. Dans certains cas, si vous modifiez les valeurs par défaut OpenShift Logging, vous devez définir ceci sur Ungaged. Cependant, un déploiement non géré ne reçoit pas de mises à jour tant qu’OpenShift Logging n’est pas placé dans un état géré.
- 3
- Configuration d’Elasticsearch. En utilisant le CR, vous pouvez configurer la stratégie de réplication shard et le stockage persistant.
- 4
- Indiquez la durée pendant laquelle Elasticsearch doit conserver chaque source de journal. Entrez un entier et une désignation de temps: semaines (w), heures (h/H), minutes(m) et secondes(s). À titre d’exemple, 7d pendant sept jours. Les journaux plus anciens que le maxAge sont supprimés. Il faut spécifier une stratégie de rétention pour chaque source de journal ou les indices Elasticsearch ne seront pas créés pour cette source.
- 5
- Indiquez le nombre de nœuds Elasticsearch.
- 6
- Entrez le nom d’une classe de stockage existante pour le stockage Elasticsearch. Afin d’obtenir des performances optimales, spécifiez une classe de stockage qui alloue le stockage en bloc. Dans le cas où vous ne spécifiez pas une classe de stockage, OpenShift Logging utilise le stockage éphémère.
- 7
- Indiquez les requêtes CPU et mémoire pour Elasticsearch au besoin. Lorsque vous laissez ces valeurs vides, l’opérateur OpenShift Elasticsearch définit des valeurs par défaut qui devraient être suffisantes pour la plupart des déploiements. Les valeurs par défaut sont 16Gi pour la requête mémoire et 1 pour la requête CPU.
- 8
- Indiquez les requêtes CPU et mémoire pour le proxy Elasticsearch au besoin. Lorsque vous laissez ces valeurs vides, l’opérateur OpenShift Elasticsearch définit des valeurs par défaut qui devraient être suffisantes pour la plupart des déploiements. Les valeurs par défaut sont 256Mi pour la requête mémoire et 100m pour la requête CPU.
- 9
- Configuration de Kibana. En utilisant le CR, vous pouvez mettre à l’échelle Kibana pour la redondance et configurer le CPU et la mémoire pour vos nœuds Kibana.
- 10
- Configuration de Fluentd. En utilisant le CR, vous pouvez configurer le CPU Fluentd et les limites de mémoire.
NoteLe nombre maximum de nœuds maîtres est de trois. Lorsque vous spécifiez un nodeCount supérieur à 3, OpenShift Dedicated crée trois nœuds Elasticsearch qui sont des nœuds éligibles à la maîtrise, avec les rôles de maître, de client et de données. Les nœuds Elasticsearch supplémentaires sont créés en tant que nœuds de données uniquement, en utilisant des rôles de client et de données. Les nœuds maîtres effectuent des actions à l’échelle du cluster, telles que la création ou la suppression d’un index, l’allocation de fragments et le suivi des nœuds. Les nœuds de données conservent les fragments et effectuent des opérations liées aux données telles que CRUD, recherche et agrégations. Les opérations liées aux données sont intensives en E/S, en mémoire et en CPU. Il est important de surveiller ces ressources et d’ajouter d’autres nœuds de données si les nœuds actuels sont surchargés.
Ainsi, si nodeCount=4, les nœuds suivants sont créés:
$ oc get deploymentExemple de sortie
cluster-logging-operator-66f77ffccb-ppzbg 1/1 Running 0 7m elasticsearch-cdm-ftuhduuw-1-ffc4b9566-q6bhp 2/2 Running 0 2m40s elasticsearch-cdm-ftuhduuw-2-7b4994dbfc-rd2gc 2/2 Running 0 2m36s elasticsearch-cdm-ftuhduuw-3-84b5ff7ff8-gqnm2 2/2 Running 0 2m4sAppliquez le ClusterLogging CR en exécutant la commande suivante:
$ oc apply -f <filename>.yamlContrôlez l’installation en exécutant la commande suivante:
$ oc get pods -n openshift-loggingExemple de sortie
NAME READY STATUS RESTARTS AGE cluster-logging-operator-66f77ffccb-ppzbg 1/1 Running 0 7m elasticsearch-cdm-ftuhduuw-1-ffc4b9566-q6bhp 2/2 Running 0 2m40s elasticsearch-cdm-ftuhduuw-2-7b4994dbfc-rd2gc 2/2 Running 0 2m36s elasticsearch-cdm-ftuhduuw-3-84b5ff7ff8-gqnm2 2/2 Running 0 2m4s collector-587vb 1/1 Running 0 2m26s collector-7mpb9 1/1 Running 0 2m30s collector-flm6j 1/1 Running 0 2m33s collector-gn4rn 1/1 Running 0 2m26s collector-nlgb6 1/1 Running 0 2m30s collector-snpkt 1/1 Running 0 2m28s kibana-d6d5668c5-rppqm 2/2 Running 0 2m39s
Lorsqu’il n’y a pas de période de conservation définie sur le seau s3 ou dans la ressource personnalisée LokiStack (CR), les journaux ne sont pas taillés et ils restent dans le s3 pour toujours, ce qui pourrait remplir le stockage s3.