• /
  • ログイン
  • 無料アカウント

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エージェントをデーモンセットとして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. デーモンセットを作成する:

    kubectl create -f newrelic-infrastructure-k8s-latest.yaml
  7. このコマンドの出力結果でnewrelic-infraを見つけて、デーモンセットの作成が正常に完了したことを確認します:

    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インテグレーションをすでに実行中で、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. 次のコマンドで最新のデーモンセットをインストールします(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.