14.9. vSphere Problem Detector Operator の使用

14.9.1. vSphere Problem Detector Operator について

vSphere Problem Detector Operator は、一般的なインストールおよびストレージに関連する正しくない設定の問題について vSphere にデプロイされたクラスターをチェックします。

Operator は openshift-cluster-storage-operator namespace で実行され、Cluster Storage Operator がクラスターが vSphere にデプロイされたことを検知すると Cluster Storage Operator によって起動します。vSphere Problem Detector Operator は vSphere vCenter Server と通信して、クラスター内の仮想マシン、デフォルトのデータストア、および vSphere vCenter Server 設定についての他の情報を判別します。Operator は Cloud Credential Operator からの認証情報を使用して vSphere に接続します。

Operator は以下のスケジュールに基づいてチェックを実行します。

  • チェックは 8 時間ごとに実行されます。
  • チェックに失敗すると、Operator は 1 分、2 分、4 分、8 分などの間隔でチェックを再び実行します。Operator は、8 時間を最大の間隔とし、その範囲内で間隔を 2 倍にします。
  • すべてのチェックに合格すると、スケジュールは 8 時間の間隔に戻ります。

Operator は、障害の発生後にチェックの頻度を増加させ、Operator が障害状態が修復された直後に正常な状態を報告できるようにします。Operator を手動で実行し、トラブルシューティングについての情報をすぐに確認できます。

14.9.2. vSphere Problem Detector Operator チェックの実行

vSphere Problem Detector Operator のチェックを実行するスケジュールを上書きし、チェックを即時に実行できます。

vSphere Problem Detector Operator は 8 時間ごとにチェックを自動的に実行します。ただし、Operator が起動すると、チェックがすぐに実行されます。Operator は、Cluster Storage Operator の起動時に Cluster Storage Operator によって起動し、クラスターが vSphere で実行されているかどうかを判別します。チェックをすぐに実行するには、vSphere Problem Detector Operator を 0 にスケーリングしてから、1 に戻し、vSphere Problem Detector Operator が再起動できるようにします。

前提条件

  • cluster-admin ロールを持つユーザーとしてのクラスターへのアクセスがあること。

手順

  1. Operator を 0 にスケーリングします。

    $ oc scale deployment/vsphere-problem-detector-operator --replicas=0 \
        -n openshift-cluster-storage-operator

    デプロイメントがすぐにゼロにスケーリングされない場合、以下のコマンドを実行して Pod の終了を待機します。

    $ oc wait pods -l name=vsphere-problem-detector-operator \
        --for=delete --timeout=5m -n openshift-cluster-storage-operator
  2. Operator を 1 にスケーリングします。

    $ oc scale deployment/vsphere-problem-detector-operator --replicas=1 \
        -n openshift-cluster-storage-operator
  3. 古いリーダーロックを削除し、Cluster Storage Operator の新規リーダー選択を加速します。

    $ oc delete -n openshift-cluster-storage-operator \
        cm vsphere-problem-detector-lock

検証

  • vSphere Problem Detector Operator によって生成されるイベントまたはログを表示します。イベントまたはログに最新のタイムスタンプがあることを確認します。

14.9.3. vSphere Problem Detector Operator からのイベントの表示

vSphere Problem Detector Operator が設定チェックを実行した後に、コマンドラインまたは OpenShift Container Platform Web コンソールから表示できるイベントを作成します。

手順

  • コマンドラインを使用してイベントを表示するには、以下のコマンドを実行します。

    $ oc get event -n openshift-cluster-storage-operator \
        --sort-by={.metadata.creationTimestamp}

    出力例

    16m     Normal    Started             pod/vsphere-problem-detector-operator-xxxxx         Started container vsphere-problem-detector
    16m     Normal    Created             pod/vsphere-problem-detector-operator-xxxxx         Created container vsphere-problem-detector
    16m     Normal    LeaderElection      configmap/vsphere-problem-detector-lock    vsphere-problem-detector-operator-xxxxx became leader

  • OpenShift Container Platform Web コンソールを使用してイベントを表示するには、HomeEvents に移動し、Project メニューから openshift-cluster-storage-operator を選択します。

14.9.4. vSphere Problem Detector Operator からのログの表示

vSphere Problem Detector Operator が設定チェックを実行した後に、コマンドラインまたは OpenShift Container Platform Web コンソールから表示できるログレコードを作成します。

手順

  • コマンドラインを使用してログを表示するには、以下のコマンドを実行します。

    $ oc logs deployment/vsphere-problem-detector-operator \
        -n openshift-cluster-storage-operator

    出力例

    I0108 08:32:28.445696       1 operator.go:209] ClusterInfo passed
    I0108 08:32:28.451029       1 datastore.go:57] CheckStorageClasses checked 1 storage classes, 0 problems found
    I0108 08:32:28.451047       1 operator.go:209] CheckStorageClasses passed
    I0108 08:32:28.452160       1 operator.go:209] CheckDefaultDatastore passed
    I0108 08:32:28.480648       1 operator.go:271] CheckNodeDiskUUID:<host_name> passed
    I0108 08:32:28.480685       1 operator.go:271] CheckNodeProviderID:<host_name> passed

  • OpenShift Container Platform Web コンソールで Operator ログを表示するには、以下の手順を実行します。

    1. WorkloadsPods に移動します。
    2. Projects メニューから openshift-cluster-storage-operator を選択します。from the
    3. vsphere-problem-detector-operator Pod のリンクをクリックします。
    4. Pod details ページの Logs タブをクリックしてログを表示します。

14.9.5. vSphere Problem Detector Operator によって実行される設定チェック

以下の表は、vSphere Problem Detector Operator が実行する設定チェックを特定します。一部のチェックでは、クラスターの設定を確認します。他のチェックは、クラスター内の各ノードの設定を確認します。

表14.70 クラスター設定チェック

名前説明

CheckDefaultDatastore

vSphere 設定のデフォルトのデータストア名が動的プロビジョニングで使用できる程度の短い名前であることを確認します。

このチェックに失敗した場合は、以下が予想されます。

  • systemd は、Failed to set up mount unit: Invalid argument などのエラーのログをジャーナルに記録します。
  • systemd は、仮想マシンがシャットダウンされていないか、ノードから すべての Pod をドレイン (解放) せずに再起動されている場合はボリュームをアンマウントしません。

このチェックに失敗した場合は、デフォルトのデータストアのより短い名前で vSphere を再設定します。

CheckFolderPermissions

デフォルトのデータストアでボリュームを一覧表示するパーミッションを検証します。このパーミッションは、ボリュームの作成に必要です。Operator は、/ および /kubevols ディレクトリーを一覧表示してパーミッションを検証します。ルートディレクトリーが存在する必要があります。これは、チェックの実行時に /kubevols ディレクトリー が存在しない場合に許可されます。/kubevols ディレクトリーは、このディレクトリーが存在しない場合に、データストアが動的プロビジョニングで使用される際に作成されます。

このチェックに失敗した場合は、OpenShift Container Platform のインストール時に指定された vCenter アカウントに必要なパーミッションを確認します。

CheckStorageClasses

以下を確認してください。

  • このストレージクラスによってプロビジョニングされる各永続ボリュームへの完全修飾パスは 255 文字未満です。
  • ストレージクラスがストレージポリシーを使用する場合、ストレージクラスは 1 つのポリシーのみを使用し、そのポリシーを定義する必要があります。

CheckTaskPermissions

最新のタスクおよびデータストアを一覧表示するパーミッションを検証します。

ClusterInfo

vSphere vCenter からクラスターバージョンおよび UUID を収集します。

表14.71 ノード設定チェック

名前説明

CheckNodeDiskUUID

すべての vSphere 仮想マシンが disk.enableUUID=TRUE で設定されていることを確認します。

このチェックに失敗した場合は、Red Hat ナレッジベースソリューションの How to check 'disk.EnableUUID' parameter from VM in vSphere を参照してください。

CheckNodeProviderID

すべてのノードが vSphere vCenter の ProviderID で設定されていることを確認します。以下のコマンドからの出力に各ノードのプロバイダー ID が含まれていない場合に、このチェックに失敗します。

$ oc get nodes -o custom-columns=NAME:.metadata.name,PROVIDER_ID:.spec.providerID,UUID:.status.nodeInfo.systemUUID

このチェックに失敗した場合は、クラスター内の各ノードのプロバイダー ID の設定方法について、vSphere の製品ドキュメントを参照してください。

CollectNodeESXiVersion

ノードを実行する ESXi ホストのバージョンを報告します。

CollectNodeHWVersion

ノードの仮想マシンのハードウェアバージョンを報告します。

14.9.6. ストレージクラス設定チェックについて

vSphere ストレージを使用する永続ボリュームの名前は、データストア名とクラスター ID に関連します。

永続ボリュームが作成されると、systemd は永続ボリュームのマウントユニットを作成します。systemd プロセスには、永続ボリュームに使用される VDMK ファイルへの完全修飾パスの長さにについて 255 文字の制限があります。

完全修飾パスは、systemd および vSphere の命名規則に基づいています。命名規則では、以下のパターンを使用します。

/var/lib/kubelet/plugins/kubernetes.io/vsphere-volume/mounts/[<datastore>] 00000000-0000-0000-0000-000000000000/<cluster_id>-dynamic-pvc-00000000-0000-0000-0000-000000000000.vmdk
  • 命名規則では、255 文字制限の内の 205 文字が必要です。
  • データストア名とクラスター ID はデプロイメントで判別されます。
  • データストア名とクラスター ID は前述のパターンに代入されます。次に、パスは特殊文字をエスケープできるように systemd-escape コマンドで処理されます。たとえば、ハイフン文字ではエスケープ後に 4 文字を使用します。エスケープされた値は \x2d になります。
  • systemd-escape で処理した後に、systemd が VDMK ファイルへの完全修飾パスにアクセスできるようにするには、パスの長さが 255 文字未満である必要があります。

14.9.7. vSphere Problem Detector Operator のメトリクス

vSphere Problem Detector Operator は、OpenShift Container Platform モニターリングスタックで使用される以下のメトリクスを公開します。

表14.72 vSphere Problem Detector Operator によって公開されるメトリクス

名前説明

vsphere_cluster_check_total

vSphere Problem Detector Operator が実行したクラスターレベルのチェックの累積数です。この数には、成功と失敗の両方が含まれます。

vsphere_cluster_check_errors

vSphere Problem Detector Operator が実行したクラスターレベルのチェックの失敗したチェック数です。たとえば、値 1 は 1 つのクラスターレベルのチェックが失敗したことを示します。

vsphere_esxi_version_total

特定のバージョンを持つ ESXi ホストの数ホストが複数のノードを実行する場合は、ホストが 1 回のみカウントされることに注意してください。

vsphere_node_check_total

vSphere Problem Detector Operator が実行したノードレベルのチェックの累積数です。この数には、成功と失敗の両方が含まれます。

vsphere_node_check_errors

vSphere Problem Detector Operator が実行したノードレベルのチェックの失敗したチェック数です。たとえば、値 1 は 1 つのノードレベルのチェックが失敗したことを示します。

vsphere_node_hw_version_total

特定のハードウェアバージョンを持つ vSphere ノードの数。

vsphere_vcenter_info

vSphere vCenter サーバーに関する情報

14.9.8. 関連情報