3.2. 一般的な設定オプション
3.2.1. リソース要求および制限
Pod およびボリュームの CPU、メモリー、またはストレージリソースの要求および/または制限を調整できます。以下の default-resource-limits.yaml は、各コンポーネントのリソース要求および制限を設定する例を示しています。
apiVersion: metering.openshift.io/v1
kind: MeteringConfig
metadata:
name: "operator-metering"
spec:
reporting-operator:
spec:
resources:
limits:
cpu: 1
memory: 500Mi
requests:
cpu: 500m
memory: 100Mi
presto:
spec:
coordinator:
resources:
limits:
cpu: 4
memory: 4Gi
requests:
cpu: 2
memory: 2Gi
worker:
replicas: 0
resources:
limits:
cpu: 8
memory: 8Gi
requests:
cpu: 4
memory: 2Gi
hive:
spec:
metastore:
resources:
limits:
cpu: 4
memory: 2Gi
requests:
cpu: 500m
memory: 650Mi
storage:
class: null
create: true
size: 5Gi
server:
resources:
limits:
cpu: 1
memory: 1Gi
requests:
cpu: 500m
memory: 500Mi3.2.2. ノードセレクター
特定のノードセットでメータリングコンポーネントを実行できます。メータリングコンポーネントに nodeSelector を設定し、コンポーネントがスケジュールされる場所を制御します。以下の node-selectors.yaml ファイルは、各コンポーネントのノードセレクターを設定する例を示しています。
オペランド Pod の特定のノードセレクターを設定する前に、 openshift.io/node-selector: "" namespace アノテーションをメータリング namespace YAML ファイルに追加します。"" をアノテーションの値として指定します。
apiVersion: metering.openshift.io/v1
kind: MeteringConfig
metadata:
name: "operator-metering"
spec:
reporting-operator:
spec:
nodeSelector:
"node-role.kubernetes.io/infra": "" 1
presto:
spec:
coordinator:
nodeSelector:
"node-role.kubernetes.io/infra": "" 2
worker:
nodeSelector:
"node-role.kubernetes.io/infra": "" 3
hive:
spec:
metastore:
nodeSelector:
"node-role.kubernetes.io/infra": "" 4
server:
nodeSelector:
"node-role.kubernetes.io/infra": "" 5
オペランド Pod の特定のノードセレクターを設定する前に、 openshift.io/node-selector: "" namespace アノテーションをメータリング namespace YAML ファイルに追加します。openshift.io/node-selector アノテーションがプロジェクトに設定されている場合、その値はクラスター全体の Scheduler オブジェクトの spec.defaultNodeSelector フィールドの値に優先して使用されます。
検証
以下のチェックのいずれかを実行してメータリングノードセレクターを検証できます。
メータリングのすべての Pod が MeteringConfig カスタムリソースで設定されるノードの IP に適切にスケジュールされていることを確認します。
手順
openshift-meteringnamespace のすべての Pod を確認します。$ oc --namespace openshift-metering get pods -o wide
出力には、
openshift-meteringnamespace で実行される各 Pod のNODEおよび対応するIPが表示されます。NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES hive-metastore-0 1/2 Running 0 4m33s 10.129.2.26 ip-10-0-210-167.us-east-2.compute.internal <none> <none> hive-server-0 2/3 Running 0 4m21s 10.128.2.26 ip-10-0-150-175.us-east-2.compute.internal <none> <none> metering-operator-964b4fb55-4p699 2/2 Running 0 7h30m 10.131.0.33 ip-10-0-189-6.us-east-2.compute.internal <none> <none> nfs-server 1/1 Running 0 7h30m 10.129.2.24 ip-10-0-210-167.us-east-2.compute.internal <none> <none> presto-coordinator-0 2/2 Running 0 4m8s 10.131.0.35 ip-10-0-189-6.us-east-2.compute.internal <none> <none> reporting-operator-869b854c78-8g2x5 1/2 Running 0 7h27m 10.128.2.25 ip-10-0-150-175.us-east-2.compute.internal <none> <none>
openshift-meteringnamespace のノードを、クラスター内の各ノードのNAMEと比較します。$ oc get nodes
NAME STATUS ROLES AGE VERSION ip-10-0-147-106.us-east-2.compute.internal Ready master 14h v1.18.3+6025c28 ip-10-0-150-175.us-east-2.compute.internal Ready worker 14h v1.18.3+6025c28 ip-10-0-175-23.us-east-2.compute.internal Ready master 14h v1.18.3+6025c28 ip-10-0-189-6.us-east-2.compute.internal Ready worker 14h v1.18.3+6025c28 ip-10-0-205-158.us-east-2.compute.internal Ready master 14h v1.18.3+6025c28 ip-10-0-210-167.us-east-2.compute.internal Ready worker 14h v1.18.3+6025c28
MeteringConfig カスタムリソースのノードセレクターの設定が、メータリングオペランド Pod がスケジュールされないようにクラスター全体のノードセレクター設定に干渉しないことを確認します。
手順
クラスター全体の Scheduler オブジェクトで
spec.defaultNodeSelectorフィールドを確認します。ここには、デフォルトで Pod がスケジュールされている場所が示されます。$ oc get schedulers.config.openshift.io cluster -o yaml