16.3. Node Observability Operator を使用して CRI-O および Kubelet プロファイリングデータをリクエストする
CRI-O および Kubelet プロファイリングデータの収集に使用する、Node Observability カスタムリソースを作成します。
16.3.1. Node Observability カスタムリソースの作成 リンクのコピーリンクがクリップボードにコピーされました!
プロファイリングクエリーを実行する前に、NodeObservability カスタムリソース (CR) を作成して実行する必要があります。一致するNodeObservability CR を実行すると、必要なマシン設定およびマシン設定プール CR が作成され、nodeSelector に一致するワーカーノードで CRI-O プロファイリングを有効にします。
ワーカーノードで CRI-O プロファイリングが有効になっていない場合、NodeObservabilityMachineConfig リソースが作成されます。NodeObservability CR で指定された nodeSelector に一致するワーカーノードが再起動します。完了するまでに 10 分以上かかる場合があります。
Kubelet プロファイリングはデフォルトで有効になっています。
ノードの CRI-Ounix ソケットは、エージェント 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>:6443Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
node-observability-operatornamespace に切り替えます。oc project node-observability-operator
$ oc project node-observability-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のテキストを含む
nodeobservability.yamlという名前の CR ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow NodeObservabilityCR を実行します。oc apply -f nodeobservability.yaml
oc apply -f nodeobservability.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
nodeobservability.olm.openshift.io/cluster created
nodeobservability.olm.openshift.io/cluster createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
NodeObservabilityCR のステータスを確認します。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 NodeObservabilityCR の実行は、理由がReadyで、ステータスがTrueのときに完了します。
16.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.yamlCopy 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