New Relic Integration for Kubernetes 1.21.0

Released on: 
May 22, 2020

The Kubernetes integration v1.21.0 brings several changes related to node allocatable resources.

Changes to the cluster explorer

We added support for allocatable resources to the Kubernetes cluster explorer:

  • The cluster explorer entity list now calculates CPU usage by summing the allocatableCpuCores from the K8sNodeSample instead of using processorCount from SystemSample. Similarly, memory usage is now calculated by summing allocatableMemoryBytes instead of memoryTotalBytes. Pods' columns now refer to running pods vs. allocatable pods.
    New Relic One - Cluster explorer - Entity list
  • In addition to resource consumption, the node's tooltip in the cluster explorer now shows the amount of allocatable pods used by the node.
    New Relic One - Cluster explorer - Node Tooltip
  • The node card, which appears when clicking a node in cluster explorer, now shows resource consumption (CPU, memory, and storage) against the allocatable resources.
    • CPU usage aggregates cpuUsedCores, cpuRequestedCores, and cpuLimitCores from K8sContainerSample, and allocatableCpuCores from the K8sNodeSample.
    • Memory usage aggregates memoryWorkingSetBytes, memoryRequestedBytes, and memoryLimitBytes from K8sContainerSample, and allocatableMemoryBytes from K8sNodeSample.
    • Storage usage relies on fsUsedBytes and fsCapacityBytes fromK8sNodeSample.
  • A new pods widget has been added to the node card that shows the amount of pods used against the total allocatable pods of the node.
    New Relic One - Pods usage in node card

If you run the unprivileged version of the Kubernetes integration, you can now see the node metrics. Previously, this was only possible with the privileged version.

Changes to the cluster dashboard

The cluster explorer dashboard, which appears when clicking Kubernetes dashboard, has been updated to account for resource consumption against allocatable resources.

  • CPU widgets displays cpuUsedCores and allocatableCpuCores from K8sNodeSample. As for Memory usage, it now shows memoryWorkingSetBytes and allocatableMemoryBytes.
  • Disk widgets use fsUsedBytes and fsCapacityBytes from K8sNodeSample.
  • A new pods widget has been added that shows the amount of pods used against the total allocatable pods of the cluster.
New Relic One - Cluster explorer - Dashboard detail

Changes to Kubernetes metrics

  • Node allocatable resources and capacity are retrieved from the API server and added to the K8sNodeSample as capacity<ResourceName> and allocatable<ResourceName>.
  • The Kubernetes server version is now retrieved from the API server and cached with the APIServerCacheK8SVersionTTL config option. The version is added to K8sClusterSample as clusterK8sVersion, and to the inventory.
  • Add support for static pods status for Kubernetes server versions 1.15 or newer.
  • In older versions of Kubernetes, the kubeletes wouldn’t sync the status of the static pods with the API server and would always return a Pending status. This behavior was fixed in v1.15 of Kubernetes. Our integration now detects what version of Kubernetes the cluster is running and, if it’s 1.15 or newer, it adds the status of the static pods in K8sPodSample.

Other changes