第3章 クラスターロギングのデプロイ


クラスターロギングを OpenShift Container Platform にデプロイするプロセスには以下が関係します。

3.1. クラスターロギングおよび Elasticsearch Operator のインストール

OpenShift Container Platform コンソールを使用し、クラスターロギングおよび Elasticsearch Operator をデプロイしてクラスターロギングをインストールできます。Cluster Logging Operator はロギングスタックのコンポーネントを作成し、管理します。Elasticsearch Operator は、クラスターロギングによって使用される Elasticsearch クラスターを作成し、管理します。

注記

OpenShift Container Platform クラスターロギングソリューションでは、Cluster Logging Operator と Elasticsearch Operator の両方をインストールする必要があります。OpenShift Container Platform では、これらの Operator を個別にインストールするユースケースはありません。以下の指示に従って CLI を使い、Elasticsearch Operator のインストールを 実行する必要があります。Cluster Logging Operator は、Web コンソールまたは CLI のどちらを使用してもインストールできます。

前提条件

Elasticsearch の必要な永続ストレージがあることを確認します。各 Elasticsearch ノードには独自のストレージボリュームが必要であることに注意してください。

Elasticsearch はメモリー集約型アプリケーションです。それぞれの Elasticsearch ノードには、メモリー要求および制限の両方に 16G のメモリーが必要です。初期設定の OpenShift Container Platform ノードのセットは、Elasticsearch クラスターをサポートするのに十分な大きさではない場合があります。その場合、推奨されるサイズ以上のメモリーを使用して実行できるようにノードを OpenShift Container Platform クラスターに追加する必要があります。各 Elasticsearch ノードはこれより低い値のメモリー設定でも動作しますが、これは実稼働環境でのデプロイメントには推奨されません。

注記

以下の指示に従って CLI を使い、Elasticsearch Operator のインストールを 実行する必要があります。Cluster Logging Operator は、Web コンソールまたは CLI のどちらを使用してもインストールできます。

手順

  1. Elasticsearch Operator および Cluster Logging Operator の namespace を作成します。

    注記

    また、Web コンソールの Administration Namespaces ページを使用して namespace を作成することもできます。サンプル YAML に一覧表示されている cluster-logging および cluster-monitoring ラベルを作成する namespace に適用する必要があります。

    1. Elasticsearch Operator の namespace (eo-namespace.yaml など) を作成します。

      apiVersion: v1
      kind: Namespace
      metadata:
        name: openshift-operators-redhat 1
        annotations:
          openshift.io/node-selector: ""
        labels:
          openshift.io/cluster-monitoring: "true" 2
      1
      openshift-operators-redhat namespace を指定する必要があります。メトリクスとの競合が発生する可能性を防ぐには、Prometheus のクラスターモニタリングスタックを、openshift-operators namespace からではなく、openshift-operators-redhat namespace からメトリクスを収集するように設定する必要があります。openshift-operators namespace には信頼されていないコミュニティー Operator が含まれる可能性があり、OpenShift Container Platform メトリクスと同じ名前でメトリクスを公開する可能性があるため、これによって競合が生じる可能性があります。
      2
      クラスターモニタリングが openshift-operators-redhat namespace を収集できるように、このラベルを上記のように指定する必要があります。
    2. 以下のコマンドを実行して namespace を作成します。

      $ oc create -f <file-name>.yaml

      例:

      $ oc create -f eo-namespace.yaml
    3. Cluster Logging Operator の namespace (clo-namespace.yaml など) を作成します。

      apiVersion: v1
      kind: Namespace
      metadata:
        name: openshift-logging 1
        annotations:
          openshift.io/node-selector: "" 2
        labels:  3
          openshift.io/cluster-logging: "true"
          openshift.io/cluster-monitoring: "true"
      1 2 3
      これらのラベルを以下のように指定します。
    4. 以下のコマンドを実行して namespace を作成します。

      $ oc create -f <file-name>.yaml

      例:

      $ oc create -f clo-namespace.yaml
  2. 以下のオブジェクトを作成して Elasticsearch Operator をインストールします。

    1. Elasticsearch Operator の Operator グループオブジェクトの YAML ファイル (eo-og.yaml など) を作成します。

      apiVersion: operators.coreos.com/v1
      kind: OperatorGroup
      metadata:
        name: openshift-operators-redhat
        namespace: openshift-operators-redhat 1
      spec: {}
      1
      openshift-operators-redhat namespace を指定する必要があります。
    2. Operator グループオブジェクトを作成します。

      $ oc create -f eo-og.yaml
    3. クラスター上で Elasticsearch Operator を有効にするために、 CatalogSourceConfig オブジェクト YAML ファイル ( eo-csc.yaml など) を作成します。

      CatalogSourceConfig のサンプル

      apiVersion: "operators.coreos.com/v1"
      kind: "CatalogSourceConfig"
      metadata:
        name: "elasticsearch"
        namespace: "openshift-marketplace"
      spec:
        targetNamespace: "openshift-operators-redhat" 1
        packages: "elasticsearch-operator"
        source: "redhat-operators"

      1
      openshift-operators-redhat namespace を指定する必要があります。

      Operator は、targetNamespace に指定される namespace で CatalogSourceConfig から CatalogSource を生成します。

    4. CatalogSourceConfig オブジェクトを作成します。

      $ oc create -f eo-csc.yaml
    5. 以下のコマンドを使用して、次の手順に必要な channel の値を取得します。

      $ oc get packagemanifest elasticsearch-operator -n openshift-marketplace -o jsonpath='{.status.channels[].name}'
      
      preview
    6. Subscription オブジェクト YAML ファイル(eo-sub.yaml など) を作成し、namespace を Operator にサブスクライブします。

      サブスクリプションの例

      apiVersion: operators.coreos.com/v1alpha1
      kind: Subscription
      metadata:
        generateName: "elasticsearch-"
        namespace: "openshift-operators-redhat" 1
      spec:
        channel: "preview" 2
        installPlanApproval: "Automatic"
        source: "elasticsearch"
        sourceNamespace: "openshift-operators-redhat" 3
        name: "elasticsearch-operator"

      1 3
      namespace および sourceNameSpaceopenshift-operators-redhat namespace を指定する必要があります。
      2
      直前の手順の .status.channels[].name 値を指定します。
    7. Subscription オブジェクトを作成します。

      $ oc create -f eo-sub.yaml
    8. openshift-operators-redhat プロジェクトに切り替えます。

      $ oc project openshift-operators-redhat
      
      Now using project "openshift-operators-redhat"
    9. ロールベースアクセス制御 (RBAC) オブジェクトファイル (eo-rbac.yaml など) を使用して、openshift-operators-redhat namespace にアクセスするための Prometheus パーミッションを付与します。

      apiVersion: rbac.authorization.k8s.io/v1
      kind: Role
      metadata:
        name: prometheus-k8s
        namespace: openshift-operators-redhat
      rules:
      - apiGroups:
        - ""
        resources:
        - services
        - endpoints
        - pods
        verbs:
        - get
        - list
        - watch
      ---
      apiVersion: rbac.authorization.k8s.io/v1
      kind: RoleBinding
      metadata:
        name: prometheus-k8s
        namespace: openshift-operators-redhat
      roleRef:
        apiGroup: rbac.authorization.k8s.io
        kind: Role
        name: prometheus-k8s
      subjects:
      - kind: ServiceAccount
        name: prometheus-k8s
        namespace: openshift-operators-redhat
    10. RBAC オブジェクトを作成します。

      $ oc create -f eo-rbac.yaml

      Elasticsearch Operator はクラスター内の各プロジェクトにインストールされます。

  3. OpenShift Container Platform Web コンソールを使って Cluster Logging Operator をインストールすると、最善の結果が得られます。

    1. OpenShift Container Platform Web コンソールで、Catalog OperatorHub をクリックします。
    2. 利用可能な Operator の一覧から Cluster Logging を選択し、Install をクリックします。
    3. Create Operator Subscription ページの A specific namespace on the cluster の下で openshift-logging を選択します。次に、Subscribe をクリックします。
  4. Operator のインストールを確認します。

    1. Catalog Installed Operators ページに切り替えます。
    2. Cluster LoggingStatusInstallSucceeded の状態で openshift-logging プロジェクトに一覧表示されていることを確認します。
    3. Elasticsearch OperatorStatusInstallSucceeded の状態で openshift-operator-redhat プロジェクトに一覧表示されていることを確認します。Elasticsearch Operator は他のすべてのプロジェクトにコピーされます。

      注記

      インストール時に、Operator は Failed ステータスを表示する可能性があります。その後に Operator が InstallSucceeded メッセージと共にインストールされる場合、Failed メッセージを安全に無視することができます。

      いずれかの Operator がインストール済みとして表示されない場合に、さらにトラブルシューティングを行うには、以下を実行します。

      • Catalog Operator Management ページに切り替え、Operator Subscriptions および Install Plans タブで Status の下の失敗またはエラーの有無を確認します。
      • Workloads Pods ページに切り替え、openshift-logging および openshift-operators-redhat プロジェクトの Pod で問題を報告しているログの有無を確認します。
  5. クラスターロギングのインスタンスを作成します。

    1. Administration Custom Resource Definitions ページに切り替えます。
    2. Custom Resource Definitions ページで、ClusterLogging をクリックします。
    3. Custom Resource Definition Overview ページで、Actions メニューから View Instances を選択します。
    4. Cluster Loggings ページで、Create Cluster Logging をクリックします。

      データを読み込むためにページを更新する必要がある場合があります。

    5. YAML で、コードを以下に置き換えます。

      注記

      このデフォルトのクラスターロギング設定は各種の環境をサポートすることが予想されます。クラスターロギングのクラスターに加えることのできる変更についての詳細は、クラスターロギングコンポーネントのチューニングおよび設定についてのトピックを確認してください。

      apiVersion: "logging.openshift.io/v1"
      kind: "ClusterLogging"
      metadata:
        name: "instance" 1
        namespace: "openshift-logging"
      spec:
        managementState: "Managed"  2
        logStore:
          type: "elasticsearch"  3
          elasticsearch:
            nodeCount: 3 4
            storage:
              storageClassName: gp2 5
              size: 200G
            redundancyPolicy: "SingleRedundancy"
        visualization:
          type: "kibana"  6
          kibana:
            replicas: 1
        curation:
          type: "curator"  7
          curator:
            schedule: "30 3 * * *"
        collection:
          logs:
            type: "fluentd"  8
            fluentd: {}
      1
      CR の名前。これは instance でなければなりません。
      2
      クラスターロギングの管理状態。ほとんどの場合、デフォルトクラスターロギングのデフォルト値を変更する場合は、これを Unmanaged (管理外) に設定する必要があります。ただし、管理外のデプロイメントはクラスターロギングが管理対象の状態に戻されるまで更新を受信しません。詳細は「クラスターロギングの管理状態の変更」を参照してください。
      3
      Elasticsearch の設定に必要な設定。CR を使用してシャードのレプリケーションポリシーおよび永続ストレージを設定できます。詳細は「Elasticsearch の設定」を参照してください。
      4
      Elasticsearch ノードの数を指定します。この一覧に続く注記を確認してください。
      5
      クラスターの各 Elasticsearch ノードが Persistent Volume Claim(永続ボリューム要求、PVC)にバインドされるように指定します。
      6
      Kibana の設定に必要な設定。CR を使用して、冗長性を確保するために Kibana をスケーリングし、Kibana ノードの CPU およびメモリーを設定できます。詳細は「Kibana の設定」を参照してください。
      7
      Curator の設定に必要な設定。CR を使用して Curator スケジュールを設定できます。詳細は「Curator の設定」を参照してください。
      8
      Fluentd の設定に必要な設定。CR を使用して Fluentd の CPU およびメモリー制限を設定できます。詳細は「Fluentd の設定」を参照してください。
      注記

      Elasticsearch マスターノードの最大数は 3 です。3 を超える nodeCount を指定する場合、OpenShift Container Platform は、マスター、クライアントおよびデータロールを使用して、3 つのマスターとしての適格性のあるノードである Elasticsearch ノードを作成します。追加の Elasticsearch ノードは、クライアントおよびデータロールを使用してデータのみのノードとして作成されます。マスターノードは、インデックスの作成および削除、シャードの割り当て、およびノードの追跡などのクラスター全体でのアクションを実行します。データノードはシャードを保持し、CRUD、検索、および集計などのデータ関連の操作を実行します。データ関連の操作は、I/O、メモリーおよび CPU 集約型の操作です。これらのリソースを監視し、現行ノードがオーバーロードする場合にデータノード追加することが重要です。

      たとえば、nodeCount=4 の場合に、以下のノードが作成されます。

      $ oc get deployment
      
      cluster-logging-operator       1/1     1            1           18h
      elasticsearch-cd-x6kdekli-1    0/1     1            0           6m54s
      elasticsearch-cdm-x6kdekli-1   1/1     1            1           18h
      elasticsearch-cdm-x6kdekli-2   0/1     1            0           6m49s
      elasticsearch-cdm-x6kdekli-3   0/1     1            0           6m44s
    6. Create をクリックします。これにより、クラスターロギングのカスタムリソースおよび Elasticsearch のカスタムリソースが作成されます。これらを編集すると、クラスターロギングのクラスターに変更を加えることができます。
  6. インストールを確認します。

    1. Workloads Pods ページに切り替えます。
    2. openshift-logging プロジェクトを選択します。

      以下の一覧のようなクラスターロギング、Elasticsearch、Fluentd、および Kibana のいくつかの Pod が表示されるはずです。

      • cluster-logging-operator-cb795f8dc-xkckc
      • elasticsearch-cdm-b3nqzchd-1-5c6797-67kfz
      • elasticsearch-cdm-b3nqzchd-2-6657f4-wtprv
      • elasticsearch-cdm-b3nqzchd-3-588c65-clg7g
      • fluentd-2c7dg
      • fluentd-9z7kk
      • fluentd-br7r2
      • fluentd-fn2sb
      • fluentd-pb2f8
      • fluentd-zqgqx
      • kibana-7fb4fd4cc9-bvt4p
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.