• /
  • ログイン

Kubernetesインテグレーション: インストールおよび設定

Kubernetesインテグレーションをインストールする最も近道は、自動化されたインストーラを使用してマニフェストを生成することです。生成されたマニフェストは、インテグレーションDaemonSetsのみならず、KubernetesイベントPrometheus OpenMetricsNew Relicログモニタリングなど、その他のNew Relic Kubernetes製品の設定もバンドルします。

ヒント

Kubernetesインテグレーションとinfrastructureモニタリング、およびその他のオブザーバビリティプラットフォームを使用するには、New Relicファミリーに参加してください。サインアップして、わずか数秒で無料アカウントを作成できます。次に、毎月最大で100GBのデータを無料で取り込みます。期間無制限です。

自動インストーラの使用

サーバー、VM、特権のない環境で、自動化されたインストーラを使用できます。インストーラを使用して、いくつかの予備メモを見直した後に、マネージドサービスまたはプラットフォームも使用できます。カスタムマニフェストが必要な場合や、手動で特権のないインストールをする場合には、別の手順もあります。

インストーラの起動

New RelicアカウントがEU地域にある場合は、one.eu.newrelic.comからインストーラにアクセスします。

マネージドサービスとプラットフォーム向けのインストール

自動化されたインストーラを起動する前に、次のマネージドサービスまたはプラットフォーム向けのメモを確認してください。

カスタムマニフェスト

Kubernetesの自動化されたインストーラに必要な設定がない場合は、マニフェストテンプレートをダウンロードし、インテグレーションに手動でインストールできます。

Kubernetes インテグレーションをアクティブ化するには、newrelic-infraエージェントをDaemonSetとしてKubernetesクラスタにデプロイする必要があります。

  1. kube-state-metricsをインストールして、クラスタで実行します。例:

    curl -L -o kube-state-metrics-1.9.5.zip https://github.com/kubernetes/kube-state-metrics/archive/v1.9.5.zip && unzip kube-state-metrics-1.9.5.zip && kubectl apply -f kube-state-metrics-1.9.5/examples/standard
  2. マニフェストファイルのダウンロード:

    curl -O https://download.newrelic.com/infrastructure_agent/integrations/kubernetes/newrelic-infrastructure-k8s-latest.yaml
  3. マニフェストのDaemonSet部分に、New Relicライセンスキーとクラスタ名を追加し、Kubernetesクラスタを特定します。両方の値が必要です。

    • 推奨: マニフェストのNRIA_PASSTHROUGH_ENVIRONMENTまたはNRIA_DISPLAY_NAMEの値は変更しないでください。
    • YOUR_CLUSTER_NAMEは、New RelicエクスプローラーのクラスターのIDです。環境で実行されているクラスターの名前と一致する必要はありません。
    • YAMLキーパス: spec.template.spec.containers.name.env
    env:
      - name: NRIA_LICENSE_KEY
        value: YOUR_LICENSE_KEY
      - name: CLUSTER_NAME
        value: YOUR_CLUSTER_NAME
  4. マニフェストを環境に合わせる必要がある場合、本ドキュメントの設定セクションを確認してください。

  5. kube-state-metricsがインストールされていることを確認します。

    kubectl get pods --all-namespaces | grep kube-state-metrics
  6. DaemonSetの作成:

    kubectl create -f newrelic-infrastructure-k8s-latest.yaml
  7. このコマンドの出力結果で、newrelic-infraを見つけて、DaemonSetが正常に作成されたことを確認します。

    kubectl get daemonsets

インテグレーションが動作していることの確認: 数分待ってから、New Relic Kubernetesクラスタエクスプローラーでデータを検索します。

データが見つからない場合は、設定手順をもう一度確認して、トラブルシューティング手順に従ってください。

重要

今後、Kubernetesオブジェクトで収集されるラベル数は、オブジェクトタイプ(コンテナ、ポッド、ノード等)ごとに制限されます。オブジェクトのラベル数が制限を超えると、New Relicに常に送信する必要がある重要なラベルを設定できるようになります。制限が実施されると、このドキュメンテーションはアップデートされます。

NewRelicポッドをスケジュールできることを確認します。

一部のNewRelicポッドは、マニフェストファイルでDaemonSetとして設定されているため、すべてのホストで実行できます。これらには、newrelic-infrastructurenewrelic-loggingが含まれます。まれに、他のポッドが最初にスケジュールされ、New Relicポッドのリソースが不足する場合があります。これらの各ポッドは特定のホストで実行する必要があるため、他のホストが使用可能であっても、そのホストに十分なリソースが確保されるまで、ポッドは保留状態のままになります。これは最終的に長期間発生する可能性があるため、レポートにギャップが生じる場合があります。

この状況を防ぐために、Kubernetesスケジューラーを設定して、New Relicポッドの優先度を高くすることができます。デフォルトスケジューラーの使用:

  1. kube-schedulerフラグdisablePreemptiontrueに設定されていないことを確認します(デフォルトでは falseです)。

  2. New Relic DaemonSetポッド用のPriorityClassを作成します。

    • 適切な優先度の値を設定します。通常、この値は他のポッドよりも高くする必要があります。
    • デフォルトでは、preemptionPolicyPreemptLowerPriorityに設定されます。これにより、この優先度クラスが割り当てられたNew Relicポッドは、リソースを消費する優先度の低いポッドを削除できます。
  3. マニフェストファイルを編集して、priorityClassNameを任意のDaemonSet仕様に追加します。以下の例では、強調表示された行がnewrelic-infrastructureの優先度クラスを設定しています。

    apiVersion: apps/v1
    kind: DaemonSet
    metadata:
      namespace: default
      labels:
        app: newrelic-infrastructure
        chart: newrelic-infrastructure-1.0.0
        release: nri-bundle
        mode: privileged
      name: nri-bundle-newrelic-infrastructure
    spec:
      priorityClassName: your-priority-class
      ...
  4. New Relicポッドをすでにデプロイしている場合は、それらを再デプロイして、作成されていることを確認します。

    kubectl delete -f newrelic-infrastructure-k8s-latest.yaml
    kubectl create -f newrelic-infrastructure-k8s-latest.yaml
    kubectl get daemonsets

Kubernetesインテグレーションの特権なしインストール

セキュリティ要件が非常に厳しいプラットフォームには、Kubernetesインテグレーションの特権なしバージョンを提供しています。標準のKubernetesインテグレーションからの変更点は、次のとおりです。

  • rootではなく標準ユーザーとして、InfrastructureエージェントとKubernetesインテグレーションを実行
  • 基盤となるホストファイルシステムにアクセスせず
  • /var/run/docker.sockにアクセスせず
  • コンテナのrootファイルシステムは読み取り専用でマウント
  • allowPrivilegeEscalationfalseに設定
  • hostnetworkfalseに設定

トレードオフとして、ソリューションはKubernetesからのメトリクスのみを収集しますが、基盤となるホストから直接メトリックは収集しません。Kubernetesはノード(ホスト)についてデータ(メトリックスおよびメタデータ)を提供します。

ヒント

オプション: 基盤となるホストメトリクスを収集するため、コンテナ化されていないInfrastructureエージェントを基盤となるホストにデプロイできます。Infrastructureエージェントはすでに、root以外での実行をサポートしています。非特権バージョンでのKubernetesインテグレーションとホストで実行されるエージェントを組み合わせると、Kubernetes監視のための標準のソリューションが受信するすべてのメトリックスがレポートされます。

インテグレーションの設定

Kubernetesインテグレーションには、ほとんどの環境で動作するデフォルト設定が付随しています。設定を変更するには、マニフェストファイルを変更します。

考慮する追加設定は、次のとおりです。

Infrastructureエージェントの設定

Kubernetesインテグレーションイメージは、必要に応じて変更できるエージェントのデフォルト設定がされています。マニフェストでインストールする場合は、マニフェストを編集し、newrelic-infrastructure DaemonSetの環境変数としてとして、必要なエージェントの設定オプションを追加することで、infrastructureエージェント設定を変更できます。

Helmでインストールする場合は、GitHubの例に示されているようにvalues.yamlで必要なinfrastructureエージェント設定オプションを指定できます。

configオブジェクトを使用して、configMapを入力します。これは、newrelic-infrastructure DaemonSetによって作成されたポッド内のinfrastructureエージェント設定ファイルの場所に自動的に組み込まれます。

最新バージョンにアップデート

自動インストーラの使用

自動インストーラでインストールされたKubernetesインテグレーションを更新するには、再度インストーラを実行するだけです。常に、インテグレーションの最新リリースバージョンを示すマニフェストが提供されます。

Helmの使用

Helmを使用してKubernetesインテグレーションをインストールを参照

カスタムマニフェスト

Kubernetesインテグレーションをすでに実行中で、newrelic-infraエージェントを最新のエージェントバージョンに更新する場合は、次の手順を実行します。

  1. このNRQLクエリを実行し、現在実行中のバージョンをチェックします(これにより、クラスタごとの画像名が返されます)。

    SELECT latest(containerImage)  FROM K8sContainerSample 
    WHERE containerImage LIKE '%newrelic/infrastructure%' FACET clusterName SINCE 1 day ago

    インテグレーションのコンテナ画像にnewrelic/infrastructure以外の名前を設定している場合、上記のクエリでは結果が得られません。結果を得るには、クエリの名前を編集してください。

  2. インテグレーションのマニフェストファイルのダウンロード:

    curl -O https://download.newrelic.com/infrastructure_agent/integrations/kubernetes/newrelic-infrastructure-k8s-latest.yaml
  3. マニフェストの変更をコピーします。少なくともCLUSTER_NAMENRIA_LICENSE_KEYを含めて、ダウンロードしたマニフェストに変更をペーストします。

  4. 次のコマンドで最新のDaemonSetをインストールします(Kubernetes は、インテグレーションのポッドの段階的アップグレードを自動的に行います)。

    kubectl apply -f newrelic-infrastructure-k8s-latest.yaml

Kubernetesインテグレーションのアンインストール

以下の手順に従い、Kubernetesインテグレーションをインストールします。

  1. newrelic-infrastructure-k8s-latest.yamlが、保存したマニフェストのファイル名に対応していることを確認します。

    例: 特権なしバージョンのインテグレーションを使用している場合、デフォルトのファイル名はnewrelic-infrastructure-k8s-unprivileged-latest.yamlとなります。

  2. ファイル名を確認した後、以下のコマンドを使用します。

    kubectl delete -f newrelic-infrastructure-k8s-latest.yaml

クラスタ内のノード数にかかわらず、このコマンドを1回実行すれば十分です。

その他のヘルプ

さらに支援が必要な場合は、これらのサポートと学習リソースを確認してください:

問題を作成するこのページを編集する
Copyright © 2020 New Relic Inc.