第18章 パフォーマンスプロファイルを使用した低レイテンシーを実現するための Hosted Control Plane のチューニング
低レイテンシーを実現するために、パフォーマンスプロファイルを適用して Hosted Control Plane をチューニングします。パフォーマンスプロファイルを使用すると、インフラストラクチャーおよびアプリケーションコンテナーの CPU を制限したり、レイテンシーの影響を受けやすいプロセスに対して huge page、ハイパースレッディング、CPU パーティションを設定できます。
18.1. Hosted Control Plane のパフォーマンスプロファイルの作成 リンクのコピーリンクがクリップボードにコピーされました!
Performance Profile Creator (PPC) ツールを使用して、クラスターパフォーマンスプロファイルを作成できます。PPC は Node Tuning Operator の機能です。
PPC は、クラスターに関する情報とユーザー指定の設定を組み合わせて、ハードウェア、トポロジー、ユースケースに適したパフォーマンスプロファイルを生成します。
以下は、クラスターでパフォーマンスプロファイルを作成して適用するための大まかなワークフローです。
-
must-gather
コマンドを使用してクラスターに関する情報を収集します。 - PPC ツールを使用してパフォーマンスプロファイルを作成します。
- パフォーマンスプロファイルをクラスターに適用します。
18.1.1. PPC 用に Hosted Control Plane クラスターに関するデータを収集する リンクのコピーリンクがクリップボードにコピーされました!
Performance Profile Creator (PPC) ツールには must-gather
データが必要です。クラスター管理者は、must-gather
コマンドを実行し、クラスターに関する情報を取得します。
前提条件
-
管理クラスターへの
cluster-admin
ロールアクセス権がある。 -
OpenShift CLI (
oc
) がインストールされている。
手順
次のコマンドを実行して、管理クラスターの
kubeconfig
ファイルをエクスポートします。export MGMT_KUBECONFIG=<path_to_mgmt_kubeconfig>
$ export MGMT_KUBECONFIG=<path_to_mgmt_kubeconfig>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、すべての namespace のノードプールをすべてリスト表示します。
oc --kubeconfig="$MGMT_KUBECONFIG" get np -A
$ oc --kubeconfig="$MGMT_KUBECONFIG" get np -A
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAMESPACE NAME CLUSTER DESIRED NODES CURRENT NODES AUTOSCALING AUTOREPAIR VERSION UPDATINGVERSION UPDATINGCONFIG MESSAGE clusters democluster-us-east-1a democluster 1 1 False False 4.17.0 False True
NAMESPACE NAME CLUSTER DESIRED NODES CURRENT NODES AUTOSCALING AUTOREPAIR VERSION UPDATINGVERSION UPDATINGCONFIG MESSAGE clusters democluster-us-east-1a democluster 1 1 False False 4.17.0 False True
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
出力には、
NodePool
リソースが定義されている管理クラスター内の namespace であるclusters
が表示されます。 -
NodePool
リソースの名前 (例:democluster-us-east-1a
)。 -
この
NodePool
が属するHostedCluster
。たとえば、democluster
などです。
-
出力には、
管理クラスターで次のコマンドを実行して、利用可能なシークレットをリスト表示します。
oc get secrets -n clusters
$ oc get secrets -n clusters
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、ホステッドクラスターの
kubeconfig
ファイルを抽出します。oc get secret <secret_name> -n <cluster_namespace> -o jsonpath='{.data.kubeconfig}' | base64 -d > hosted-cluster-kubeconfig
$ oc get secret <secret_name> -n <cluster_namespace> -o jsonpath='{.data.kubeconfig}' | base64 -d > hosted-cluster-kubeconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
oc get secret democluster-admin-kubeconfig -n clusters -o jsonpath='{.data.kubeconfig}' | base64 -d > hosted-cluster-kubeconfig
$ oc get secret democluster-admin-kubeconfig -n clusters -o jsonpath='{.data.kubeconfig}' | base64 -d > hosted-cluster-kubeconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ホステッドクラスターの
must-gather
バンドルを作成するために、別のターミナルウィンドウを開き、次のコマンドを実行します。ホステッドクラスターの
kubeconfig
ファイルをエクスポートします。export HC_KUBECONFIG=<path_to_hosted_cluster_kubeconfig>
$ export HC_KUBECONFIG=<path_to_hosted_cluster_kubeconfig>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
export HC_KUBECONFIG=~/hostedcpkube/hosted-cluster-kubeconfig
$ export HC_KUBECONFIG=~/hostedcpkube/hosted-cluster-kubeconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
must-gather
データを保存するディレクトリーに移動します。 ホステッドクラスターのトラブルシューティングデータを収集します。
oc --kubeconfig="$HC_KUBECONFIG" adm must-gather
$ oc --kubeconfig="$HC_KUBECONFIG" adm must-gather
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 作業ディレクトリーに作成された
must-gather
ディレクトリーから圧縮ファイルを作成します。たとえば、Linux オペレーティングシステムを使用するコンピューターで以下のコマンドを実行します。tar -czvf must-gather.tar.gz must-gather.local.1203869488012141147
$ tar -czvf must-gather.tar.gz must-gather.local.1203869488012141147
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.1.2. Podman を使用してホステッドクラスターで Performance Profile Creator を実行する リンクのコピーリンクがクリップボードにコピーされました!
クラスター管理者は、Podman と Performance Profile Creator (PPC) ツールを使用してパフォーマンスプロファイルを作成できます。
PPC の引数の詳細は、「Performance Profile Creator の引数」を参照してください。
PPC ツールは、ホステッドクラスターを認識するように設計されています。ツールは must-gather
データからホステッドクラスターを検出すると、自動的に次の操作を実行します。
- マシン設定プール (MCP) が存在しないことを認識します。
- MCP の代わりに、ノードプールをコンピュートノード設定の信頼できるソースとして使用します。
-
特定のプールを対象とする場合を除き、
node-pool-name
値を明示的に指定する必要はありません。
PPC は、ホステッドクラスターからの must-gather
データを使用して、パフォーマンスプロファイルを作成します。パフォーマンス設定の対象となるノードのラベルを変更するなど、クラスターに変更を加えた場合は、PPC を再度実行する前に、must-gather
データを再作成する必要があります。
前提条件
-
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。 - ホステッドクラスターがインストールされている。
-
Podman と OpenShift CLI (
oc
) がインストールされている。 - Node Tuning Operator イメージにアクセスできる。
-
クラスターの
must-gather
データにアクセスできる。
手順
ホステッドクラスターで、次のコマンドを実行して、Podman を使用して
registry.redhat.io
に認証します。podman login registry.redhat.io
$ podman login registry.redhat.io
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Username: <user_name> Password: <password>
Username: <user_name> Password: <password>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、ホステッドクラスターにパフォーマンスプロファイルを作成します。この例では、サンプルの PPC 引数と値を使用します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、作成された YAML ファイルを確認します。
cat my-hosted-cp-performance-profile
$ cat my-hosted-cp-performance-profile
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.1.3. ホステッドクラスターでの低レイテンシーチューニングの設定 リンクのコピーリンクがクリップボードにコピーされました!
ホステッドクラスター内のノードでパフォーマンスプロファイルを使用して低レイテンシーを設定するには、Node Tuning Operator を使用できます。Hosted Control Plane では、Tuned
オブジェクトを含む config map を作成し、ノードプールでその config map を参照することで、低レイテンシーのチューニングを設定できます。この場合の Tuned オブジェクトは、ノードプール内のノードに適用するパフォーマンスプロファイルを定義する PerformanceProfile
オブジェクトです。
手順
次のコマンドを実行して、管理クラスターの
kubeconfig
ファイルをエクスポートします。export MGMT_KUBECONFIG=<path_to_mgmt_kubeconfig>
$ export MGMT_KUBECONFIG=<path_to_mgmt_kubeconfig>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、管理クラスターに
ConfigMap
オブジェクトを作成します。oc --kubeconfig="$MGMT_KUBECONFIG" apply -f my-hosted-cp-performance-profile.yaml
$ oc --kubeconfig="$MGMT_KUBECONFIG" apply -f my-hosted-cp-performance-profile.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
clusters
namespace のNodePool
オブジェクトを編集します。spec.tuningConfig
フィールドを追加して、作成したパフォーマンスプロファイルの名前をそのフィールドに追加します。oc edit np -n clusters
$ oc edit np -n clusters
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記複数のノードプールで同じプロファイルを参照できます。Hosted Control Plane では、Node Tuning Operator により、
Tuned
カスタムリソースを区別するために、リソースの名前にノードプール名と namespace のハッシュが追加されます。変更を加えると、設定の変更が必要であることがシステムによって検出され、そのプール内のノードのローリング更新が開始し、新しい設定が適用されます。
検証
次のコマンドを実行して、すべての namespace のノードプールをすべてリスト表示します。
oc --kubeconfig="$MGMT_KUBECONFIG" get np -A
$ oc --kubeconfig="$MGMT_KUBECONFIG" get np -A
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAMESPACE NAME CLUSTER DESIRED NODES CURRENT NODES AUTOSCALING AUTOREPAIR VERSION UPDATINGVERSION UPDATINGCONFIG MESSAGE clusters democluster-us-east-1a democluster 1 1 False False 4.17.0 False True
NAMESPACE NAME CLUSTER DESIRED NODES CURRENT NODES AUTOSCALING AUTOREPAIR VERSION UPDATINGVERSION UPDATINGCONFIG MESSAGE clusters democluster-us-east-1a democluster 1 1 False False 4.17.0 False True
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記UPDATINGCONFIG
フィールドは、ノードプールの設定が更新中かどうかを示します。この更新中は、ノードプールのステータスのUPDATINGCONFIG
フィールドがTrue
になります。UPDATINGCONFIG
フィールドがFalse
に戻った場合に限り、新しい設定が完全に適用されたとみなされます。次のコマンドを実行して、
clusters-democluster
namespace 内のすべての config map をリスト表示します。oc --kubeconfig="$MGMT_KUBECONFIG" get cm -n clusters-democluster
$ oc --kubeconfig="$MGMT_KUBECONFIG" get cm -n clusters-democluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この出力には、kubeletconfig
kubeletconfig-performance-democluster-us-east-1a
とパフォーマンスプロファイルperformance-democluster-us-east-1a
が作成されたことが示されています。Node Tuning Operator により、Tuned
オブジェクトがホステッドクラスターに同期されます。どのTuned
オブジェクトが定義されているか、どのプロファイルが各ノードに適用されているかを確認できます。次のコマンドを実行して、管理クラスターで使用可能なシークレットをリスト表示します。
oc get secrets -n clusters
$ oc get secrets -n clusters
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、ホステッドクラスターの
kubeconfig
ファイルを抽出します。oc get secret <secret_name> -n clusters -o jsonpath='{.data.kubeconfig}' | base64 -d > hosted-cluster-kubeconfig
$ oc get secret <secret_name> -n clusters -o jsonpath='{.data.kubeconfig}' | base64 -d > hosted-cluster-kubeconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
oc get secret democluster-admin-kubeconfig -n clusters -o jsonpath='{.data.kubeconfig}' | base64 -d > hosted-cluster-kubeconfig
$ oc get secret democluster-admin-kubeconfig -n clusters -o jsonpath='{.data.kubeconfig}' | base64 -d > hosted-cluster-kubeconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、ホステッドクラスターの kubeconfig をエクスポートします。
export HC_KUBECONFIG=<path_to_hosted-cluster-kubeconfig>
$ export HC_KUBECONFIG=<path_to_hosted-cluster-kubeconfig>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、kubeletconfig がホステッドクラスターにミラーリングされていることを確認します。
oc --kubeconfig="$HC_KUBECONFIG" get cm -n openshift-config-managed | grep kubelet
$ oc --kubeconfig="$HC_KUBECONFIG" get cm -n openshift-config-managed | grep kubelet
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
kubelet-serving-ca 1 79m kubeletconfig-performance-democluster-us-east-1a 1 15m
kubelet-serving-ca 1 79m kubeletconfig-performance-democluster-us-east-1a 1 15m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、ホステッドクラスターに
single-numa-node
ポリシーが設定されていることを確認します。oc --kubeconfig="$HC_KUBECONFIG" get cm kubeletconfig-performance-democluster-us-east-1a -o yaml -n openshift-config-managed | grep single
$ oc --kubeconfig="$HC_KUBECONFIG" get cm kubeletconfig-performance-democluster-us-east-1a -o yaml -n openshift-config-managed | grep single
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
topologyManagerPolicy: single-numa-node
topologyManagerPolicy: single-numa-node
Copy to Clipboard Copied! Toggle word wrap Toggle overflow