第8章 メータリングのトラブルシューティングおよびデバッグ

重要

メータリングは非推奨の機能です。非推奨の機能は依然として OpenShift Container Platform に含まれており、引き続きサポートされますが、本製品の今後のリリースで削除されるため、新規デプロイメントでの使用は推奨されません。

OpenShift Container Platform で非推奨となったか、または削除された主な機能の最新の一覧については、OpenShift Container Platform リリースノートの 非推奨および削除された機能セクションを参照してください。

以下のセクションを参照して、メータリングに関連する特定の問題のトラブルシューティングとデバッグを行ってください。

このセクションの情報に加えて、次のトピックを確認してください。

8.1. メータリングのトラブルシューティング

メータリングに関連する一般的な問題として、Pod が起動に失敗する問題があります。Pod はリソースがないか、または StorageClass または Secret リソースなど、存在しないリソースへの依存関係がある場合に起動に失敗する可能性があります。

8.1.1. 十分なコンピュートリソースがない

メータリングのインストールまたは実行時に、コンピュートリソースがないという問題がよく生じます。クラスターが拡大し、より多くのレポートが作成されると、レポート Operator Pod にはより多くのメモリーが必要になります。メモリー使用量が Pod の制限に達すると、クラスターは Pod のメモリー不足 (OOM) を考慮し、これを OOMKilled ステータスで終了します。メータリングにインストールの前提条件で説明されている最小限のリソース要件が適用されていることを確認します。

注記

メータリング Operator は、クラスターの負荷に基づいてレポート Operator を自動スケーリングしません。そのため、クラスターが大きくなると、レポート Operator Pod の CPU 使用率は増加しません。

問題がリソースまたはスケジュールに関連するかどうかを判別するには、Kubernetes ドキュメントの Managing Resources for Containers にあるトラブルシューティングの指示に従ってください。

コンピュートリソースがないために問題のトラブルシューティングを行うには、openshift-metering namespace 内で以下を確認します。

前提条件

  • 現在の位置は openshift-metering namespace である。以下を実行して openshift-metering namespace に切り替えます。

    $ oc project openshift-metering

手順

  1. 完了しなかったメータリング Report リソースの有無を確認し、ReportingPeriodUnmetDependencies のステータスを表示します。

    $ oc get reports

    出力例

    NAME                                  QUERY                          SCHEDULE   RUNNING                            FAILED   LAST REPORT TIME       AGE
    namespace-cpu-utilization-adhoc-10    namespace-cpu-utilization                 Finished                                    2020-10-31T00:00:00Z   2m38s
    namespace-cpu-utilization-adhoc-11    namespace-cpu-utilization                 ReportingPeriodUnmetDependencies                                   2m23s
    namespace-memory-utilization-202010   namespace-memory-utilization              ReportingPeriodUnmetDependencies                                   26s
    namespace-memory-utilization-202011   namespace-memory-utilization              ReportingPeriodUnmetDependencies                                   14s

  2. NEWEST METRIC の値がレポートの終了日よりも小さい ReportDataSource リソースを確認します。

    $ oc get reportdatasource

    出力例

    NAME                                         EARLIEST METRIC        NEWEST METRIC          IMPORT START           IMPORT END             LAST IMPORT TIME       AGE
    ...
    node-allocatable-cpu-cores                   2020-04-23T09:14:00Z   2020-08-31T10:07:00Z   2020-04-23T09:14:00Z   2020-10-15T17:13:00Z   2020-12-09T12:45:10Z   230d
    node-allocatable-memory-bytes                2020-04-23T09:14:00Z   2020-08-30T05:19:00Z   2020-04-23T09:14:00Z   2020-10-14T08:01:00Z   2020-12-09T12:45:12Z   230d
    ...
    pod-usage-memory-bytes                       2020-04-23T09:14:00Z   2020-08-24T20:25:00Z   2020-04-23T09:14:00Z   2020-10-09T23:31:00Z   2020-12-09T12:45:12Z   230d

  3. 多数の Pod の再起動のについて、reporting-operator Pod リソースの正常性を確認します。

    $ oc get pods -l app=reporting-operator

    出力例

    NAME                                  READY   STATUS    RESTARTS   AGE
    reporting-operator-84f7c9b7b6-fr697   2/2     Running   542        8d 1

    1
    レポート Operator Pod は高い率で再起動します。
  4. reporting-operator Pod リソースで OOMKilled の終了について確認します。

    $ oc describe pod/reporting-operator-84f7c9b7b6-fr697

    出力例

    Name:         reporting-operator-84f7c9b7b6-fr697
    Namespace:    openshift-metering
    Priority:     0
    Node:         ip-10-xx-xx-xx.ap-southeast-1.compute.internal/10.xx.xx.xx
    ...
       Ports:          8080/TCP, 6060/TCP, 8082/TCP
       Host Ports:     0/TCP, 0/TCP, 0/TCP
       State:          Running
         Started:      Thu, 03 Dec 2020 20:59:45 +1000
       Last State:     Terminated
         Reason:       OOMKilled 1
         Exit Code:    137
         Started:      Thu, 03 Dec 2020 20:38:05 +1000
         Finished:     Thu, 03 Dec 2020 20:59:43 +1000

    1
    レポート Operator Pod は OOM による強制終了により終了しています。
reporting-operator Pod メモリー制限の引き上げ

Pod の再起動や OOM による強制終了イベントが増加している場合、レポート Operator Pod に設定された現在のメモリー制限を確認できます。メモリー制限を増やすと、レポート Operator Pod はレポートデータソースを更新できます。必要な場合は、MeteringConfig リソースのメモリー制限を 25% - 50% 引き上げます。

手順

  1. reporting-operator Pod リソースの現在のメモリー制限を確認します。

    $ oc describe pod reporting-operator-67d6f57c56-79mrt

    出力例

    Name:         reporting-operator-67d6f57c56-79mrt
    Namespace:    openshift-metering
    Priority:     0
    ...
       Ports:          8080/TCP, 6060/TCP, 8082/TCP
       Host Ports:     0/TCP, 0/TCP, 0/TCP
       State:          Running
         Started:      Tue, 08 Dec 2020 14:26:21 +1000
       Ready:          True
       Restart Count:  0
       Limits:
         cpu:     1
         memory:  500Mi 1
       Requests:
         cpu:     500m
         memory:  250Mi
       Environment:
    ...

    1
    レポート Operator Pod の現在のメモリー制限。
  2. MeteringConfig リソースを編集してメモリー制限を更新します。

    $ oc edit meteringconfig/operator-metering

    MeteringConfig リソース例

    kind: MeteringConfig
    metadata:
      name: operator-metering
      namespace: openshift-metering
    spec:
      reporting-operator:
      spec:
        resources: 1
          limits:
            cpu: 1
            memory: 750Mi
          requests:
            cpu: 500m
            memory: 500Mi
    ...

    1
    MeteringConfig リソースの resources フィールド内でメモリー制限を追加または引き上げます。
    注記

    メモリー制限が引き上げられた後でも引き続き OOM で強制終了された多数のイベントがある場合は、別の問題がレポートを保留状態にしていることを示唆している可能性があります。

8.1.2. StorageClass リソースが設定されない

メータリングでは、デフォルトの StorageClass リソースが動的プロビジョニングに設定されている必要があります。

クラスターに設定された StorageClass があるかどうかをチェックする方法、デフォルトの設定方法、およびメータリングをデフォルト以外のストレージクラス を使用するように設定する方法についての詳細は、メータリングの設定方法についてのドキュメントを参照してください。

8.1.3. シークレットが正しく設定されていない

メータリングに関連する一般的な問題として、永続ストレージの設定時に誤ったシークレットが指定されることがあります。設定ファイルのサンプルを確認し、ストレージプロバイダーのガイドラインに従ってシークレットを作成することを確認してください。