Kubernetesインテグレーション バージョン 2 には、バージョン 3 とは異なる設定と要件がいくつかあります。 このドキュメントでは、バージョン 3 とは異なる設定と、バージョン 2 に必要な設定について説明します。特に指定がない場合は、バージョン 3 の設定を使用できます。
注意
バージョン 2 は置き換えられたため、使用しないでください。 このドキュメントは、バージョン 2 をまだ使用しているユーザーのために維持されています。
現在のバージョンの の使用を開始するには 、 インテグレーションの概要」KubernetesKubernetes を参照してください。
バージョン 3 の変更点を理解するには、 Kubernetesインテグレーション バージョン 3 のドキュメントに導入された変更点を参照してください。
統合されたコントロールプレーンの監視 バージョン2
ここでは、バージョン2以前のインテグレーションでコントロールプレーンモニタリングを設定する方法について説明します。
これらのバージョンでは自動検出オプションの柔軟性が低く、外部エンドポイントをサポートしていないことに注意してください。 できるだけ早くバージョン 3にアップデートすることを強くお勧めします。
自動検出とデフォルト設定: hostNetwork
および privileged
v3より前のバージョンでは、統合がprivileged: false
を使用してデプロイされると、コントロールプレーンコンポーネントのhostNetwork
設定もfalse
に設定されます。
マスターノードとコントロールプレーンコンポーネントの発見
Kubernetesインテグレーションは、 kubeadm
ラベル付け規則に基づいてマスター ノードとコントロール プレーン コンポーネントを検出します。 つまり、マスターノードにはnode-role.kubernetes.io/master=""
またはkubernetes.io/role="master"
ラベルを付ける必要があるということです。
コントロール プレーン コンポーネントには、 k8s-app
またはtier
とcomponent
ラベルのいずれかが必要です。 許容されるラベルの組み合わせと値については、次の表を参照してください。
コンポーネント | ラベル | 終点 |
---|---|---|
APIサーバー | Kubeadm / Kops / ClusterAPI
OpenShift
|
|
etcd | Kubeadm / Kops / ClusterAPI
OpenShift
|
|
スケジューラー | Kubeadm / Kops / ClusterAPI
OpenShift
|
|
コントローラーマネージャー | Kubeadm / Kops / ClusterAPI
OpenShift
|
|
インテグレーションは、マスター ノード内で実行されていることを検出すると、上の表にリストされているラベルに一致するポッドを探して、ノード上で実行されているコンポーネントを見つけようとします。 実行中のコンポーネントごとに、統合はメトリクス エンドポイントにリクエストを作成します。
構成
マスターノード内で動作するエージェントは、コントロールプレーンの監視が自動的に行われます。クライアントのリクエストに相互TLS認証(mTLS)を使用しているため、実行に余分な手順が必要なコンポーネントはetdのみです。APIサーバーは、 Secure Port を使って問い合わせを行うように設定することもできます。
重要
OpenShift 4.x のコントロールプレーン監視には、追加の設定が必要です。詳細については、 OpenShift 4.x Configuration のセクションを参照してください。
etcd
etcd をクエリするために mTLS を設定するには、次の 2 つの構成オプションを設定する必要があります。
オプション | 価値 |
---|---|
| mTLSの設定を含むKubernetesのシークレットの名前。 シークレットには以下のキーを入れてください。
|
|
|
APIサーバー
デフォルトでは、APIサーバーの指標はlocalhost:8080
のセキュリティで保護されていないエンドポイントを使用してクエリされます。このポートが無効になっている場合は、セキュアポートを介してこれらのメトリックを照会することもできます。これを有効にするには、Kubernetes統合マニフェストファイルで次の設定オプションを設定します。
オプション | 価値 |
---|---|
| メトリックをクエリするための(安全な)URL。 APIサーバーはデフォルトで
バージョン1.15.0で追加 |
重要
なお、このポートは、APIサーバーが使用するセキュアポートに応じて異なる場合があります。
たとえば、MinikubeではAPIサーバーのセキュアポートは8443であるため、 API_SERVER_ENDPOINT_URL
は次のように設定する必要があります。 https://localhost:8443
OpenShiftの設定
OpenShift 4.x のコントロール プレーン コンポーネントは、SSL とサービス アカウント ベースの認証を必要とするエンドポイント URL を使用します。 したがって、 デフォルトのエンドポイント URL は使用できません。
重要
Helmを介してopenshift
をインストールする場合は、これらのエンドポイントを自動的に含めるように構成を指定してください。 openshift.enabled=true
とopenshift.version="4.x"
を設定すると、セキュアエンドポイントが含まれ、 /var/run/crio.sock
ランタイムが有効になります。
OpenShift でコントロール プレーンの監視を構成するには、カスタマイズされたマニフェストで次の環境変数のコメントを解除します。 URL 値は、 OpenShift 4.x のコントロール プレーン監視メトリクス エンドポイントのデフォルトのベース URL に事前設定されています。
- name: "SCHEDULER_ENDPOINT_URL" value: "https://localhost:10259 - name: "ETCD_ENDPOINT_URL" value: "https://localhost:9979" - name: "CONTROLLER_MANAGER_ENDPOINT_URL" value: "https://localhost:10257" - name: "API_SERVER_ENDPOINT_URL" value: "https://localhost:6443"
重要
カスタムETCD_ENDPOINT_URL
が定義されている場合でも、etcd では HTTPS および mTLS 認証を構成する必要があります。 OpenShift で etcd 用に mTLS を構成する方法の詳細については、 「OpenShift で etcd 用に mTLS を設定する」を参照してください。
Kubernetesのログ
詳細なログを生成し、バージョンと設定情報を取得したい場合は、以下の情報を確認してください。
Kubernetesで実行されているサービスを監視する
Kubernetes のモニタリング サービスは 、インフラストラクチャ エージェントとオンホスト統合 、および自動検出メカニズムを活用して、指定されたセレクターを持つポッドをポイントすることで機能します。
方法については、 「Helm Chart を使用してサービスの監視を有効にする」ドキュメントを参照してください。 バージョン 2 のこの例を確認してください。これは、 Redisインテグレーションの yaml
構成が nri-bundle
チャートの values.yml
ファイルに追加されたことを示しています。
newrelic-infrastructure: integrations_config: - name: nri-redis.yaml data: discovery: command: # Run NRI Discovery for Kubernetes # https://github.com/newrelic/nri-discovery-kubernetes exec: /var/db/newrelic-infra/nri-discovery-kubernetes --tls --port 10250 match: label.app: redis integrations: - name: nri-redis env: # using the discovered IP as the hostname address HOSTNAME: ${discovery.ip} PORT: 6379 labels: env: test
サービスYAMLをKubernetes統合構成に追加します
Kubernetesインテグレーション バージョン 2 を使用している場合は、ConfigMap 内のすべてのファイルが /etc/newrelic-infra/integrations.d/
にマウントされるように、DaemonSet の spec
の volumes
および volumeMounts
セクションにこの ConfigMap のエントリを追加する必要があります。