CSIドライバー: ログの収集方法
Summary: この記事では、基本的なログを収集して、Dellコンテナ ストレージ モジュール(CSM)ファミリーの問題のトラブルシューティングを開始する方法について説明します。Dell Container Storage Interface (CSI)ドライバー
Instructions
CSIドライバー ログの収集
これには、デバッグの有効化、可能であれば問題の再現、CSIドライバー コントローラーのログの収集、ノード ポッドからのログの収集が含まれます。
kubectl コマンドは、OpenShift環境では「oc」に置き換えることができます。
CSIドライバー コントローラーとノード ポッドのデバッグ ログを有効にします。
ドキュメントの「動的ログ構成」機能を参照してください https://dell.github.io/csm-docs/docs/csidriver
コントローラーとノード ポッドの名前を決定します。
使用する kubectl get pods コマンドを使用して、ドライバー名前空間内のポッドを一覧表示します。
# kubectl get pods -n isilon NAME READY STATUS RESTARTS AGE isilon-controller-66d7d9d7c-6j6f4 6/6 Running 0 11m isilon-node-9wngk 2/2 Running 0 27d
CSIドライバー コントローラーのログを収集します。
コントローラー ポッドのログを収集する必要があります。を使用して、すべてのコントローラーからログを収集します。 kubectl logs に指定します。ドライバーなどの関連するコンテナを渡すようにしてください。
kubectl logs -n <namespace> <controller> <container> > <file name>
Example:
kubectl logs -n isilon isilon-controller-66d7d9d7c-6j6f4 driver > isilon-controller-66d7d9d7c-6j6f4_driver.log
問題に関連するすべての必要なコンテナ(アタッチャ、スナップショナッタ、プロビジョナー、ドライバ、リサイザーなど)について、同じ手順を繰り返します。出力ファイルのファイル名は、コントローラー名とコンテナーと一致するように必ず変更してください。
CSIドライバー ノード ポッドのログを収集します。
また、ワーカー ノードのログも収集する必要があります。これには 1 つのノードを含めることも、問題のあるポッドを 1 つのノードから別のノードに移動する場合は複数のノードを含めることもできます。これにより、CSIドライバー ノード ポッド(ドライバー、レジストラーなど)上の各コンテナーのログが収集されます。
kubectl logs -n <namespace> <worker node> > <filename>.txt
Example:
kubectl logs -n isilon isilon-node-9wngk driver > isilon-node-9wngk_driver.txt kubectl logs -n isilon isilon-node-9wngk registrar > isilon-node-9wngk_registrar.txt
代替案
スクリプト
すべてのコントローラー ログを個別に生成し(必要に応じて「isilon」名前空間を2か所に変更します)、必要に応じてコンテナを追加します。
for x in $(kubectl get pods -n isilon | grep controller | awk '{print $1}'); do for i in attacher provisioner driver snapshotter;do kubectl logs -n isilon $x -c $i > $x-$i.txt;done;done
これにより、ノード ログを収集し(必要に応じて「isilon」ネームスペースを2か所に変更)、必要に応じてコンテナを追加します。
for x in $(kubectl get pods -n isilon | grep node | awk '{print $1}'); do for i in driver registrar;do kubectl logs -n isilon $x -c $i > $x-$i.txt;done;done
Sinceオプション
すべてのログを収集すると、必要以上のデータが生成される可能性があります。この「--since」オプションを使用すると、既知の時間にわたって収集できます。このオプションの後には、「5 s」、「5 m」、または「5 h」が続き、ログ収集の戻り時間に応じて、秒、分、時間を表します。これは、問題が再現された場合にも役立ちます。過去5分間のログ(または再現にかかった時間)を収集します。
Example:
kubectl logs -n isilon isilon-node-xxx driver --since 5m > isilon-node-xxx_driver.txt
すべてのコンテナ
トラブルシューティングでは、前述のようにログを個別に収集することが役立ちます。場合によっては、コンテナ名を「--all-containers」を使用してポッドのすべてのコンテナのログを収集すると便利です。
Example:
kubectl logs -n isilon isilon-node-xxx --all-containers> isilon-node_driver.txt
その他の必須情報:
コンテナ オーケストレーター(K8s、OpenShiftなど)およびバージョン
Kubernetesのバージョンとフレーバー
ドライバーのバージョン
アレイのバージョンまたはマイクロコード
K8ノードのオペレーティング システムとバージョン
Additional Information
導入環境を一覧表示するには、次の手順を実行します。
NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE
csi-powerscale isilon-controller 1/1 1 1 14d
powermax powermax-controller 1/1 1 26d
Unity Unity-controller 1/1 1 47d
vxflexos vxflexos vxflexos-controller 2/2 2 107d
-名前:
X_CSI_DEBUG値: 「true」Isilon
の場合、OneFS REST APIのコンテンツも0(true)に設定してデバッグに記録する必要があります。
-名前:
X_CSI_VERBOSE値: 「0」
デーモンセットを編集して、CSIドライバー ノードのデバッグ ログを有効にします。
デーモンセットを編集すると、デバッグが有効になります。
デーモンセットを一覧表示するには、次の手順を実行します。
NAMESPACE NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
csi-powerscale isilon-node 2 2 2 2 14d
powermax powermax-node 2 2 2 2 2 26d
Unity Unityノード 2 2 2 2 47d
vxflexos vxflexos-node 2 2 2 2 107d
-名前:
X_CSI_DEBUG値: 「真」
Isilonの場合、OneFS REST APIのコンテンツも0(true)に設定してデバッグに記録する必要があります。
-名前:
X_CSI_VERBOSE値: 「0」
デバッグ ログは遡及的ではないため、可能な場合はログを収集する前に問題を再現してください。