OpenShift Cluster Logging が要求しているリソース量を調べる
はじめに
個人的な実験メモで、他の方が読む事を想定してはおらず、読みやすいものではないのでご了承頂ければ幸いです。
環境確認
記録用に環境の情報を取得する。
各 Node の情報 (OpenShift 4.8.26)
[root@bastion openshift]# oc version
Client Version: 4.8.26
Server Version: 4.8.26
Kubernetes Version: v1.21.6+bb8d50a
[root@bastion openshift]#
[root@bastion openshift]# oc get nodes
NAME STATUS ROLES AGE VERSION
ocp48-6vldl-infra-94vjm Ready infra,worker 11d v1.21.6+bb8d50a
ocp48-6vldl-infra-gjgwb Ready infra,worker 11d v1.21.6+bb8d50a
ocp48-6vldl-infra-ocs-dbjbd Ready infra,worker 4d12h v1.21.6+bb8d50a
ocp48-6vldl-infra-ocs-rdt8b Ready infra,worker 4d12h v1.21.6+bb8d50a
ocp48-6vldl-infra-ocs-xdhvn Ready infra,worker 4d12h v1.21.6+bb8d50a
ocp48-6vldl-infra-qvwvk Ready infra,worker 11d v1.21.6+bb8d50a
ocp48-6vldl-master-0 Ready master 16d v1.21.6+bb8d50a
ocp48-6vldl-master-1 Ready master 16d v1.21.6+bb8d50a
ocp48-6vldl-master-2 Ready master 16d v1.21.6+bb8d50a
ocp48-6vldl-worker-85crs Ready worker 16d v1.21.6+bb8d50a
ocp48-6vldl-worker-hdj9r Ready worker 16d v1.21.6+bb8d50a
ocp48-6vldl-worker-xp4bf Ready worker 16d v1.21.6+bb8d50a
[root@bastion openshift]#
- Master Node x 3
- Worker Node x 3
- Infra Node x 6
合計 12本の Node で構成されたクラスター。環境は VMware。
OpenShift Cluster Logging の バージョンの確認
2種類の Operator の組み合わせとして提供される。それぞれバージョンが付けられている。
[root@bastion openshift]# oc get csv
NAME DISPLAY VERSION REPLACES PHASE
cluster-logging.5.3.5-20 Red Hat OpenShift Logging 5.3.5-20 Succeeded
elasticsearch-operator.5.3.5-20 OpenShift Elasticsearch Operator 5.3.5-20 Succeeded
[root@bastion openshift]#
OpenShift Logging
の Opearator のバージョンは、5.3.5-20
Cluster Logging
Operator と、Elastic Search
Operator で構成される。
これらは通常、OpenShift コンソールの Operator Hub
から導入する。(コマンドラインからも導入できるはず)
openshift-logging namespace の Pod のデプロイ状況
nodeSelector
と taint
等を使って infra ノードに配置
[root@bastion openshift]# oc get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
cluster-logging-operator-6df7db84bb-rg868 1/1 Running 0 11d 10.128.4.25 ocp48-6vldl-infra-gjgwb <none> <none>
collector-5jzxh 2/2 Running 0 47h 10.130.4.67 ocp48-6vldl-infra-ocs-xdhvn <none> <none>
collector-7bf6t 2/2 Running 0 47h 10.130.0.45 ocp48-6vldl-master-0 <none> <none>
collector-7kmfv 2/2 Running 0 47h 10.129.2.9 ocp48-6vldl-worker-85crs <none> <none>
collector-9njjr 2/2 Running 0 47h 10.129.4.12 ocp48-6vldl-infra-ocs-rdt8b <none> <none>
collector-9z77f 2/2 Running 0 47h 10.131.2.10 ocp48-6vldl-infra-94vjm <none> <none>
collector-b7hjd 2/2 Running 0 47h 10.128.2.10 ocp48-6vldl-worker-hdj9r <none> <none>
collector-cctmt 2/2 Running 0 47h 10.131.4.67 ocp48-6vldl-infra-ocs-dbjbd <none> <none>
collector-j7pb9 2/2 Running 0 47h 10.131.0.8 ocp48-6vldl-worker-xp4bf <none> <none>
collector-mz9ql 2/2 Running 0 47h 10.130.2.10 ocp48-6vldl-infra-qvwvk <none> <none>
collector-pd4g4 2/2 Running 0 47h 10.128.4.132 ocp48-6vldl-infra-gjgwb <none> <none>
collector-srbdx 2/2 Running 0 47h 10.129.0.47 ocp48-6vldl-master-2 <none> <none>
collector-wl6ng 2/2 Running 0 47h 10.128.0.46 ocp48-6vldl-master-1 <none> <none>
elasticsearch-cdm-gjm8weln-1-7fc97cc94-b7qr6 2/2 Running 0 19h 10.131.4.8 ocp48-6vldl-infra-ocs-dbjbd <none> <none>
elasticsearch-cdm-gjm8weln-2-75787bdc7f-thh2f 2/2 Running 0 19h 10.129.4.11 ocp48-6vldl-infra-ocs-rdt8b <none> <none>
elasticsearch-cdm-gjm8weln-3-6478496ddd-tp78x 2/2 Running 0 19h 10.130.4.8 ocp48-6vldl-infra-ocs-xdhvn <none> <none>
elasticsearch-im-app-27476700-lk5s4 0/1 Completed 0 3m34s 10.128.4.209 ocp48-6vldl-infra-gjgwb <none> <none>
elasticsearch-im-audit-27476700-qnbzd 0/1 Completed 0 3m34s 10.128.4.208 ocp48-6vldl-infra-gjgwb <none> <none>
elasticsearch-im-infra-27476700-hckww 0/1 Completed 0 3m34s 10.128.4.210 ocp48-6vldl-infra-gjgwb <none> <none>
kibana-6f894f5bc4-7zkc4 2/2 Running 0 19h 10.128.4.92 ocp48-6vldl-infra-gjgwb <none> <none>
[root@bastion openshift]#
環境認識
- 各 Node毎に
collector
が Deploy されている。Master 含めた Node が12本あるので合計 12 の collector -
elasticsearch-cdm-xxxx
のPod
は、デフォルト設定を使ったので、冗長化のため 3つデプロイされている。 -
kibana
のPod
もデフォルト設定をそのまま使ったので 1つデプロイされている。 -
cluster-logging-operator-xxxx
は、1つだけ depoy されている。 -
elasticsearch-im-app/audit/infra-xxx
は、ジョブぽい (後で調べる)
ClusterLogging 設定用の Custom Resource
Cluster Logging Operator を Deploy した後、実際の Pod 群を生成するために ClusterLogging
という CRD の Customer Resource を作成する必要がある。デフォルトで instance
という名前がセットされたテンプレートが用意されているのでそれを改造する。
replica 数などはデフォルトを使用。nodeSelector
や toleration
は infrastructure Node
に配置するために追加。
ClusterLogging 設定用の Custom Resource
[root@bastion openshift]# oc get ClusterLogging instance -o yaml
apiVersion: logging.openshift.io/v1
kind: ClusterLogging
metadata:
creationTimestamp: "2022-03-28T01:09:18Z"
generation: 3
name: instance
namespace: openshift-logging
resourceVersion: "11292909"
uid: a7735abe-3541-4b70-bf88-5bda1f8dfab7
spec:
collection:
logs:
fluentd: {}
type: fluentd
logStore:
elasticsearch:
nodeCount: 3
nodeSelector:
node-role.kubernetes.io/infra: ""
redundancyPolicy: SingleRedundancy
storage:
size: 200G
storageClassName: thin
tolerations:
- effect: NoSchedule
key: infra
value: reserved
- effect: NoExecute
key: infra
value: reserved
retentionPolicy:
application:
maxAge: 7d
type: elasticsearch
managementState: Managed
visualization:
kibana:
nodeSelector:
node-role.kubernetes.io/infra: ""
replicas: 1
tolerations:
- effect: NoSchedule
key: infra
value: reserved
- effect: NoExecute
key: infra
value: reserved
type: kibana
status:
<略>
[root@bastion openshift]#
主要 Pod の Request / Limit 調査
Pod 毎に egrep で、Requests/Limits 周辺の値を抜いていく
[root@bastion openshift]# oc describe pod cluster-logging-operator-6df7db84bb-rg868 | egrep 'Limits|Requests' -A3
[root@bastion openshift]#
[root@bastion openshift]# oc describe pod elasticsearch-cdm-gjm8weln-1-7fc97cc94-b7qr6 | egrep 'Limits|Requests' -A3
Limits:
memory: 16Gi
Requests:
cpu: 1
memory: 16Gi
Readiness: exec [/usr/share/elasticsearch/probe/readiness.sh] delay=10s timeout=30s period=5s #success=1 #failure=3
--
Limits:
memory: 256Mi
Requests:
cpu: 100m
memory: 256Mi
Environment:
[root@bastion openshift]# oc describe pod collector-5jzxh | egrep 'Limits|Requests' -A3
Limits:
memory: 736Mi
Requests:
cpu: 100m
memory: 736Mi
Environment:
[root@bastion openshift]#
[root@bastion openshift]# oc describe pod kibana-6f894f5bc4-7zkc4 | egrep 'Limits|Requests' -A3
Limits:
memory: 736Mi
Requests:
cpu: 100m
memory: 736Mi
Readiness: exec [/usr/share/kibana/probe/readiness.sh] delay=5s timeout=4s period=5s #success=1 #failure=3
--
Limits:
memory: 256Mi
Requests:
cpu: 100m
memory: 256Mi
Environment:
[root@bastion openshift]#
上記のコマンドの結果のまとめ
空白部分は特に指定が無かった事を表す。
Pod 名 | container名 | CPU (Limits) | CPU (Requests) | Memory (Limits) | Memory (Requests) |
---|---|---|---|---|---|
Operator(controller) | |||||
cluster-logging-operator-xxxx | |||||
ElasticSearch | |||||
elasticsearch-cdm-xxxx | elasticsearch | 1 | 16Gi | 16Gi | |
proxy | 100m | 256Mi | 256Mi | ||
collector | |||||
collector-xxxx | 100m | 736Mi | 736Mi | ||
kibana | |||||
kibana-xxxx | kibana | 100m | 736Mi | 736Mi | |
kibana-proxy | 100m | 256Mi | 256Mi |
Pod内のcontainer 名は、別コマンドで確認して別途補則
後で、jsonpath
で、Pod
内の container
毎の limits
/requests
の取り方を考えたが時すでに遅し。
[root@bastion openshift]# oc get pod elasticsearch-cdm-gjm8weln-1-7fc97cc94-b7qr6 -o=jsonpath='{range .spec.containers[*]} {.name}{"\t"}{.resources}{"\n"}'
elasticsearch {"limits":{"memory":"16Gi"},"requests":{"cpu":"1","memory":"16Gi"}}
proxy {"limits":{"memory":"256Mi"},"requests":{"cpu":"100m","memory":"256Mi"}}
[root@bastion openshift]#
実際のリソース消費量
OpenShift を単純インストール後、ほぼ素の状態でのリソース使用量。
[root@bastion openshift]# kubectl top pods -n openshift-logging --use-protocol-buffers
NAME CPU(cores) MEMORY(bytes)
cluster-logging-operator-6df7db84bb-rg868 1m 61Mi
collector-5jzxh 6m 363Mi
collector-7bf6t 18m 550Mi
collector-7kmfv 3m 327Mi
collector-9njjr 5m 354Mi
collector-9z77f 5m 409Mi
collector-b7hjd 4m 314Mi
collector-cctmt 5m 361Mi
collector-j7pb9 4m 339Mi
collector-mz9ql 10m 408Mi
collector-pd4g4 7m 406Mi
collector-srbdx 29m 611Mi
collector-wl6ng 17m 669Mi
elasticsearch-cdm-gjm8weln-1-7fc97cc94-b7qr6 365m 10129Mi
elasticsearch-cdm-gjm8weln-2-75787bdc7f-thh2f 376m 10079Mi
elasticsearch-cdm-gjm8weln-3-6478496ddd-tp78x 411m 10126Mi
kibana-6f894f5bc4-7zkc4 2m 134Mi
[root@bastion openshift]#
elasticsearch-cdm-xxxx
の CPU / Memory 使用量がやはり多い。
elasticsearch-cdm-xxxx
は、Memory の request は 16Gi だが、インストール直後では、10Gi 程度になっている。
Author And Source
この問題について(OpenShift Cluster Logging が要求しているリソース量を調べる), 我々は、より多くの情報をここで見つけました https://qiita.com/Yuhkih/items/e5f44121c040e022dad8著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .