New Relic Metrics Adapter をデプロイすることで、New Relic アカウントからのメトリクスを使用して、Kubernetes クラスタ内のアプリケーションやサービスをオートスケールすることができます。このアダプターは、New Relic からメトリック値をフェッチし、 Horizontal Pod Autoscalers で利用できるようにします。
newrelic-k8s-metrics-adapter は、 New Relic NRQL クエリ結果に基づいた外部メトリクスの使用をサポートするexternal.metrics.k8s.io API を実装します。デプロイ後、構成された各メトリックの値は、構成された NRQL クエリに基づいて NerdGraph API を使用してフェッチされます。
メトリクス・アダプタは、TLSによるセキュアなエンドポイントを介してメトリクスを公開します。
クラスター内のNew Relicメトリクスアダプター。
要件
- サポートされているバージョンを実行している Kubernetes クラスター。*New Relic Kubernetes の統合。
- New Relic Kubernetes の統合 。
- New Relic の ユーザー API キー 。
- クラスタに他のExternal Metrics Adapterがインストールされていないこと。
インストール
New Relic Metrics Adapterをインストールするには、 newrelic-k8s-metrics-adapter Helmチャートを提供します。これは、すべてのNewRelicKubernetesコンポーネントのデプロイに使用されるnri-bundleチャートにも含まれています。
まだインストールされていない場合は、 Kubernetesインテグレーションをインストールしてください。
以下のコマンドでNew Relic Metrics Adapterを含むインストールにアップグレードします。
bash$helm upgrade --install newrelic newrelic/nri-bundle \>--namespace newrelic --create-namespace --reuse-values \>--set metrics-adapter.enabled=true \>--set newrelic-k8s-metrics-adapter.personalAPIKey=YOUR_NEW_RELIC_PERSONAL_API_KEY \>--set newrelic-k8s-metrics-adapter.config.accountID=YOUR_NEW_RELIC_ACCOUNT_ID \>--set newrelic-k8s-metrics-adapter.config.externalMetrics.external_metric_name.query=NRQL query
以下のフラグに注意して調整してください。
metrics-adapter.enabled:メトリックアダプタチャートをインストールするには、trueに設定する必要があります。newrelic-k8s-metrics-adapter.personalAPIKey: 有効な New Relic Personal API キーに設定する必要があります。newrelic-k8s-metrics-adapter.config.accountID:メトリックがフェッチされる有効なNewRelicアカウントに設定する必要があります。newrelic-k8s-metrics-adapter.config.externalMetrics.external_metric_name.query:新しい外部メトリックを追加します。ここで:external_metric_name:メトリック名。query:メトリックの値を取得するために使用されるベースNRQLクエリ。
ヒント
または、 --valuesフラグを指定してhelmコマンドに渡すことができるvalues.yamlファイルを使用することもできます。値ファイルには、構成セクションで説明されているメトリックを構成するために必要なすべてのパラメーターを含めることができます。
構成
メトリクスアダプターで複数のメトリクスを構成し、いくつかのパラメーターを変更して、メトリクスのキャッシュとフィルタリングの動作を変更できます。変更可能なすべてのパラメーターの完全なリストと説明を確認するには、チャートのREADME.mdファイルとvalues.yamlファイルを参照してください。
使い方
次の例は、 nri-bundleチャートのインストールでメトリクスアダプターを有効にし、 nginx_average_requestsメトリクスを構成するHelm値ファイルです。
newrelic-k8s-metrics-adapter: enabled: true personalAPIKey: <Personal API Key> config: accountID: <Account ID> externalMetrics: nginx_average_requests: query: "FROM Metric SELECT average(nginx.server.net.requestsPerSecond) SINCE 2 MINUTES AGO"注意
メトリックのデフォルトの期間は1時間です。したがって、環境とニーズに応じて期間を調整するには、 SINCE句を使用してクエリを定義する必要があります。
次のような外部メトリックを消費するHPAがあります。
kind: HorizontalPodAutoscalerapiVersion: autoscaling/v2metadata: name: nginx-scalerspec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: nginx minReplicas: 1 maxReplicas: 10 metrics: - type: External external: metric: name: nginx_average_requests selector: matchLabels: k8s.namespaceName: nginx target: type: Value value: 10000HPAの定義に基づいて、コントローラ・マネージャは外部のメトリクスAPIからメトリクスをフェッチし、New Relicメトリクス・アダプタによって提供されます。
New Relicメトリクスアダプターは、 nginx_average_requestsメトリクス名とすべてのセレクターを含むクエリを受信し、構成されたメトリクスに基づいて内部メモリで一致するメトリクス名を検索します。次に、セレクターをクエリに追加して、NerdGraphを使用して実行される最終的なクエリを作成し、NewRelicから値をフェッチします。上記の例では、次のようなクエリが生成されます。
FROM Metric SELECT average(nginx.server.net.requestsPerSecond) WHERE clusterName=CLUSTER_NAME AND `k8s.namespaceName`='nginx' SINCE 2 MINUTES AGO同じアカウント内の他のクラスターからメトリックを除外するために、 clusterNameフィルターがクエリに自動的に追加されていることに注意してください。 removeClusterFilter構成パラメーターを使用して削除できます。また、値はcacheTTLSeconds構成パラメーターで定義された期間キャッシュされます。デフォルトは30秒です。