第3章 クラスターロギングのデプロイ
クラスターロギングを OpenShift Container Platform にデプロイするプロセスには以下が関係します。
- 「クラスターロギングのデプロイについて」でインストールオプションを確認します。
- クラスターロギングストレージについての考慮事項を確認します。
- Web コンソールを使用してクラスターロギングのサブスクリプションをインストールします。
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 のどちらを使用してもインストールできます。
手順
Elasticsearch Operator および Cluster Logging Operator の namespace を作成します。
注記また、Web コンソールの Administration
Namespaces ページを使用して namespace を作成することもできます。サンプル YAML に一覧表示されている cluster-logging
およびcluster-monitoring
ラベルを作成する namespace に適用する必要があります。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 を収集できるように、このラベルを上記のように指定する必要があります。
以下のコマンドを実行して namespace を作成します。
$ oc create -f <file-name>.yaml
例:
$ oc create -f eo-namespace.yaml
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"
以下のコマンドを実行して namespace を作成します。
$ oc create -f <file-name>.yaml
例:
$ oc create -f clo-namespace.yaml
以下のオブジェクトを作成して Elasticsearch Operator をインストールします。
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 を指定する必要があります。
Operator グループオブジェクトを作成します。
$ oc create -f eo-og.yaml
クラスター上で 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 を生成します。CatalogSourceConfig オブジェクトを作成します。
$ oc create -f eo-csc.yaml
以下のコマンドを使用して、次の手順に必要な
channel
の値を取得します。$ oc get packagemanifest elasticsearch-operator -n openshift-marketplace -o jsonpath='{.status.channels[].name}' preview
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"
Subscription オブジェクトを作成します。
$ oc create -f eo-sub.yaml
openshift-operators-redhat
プロジェクトに切り替えます。$ oc project openshift-operators-redhat Now using project "openshift-operators-redhat"
ロールベースアクセス制御 (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
RBAC オブジェクトを作成します。
$ oc create -f eo-rbac.yaml
Elasticsearch Operator はクラスター内の各プロジェクトにインストールされます。
OpenShift Container Platform Web コンソールを使って Cluster Logging Operator をインストールすると、最善の結果が得られます。
-
OpenShift Container Platform Web コンソールで、Catalog
OperatorHub をクリックします。 - 利用可能な Operator の一覧から Cluster Logging を選択し、Install をクリックします。
- Create Operator Subscription ページの A specific namespace on the cluster の下で openshift-logging を選択します。次に、Subscribe をクリックします。
-
OpenShift Container Platform Web コンソールで、Catalog
Operator のインストールを確認します。
-
Catalog
Installed Operators ページに切り替えます。 - Cluster Logging が Status が InstallSucceeded の状態で openshift-logging プロジェクトに一覧表示されていることを確認します。
Elasticsearch Operator が Status が InstallSucceeded の状態で 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 で問題を報告しているログの有無を確認します。
-
Catalog
-
Catalog
クラスターロギングのインスタンスを作成します。
-
Administration
Custom Resource Definitions ページに切り替えます。 - Custom Resource Definitions ページで、ClusterLogging をクリックします。
- Custom Resource Definition Overview ページで、Actions メニューから View Instances を選択します。
Cluster Loggings ページで、Create Cluster Logging をクリックします。
データを読み込むためにページを更新する必要がある場合があります。
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
- Create をクリックします。これにより、クラスターロギングのカスタムリソースおよび Elasticsearch のカスタムリソースが作成されます。これらを編集すると、クラスターロギングのクラスターに変更を加えることができます。
-
Administration
インストールを確認します。
-
Workloads
Pods ページに切り替えます。 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
-
Workloads