This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.第9章 Kubernetes イベントの収集および保存
OpenShift Container Platform イベントルーターは、Kubernetes イベントを監視し、それらをロギングシステムによって収集できるようにログに記録する pod です。イベントルーターは手動でデプロイする必要があります。
イベントルーターはすべてのプロジェクトからイベントを収集し、それらを STDOUT
に書き込みます。次に、コレクターはそれらのイベントを ClusterLogForwarder
カスタムリソース (CR) で定義されたストアに転送します。
イベントルーターは追加の負荷を Fluentd に追加し、処理できる他のログメッセージの数に影響を与える可能性があります。
9.1. イベントルーターのデプロイおよび設定
以下の手順を使用してイベントルーターをクラスターにデプロイします。イベントルーターを openshift-logging
プロジェクトに常にデプロイし、クラスター全体でイベントが収集されるようにする必要があります。
以下のテンプレートオブジェクトは、イベントルーターに必要なサービスアカウント、クラスターロールおよびクラスターロールバインディングを作成します。テンプレートはイベントルーター Pod も設定し、デプロイします。このテンプレートは変更せずに使用するか、デプロイメントオブジェクトの CPU およびメモリー要求を変更することができます。
前提条件
- サービスアカウントを作成し、クラスターロールバインディングを更新するには、適切なパーミッションが必要です。たとえば、以下のテンプレートを、cluster-admin ロールを持つユーザーで実行できます。
- Red Hat OpenShift のロギングサブシステムをインストールする必要があります。
手順
イベントルーターのテンプレートを作成します。
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 apiVersion: v1 metadata: name: eventrouter namespace: ${NAMESPACE} - kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: name: event-reader rules: - apiGroups: [""] resources: ["events"] verbs: ["get", "watch", "list"] - kind: ClusterRoleBinding 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 apiVersion: v1 metadata: name: eventrouter namespace: ${NAMESPACE} data: config.json: |- { "sink": "stdout" } - kind: Deployment 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 displayName: Image value: "registry.redhat.io/openshift-logging/eventrouter-rhel8:v0.4" - name: CPU displayName: CPU value: "100m" - name: MEMORY displayName: Memory value: "128Mi" - name: NAMESPACE displayName: Namespace value: "openshift-logging"
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 Copy to Clipboard Copied! - 1
- イベントルーターの
openshift-logging
プロジェクトでサービスアカウントを作成します。 - 2
- ClusterRole を作成し、クラスター内のイベントを監視します。
- 3
- ClusterRoleBinding を作成し、ClusterRole をサービスアカウントにバインドします。
- 4
openshift-logging
プロジェクトで設定マップを作成し、必要なconfig.json
ファイルを生成します。- 5
openshift-logging
プロジェクトでデプロイメントを作成し、イベントルーター Pod を生成し、設定します。- 6
v0.4
などのタグで識別されるイメージを指定します。- 7
- イベントルーター Pod に割り当てる CPU の最小量を指定します。デフォルトは
100m
に設定されます。 - 8
- イベントルーター Pod に割り当てるメモリーの最小量を指定します。デフォルトは
128Mi
に設定されます。 - 9
- オブジェクトをインストールする
openshift-logging
プロジェクトを指定します。
以下のコマンドを使用してテンプレートを処理し、これを適用します。
oc process -f <templatefile> | oc apply -n openshift-logging -f -
$ oc process -f <templatefile> | oc apply -n openshift-logging -f -
Copy to Clipboard Copied! 以下に例を示します。
oc process -f eventrouter.yaml | oc apply -n openshift-logging -f -
$ oc process -f eventrouter.yaml | oc apply -n openshift-logging -f -
Copy to Clipboard Copied! 出力例
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
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
Copy to Clipboard Copied! イベントルーターが
openshift-logging
プロジェクトにインストールされていることを確認します。新規イベントルーター Pod を表示します。
oc get pods --selector component=eventrouter -o name -n openshift-logging
$ oc get pods --selector component=eventrouter -o name -n openshift-logging
Copy to Clipboard Copied! 出力例
pod/cluster-logging-eventrouter-d649f97c8-qvv8r
pod/cluster-logging-eventrouter-d649f97c8-qvv8r
Copy to Clipboard Copied! イベントルーターによって収集されるイベントを表示します。
oc logs <cluster_logging_eventrouter_pod> -n openshift-logging
$ oc logs <cluster_logging_eventrouter_pod> -n openshift-logging
Copy to Clipboard Copied! 以下に例を示します。
oc logs cluster-logging-eventrouter-d649f97c8-qvv8r -n openshift-logging
$ oc logs cluster-logging-eventrouter-d649f97c8-qvv8r -n openshift-logging
Copy to Clipboard Copied! 出力例
{"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"}}
{"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"}}
Copy to Clipboard Copied! また、Elasticsearch
infra
インデックスを使用してインデックスパターンを作成し、Kibana を使用してイベントを表示することもできます。