New Relic Kubernetesインテグレーションは、同じクラスタ内のLinuxノードとともにWindowsノードの監視をネイティブにサポートしているため、別のHelmチャートやインストレーションは必要ありません。
Windowsノード監視を有効にして設定する方法を説明します。特権的および非特権的実行モデルとセキュリティに関する考慮事項の詳細については、特権的モードと非特権的モードを参照してください。Windows固有のメトリクスの制限事項については、Windowsの制限事項とトラブルシューティングを参照してください。
前提条件
Windows監視を有効にする前に、クラスタが以下の要件を満たしていることを確認してください。
- Windowsノードの互換性および要件
- Windows Server LTSC 2019(ビルド
10.0.17763)またはLTSC 2022(ビルド10.0.20348)。 - コンテナイメージのバージョンは、WindowsホストOSのバージョンと完全に一致する必要があります。Windows はプロセス分離のみをサポートしており、Hyper-V 分離はサポートしていません。
- Red Hat OpenShiftクラスタで動作するWindowsノードはサポートされていません。
重要
Windowsコンテナは、Windowsバージョンとビルド番号がまったく同じホストでのみ実行できます。インテグレーションは、サポートされているWindowsバージョンごとに1つのDaemonSetを作成し、一致するOSビルドを持つノードにのみポッドをスケジュールします。
お使いのWindowsノードのバージョンを確認する
ノードで実行されているWindowsのバージョンが不明な場合は、ノードのラベルを直接クエリしてください:
$kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.metadata.labels.node\.kubernetes\.io/windows-build}{"\n"}{end}'これにより、インテグレーションのDaemonSet nodeSelectorが照合する、各ノードのnode.kubernetes.io/windows-buildラベルの値が出力されます。ノード自体でsysteminfoを実行し、ビルド番号を照合することもできます:
| Windowsバージョン | ビルド番号 |
|---|---|
| Windows Server LTSC 2019 | 10.0.17763 |
| Windows Server LTSC 2022 | 10.0.20348 |
Windowsの監視を有効にする
Windows監視を有効にするには、values.yamlでenableWindows: trueを設定します。nri-bundleを介してデプロイする場合、これをnewrelic-infrastructureキーの下に渡します:
newrelic-infrastructure: enableWindows: truehelm upgradeを使用して変更を適用します:
$helm upgrade newrelic-bundle newrelic/nri-bundle \> --namespace newrelic \> --reuse-values \> --set newrelic-infrastructure.enableWindows=trueデフォルトでは、Windowsを有効にすると、LTSC 2019とLTSC 2022の両方のDaemonSetが作成されます。これを制限するには、特定のWindowsバージョンの構成を参照してください。
特定のWindowsバージョン用に設定する
windowsOsListキーは、どのWindowsバージョンがDaemonSetを取得するかを制御します。デフォルトでは、両方のサポート対象バージョンが含まれています。クラスタに実際に存在するWindowsバージョンのみに監視を制限するには、values.yamlでオーバーライドします:
newrelic-infrastructure: enableWindows: true windowsOsList: - version: ltsc2022 imageTagSuffix: ltsc2022 buildNumber: 10.0.20348各エントリは個別のDaemonSetを生成します。ポッドは、node.kubernetes.io/windows-buildラベルがbuildNumberフィールドと一致するノードにのみスケジュールされます。これにより、空のDaemonSetがクラスタに表示されるのを防ぎます。
LinuxとWindowsの混在クラスタ
v3では、WindowsおよびLinuxノードは同じnewrelic-infrastructureチャートを使用してモニターされます — v2のように個別のチャートのインストレーションは必要ありません。チャートは以下を自動作成します:
- 〜を備えたLinux DaemonSet
nodeSelector: kubernetes.io/os: linux windowsOsListのエントリごとに1つの Windows DaemonSet、それぞれにnodeSelector: kubernetes.io/os: windowsおよび一致するビルド番号セレクタ
ハイブリッドクラスタ用の最小限のvalues.yaml:
global: licenseKey: YOUR_NEW_RELIC_LICENSE_KEY cluster: YOUR_CLUSTER_NAME
newrelic-infrastructure: enableWindows: true windowsOsList: - version: ltsc2022 imageTagSuffix: ltsc2022 buildNumber: 10.0.20348次を使用してインストールまたはアップグレードします:
$helm upgrade --install newrelic-bundle newrelic/nri-bundle \> --namespace newrelic --create-namespace \> -f values.yaml特権モード
Windowsの監視はデフォルトで特権モードになり、Windows HostProcessコンテナを使用して、CPU、メモリ、ディスク、ネットワークなど、完全なノードレベルのメトリクスを収集します。WindowsノードからSystemSample、StorageSample、およびNetworkSampleデータを受信するために必要です。
重要
GKEがサポートしていないため、GKE上のWindowsノードでは特権モードを利用できません。windows.privileged: falseを非特権モードで実行するように設定します。
代わりに非特権モードで実行するには:
newrelic-infrastructure: enableWindows: true windows: privileged: false非特権モードはホストレベルのメトリクスを無効にしますが、クラスタのセキュリティポリシーによって必要になる場合があります。影響を受けるデータの詳細については、特権モードと非特権モードの比較を参照してください。
インストレーションを確認する
インストールまたはアップグレード後、DaemonSetが作成されたことを確認します:
$kubectl -n newrelic get daemonsetsLinux DaemonSetと並んで、設定したWindowsの各バージョンに対するDaemonSetが表示されるはずです:
$NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR$newrelic-bundle-nrk8s-kubelet 2 2 2 2 2 kubernetes.io/os=linux$newrelic-bundle-nrk8s-kubelet-windows-ltsc2019 0 0 0 0 0 kubernetes.io/os=windows,node.kubernetes.io/windows-build=10.0.17763$newrelic-bundle-nrk8s-kubelet-windows-ltsc2022 1 1 1 1 1 kubernetes.io/os=windows,node.kubernetes.io/windows-build=10.0.20348WindowsバージョンにおけるDESIREDの数が0であることは、そのビルド番号を持つノードがクラスタ内に存在しないことを意味します — これは想定される動作であり、エラーではありません。
Windowsポッドがノードで実行されていることを確認するには:
$kubectl -n newrelic get pods -o wide | grep windows追加設定
ノードセレクターを追加
デフォルトでは、Windows DaemonSetはkubernetes.io/os: windowsを使用してノードを選択します。Windowsノードの特定のサブセットに監視を制限するために、追加のセレクタを追加できます:
kubelet: windowsNodeSelector: kubernetes.io/os: windows node.kubernetes.io/windows-build: "10.0.20348" newrelic.com/monitoring-allowed: "true" # custom label you controlプライベートコンテナレジストリを使用する
デフォルトではなくプライベートレジストリからWindowsイメージをプルするには:
images: windowsIntegration: registry: your-registry.example.com pullPolicy: Always windowsAgent: registry: your-registry.example.com pullPolicy: Always pullSecrets: - name: registry-credentialsリソース制限を設定する
HostProcessコンテナは、Windowsノード上で直接リソースをめぐって競合します。チャートはデフォルトのメモリ上限を設定します。調整するか、CPU制限を設定できます。詳細については、リソース要件を参照してください。
kubelet: resources: requests: cpu: 50m memory: 150Mi limits: memory: 300MiデフォルトではCPU制限は設定されていません。ノードの負荷時に厳格なCPU上限を設けると、スクレイプ間隔を逃すリスクがあるためです。クラスタポリシーで必要な場合は、設定する前にそのトレードオフを比較検討してください。