23.3. Node Observability Operator を使用して CRI-O および Kubelet プロファイリングデータをリクエストする
CRI-O および Kubelet プロファイリングデータの収集に使用する、Node Observability カスタムリソースを作成します。
23.3.1. Node Observability カスタムリソースの作成 リンクのコピーリンクがクリップボードにコピーされました!
プロファイリングクエリーを実行する前に、NodeObservability
カスタムリソース (CR) を作成して実行する必要があります。一致する NodeObservability
CR を実行すると、必要なマシン設定およびマシン設定プール CR が作成され、nodeSelector
に一致するワーカーノードで CRI-O プロファイリングを有効にします。
ワーカーノードで CRI-O プロファイリングが有効になっていない場合、NodeObservabilityMachineConfig
リソースが作成されます。NodeObservability
CR で指定された nodeSelector
に一致するワーカーノードが再起動します。完了するまでに 10 分以上かかる場合があります。
Kubelet プロファイリングはデフォルトで有効になっています。
ノードの CRI-O unix ソケットは、エージェント Pod にマウントされます。これにより、エージェントは CRI-O と通信して pprof 要求を実行できます。同様に、kubelet-serving-ca
証明書チェーンはエージェント Pod にマウントされ、エージェントとノードの kubelet エンドポイント間の安全な通信を可能にします。
前提条件
- Node Observability Operator をインストールしました。
- OpenShift CLI (oc) がインストールされている。
-
cluster-admin
権限でクラスターにアクセスできる。
手順
以下のコマンドを実行して、OpenShift Container Platform CLI にログインします。
oc login -u kubeadmin https://<HOSTNAME>:6443
$ oc login -u kubeadmin https://<HOSTNAME>:6443
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
node-observability-operator
namespace に切り替えます。oc project node-observability-operator
$ oc project node-observability-operator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のテキストを含む
nodeobservability.yaml
という名前の CR ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow NodeObservability
CR を実行します。oc apply -f nodeobservability.yaml
oc apply -f nodeobservability.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
nodeobservability.olm.openshift.io/cluster created
nodeobservability.olm.openshift.io/cluster created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
NodeObservability
CR のステータスを確認します。oc get nob/cluster -o yaml | yq '.status.conditions'
$ oc get nob/cluster -o yaml | yq '.status.conditions'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NodeObservability
CR の実行は、理由がReady
で、ステータスがTrue
のときに完了します。
23.3.2. プロファイリングクエリーの実行 リンクのコピーリンクがクリップボードにコピーされました!
プロファイリングクエリーを実行するには、NodeObservabilityRun
リソースを作成する必要があります。プロファイリングクエリーは、CRI-O および Kubelet プロファイリングデータを 30 秒間フェッチするブロッキング操作です。プロファイリングクエリーが完了したら、コンテナーファイルシステムの /run/node-observability
ディレクトリー内のプロファイリングデータを取得する必要があります。データの有効期間は、emptyDir
ボリュームを介してエージェント Pod にバインドされるため、エージェント Pod が running
の状態にある間にプロファイリングデータにアクセスできます。
一度にリクエストできるプロファイリングクエリーは 1 つだけです。
前提条件
- Node Observability Operator をインストールしました。
-
NodeObservability
カスタムリソース (CR) を作成しました。 -
cluster-admin
権限でクラスターにアクセスできる。
手順
次のテキストを含む
nodeobservabilityrun.yaml
という名前のNodeObservabilityRun
リソースファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow NodeObservabilityRun
リソースを実行して、プロファイリングクエリーをトリガーします。oc apply -f nodeobservabilityrun.yaml
$ oc apply -f nodeobservabilityrun.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
NodeObservabilityRun
のステータスを確認します。oc get nodeobservabilityrun nodeobservabilityrun -o yaml | yq '.status.conditions'
$ oc get nodeobservabilityrun nodeobservabilityrun -o yaml | yq '.status.conditions'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ステータスが
True
になり、タイプがFinished
になると、プロファイリングクエリーは完了です。次の bash スクリプトを実行して、コンテナーの
/run/node-observability
パスからプロファイリングデータを取得します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow