preview
This feature is currently in preview.
Compatibility and requirements
Before you install the Kubernetes integration, review the compatibility and requirements.
Important
When using containers in Windows, the container host version and the container image version must be the same. Our Kubernetes integration can run on Windows versions LTSC 2019 (1809), 20H2, and LTSC 2022.
To check your Windows version:
- Open a command window.
- Run the following command:bash$Reg Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v$ReleaseIdcmd.exe
Example: Get Kubernetes for Windows from a BusyBox container
Run this command:
$kubectl exec -it busybox1-766bb4d6cc-rmsnj -- Reg Query$ "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ReleaseId
You should see something like this:
$HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion$ ReleaseId REG_SZ 1809
For a useful mapping between release IDs and OS versions, see here.
Install
You can install the Kubernetes integration for Windows using Helm. See an example on how to install the integration in a cluster with nodes having different build versions of Windows (1809 and 2004):
Add the New Relic Helm charts repo:
bash$helm repo add newrelic https://helm-charts.newrelic.comCreate a namespace for newrelic:
bash$kubectl create namespace newrelicInstall kube-state-metrics.
bash$helm repo add ksm https://kubernetes.github.io/kube-state-metrics$helm install ksm ksm/kube-state-metrics --version 2.13.2
Important
This command is for installing kube-state-metrics, a mandatory dependency of the integration, on a Linux node. We don't support installing this for non-Linux nodes, and if you install it on a non-Linux node, deployment might fail. We recommend using nodeSelector
to choose a Linux node. This can be done by editing kube-state-metrics deployment.
Create a
values.yml
file with the follow data to be used by Helm:global:licenseKey: _YOUR_NEW_RELIC_LICENSE_KEY_cluster: _K8S_CLUSTER_NAME_enableLinux: true # Set to true if your cluster also has linux nodesenableWindows: truewindowsOsList:- version: 2019 # Human-readable version identifierimageTag: 2-windows-1809-alpha # Tag to be used for nodes running the windows version abovebuildNumber: 10.0.17763 # Build number for your nodes running the version above. Used as a selector.- version: 20h2imageTag: 2-windows-20H2-alphabuildNumber: 10.0.19042- version: 2022imageTag: 2-windows-ltsc2022-alphabuildNumber: 10.0.20348Install the integration with:
bash$helm upgrade --install newrelic newrelic/newrelic-infrastructure \>--namespace newrelic --create-namespace \>--version 2.7.2 \>-f values-newrelic.yamlCheck that pods are being deployed and reach a stable state:
bash$kubectl -n newrelic get pods -w
The Helm chart will create one DeamonSet per each version of Windows that is in the list and use NodeSelector to deploy the corresponding Pod per Node.
Did this doc help with your installation?
Limitations
The following limitations apply to the Kubernetes integration for Windows:
- The Windows agent only sends the Kubernetes samples (
K8sNodeSample
,K8sPodSample
, etc.)SystemSample
,StorageSample
,NetworkSample
, andProcessSample
are not generated.
- Some Kubernetes metrics are missing because the Windows kubelet doesn’t have them:
- Node:
fsInodes
: not sentfsInodesFree
: not sentfsInodesUsed
: not sentmemoryMajorPageFaultsPerSecond
: always returns zero as a valuememoryPageFaults
: always returns zero as a valuememoryRssBytes
: always returns zero as a valueruntimeInodes
: not sentruntimeInodesFree
: not sentruntimeInodesUsed
: not sent
- Pod:
net.errorsPerSecond
: not sentnet.rxBytesPerSecond
: not sentnet.txBytesPerSecond
: not sent
- Container:
containerID
: not sentcontainerImageID
: not sentmemoryUsedBytes
: in the UI, this is displayed in the pod card that appears when you click on a pod, and will show no data. We will soon fix this by updating our charts to usememoryWorkingSetBytes
instead.
- Volume:
fsUsedBytes
: zero, sofsUsedPercent
is zero
- Node:
Known issues with the Windows Kubelet
There are a couple of issues with the Windows version of Kubelet that can prevent the integration from fetching data:
- Issue 90554: This issue makes the Kubelet return 500 errors when the integration makes a request to the
/stats/summary
endpoint. It will be included in the Kubernetes 1.19 release and has been backported to the releases 1.16.11, 1.17.7, and 1.18.4. There is no solution on the integration side for this problem, we advise you to update to one of the patch versions as soon as possible. You can see if you're being affected by this problem by enabling verbose logs and looking for messages of the type:
$error querying Kubelet. Get "https://<KUBELET_IP>/stats/summary": error calling kubelet endpoint. Got status code: 500
- Issue 87730: This issue makes the Kubelet metrics very slow when running minimal load. It makes the integration fail with a timeout error. A patch for this issue has been added for Kubernetes 1.18 and backported to 1.15.12, 1.16.9, and 1.17.5. We advise you to update to one of the patch versions as soon as possible. To mitigate this issue you can increase the integration timeout with the
TIMEOUT
config option. You can see if you're being affected by this problem by enabling verbose logs and looking for messages of the type:
$error querying Kubelet. Get "https://<KUBELET_IP>/stats/summary": context deadline exceeded (Client.Timeout exceeded while awaiting headers)