Skip to content

Metrics Server Installation

Metrics Server is a cluster-wide resource usage aggregator required for monitoring and automation tasks within Kubernetes.^[400-devops-06-kubernetes-k8s-ithelp-day24-readme.md] While Kubernetes does not include this functionality by default, Metrics Server collects data from kubelet to provide Metrics for nodes and [[Pods]] via the API.^[400-devops-06-kubernetes-k8s-ithelp-day24-readme.md]

Overview

Metrics Server serves as the primary source of resource data for core Kubernetes workflows.^[400-devops-06-kubernetes-k8s-ithelp-day24-readme.md] It operates by deploying kube-aggregator to the API Server, collecting Metrics (such as CPU and Memory) from nodes, and storing them in memory.^[400-devops-06-kubernetes-k8s-ithelp-day24-readme.md] Because data is stored only in memory, historical data is lost if the server restarts.^[400-devops-06-kubernetes-k8s-ithelp-day24-readme.md]

Installation

To install Metrics Server, resources such as ServiceAccount, ClusterRole, ClusterRoleBinding, Service, Deployment, and APIService must be deployed to the kube-system namespace.^[400-devops-06-kubernetes-k8s-ithelp-day24-readme.md]

Local Configuration

When setting up Metrics Server in a local environment, such as with Docker Desktop, the container arguments must be configured to skip TLS verification.^[400-devops-06-kubernetes-k8s-ithelp-day24-readme.md] Specifically, the argument --kubelet-insecure-tls should be added to the deployment container spec to disable certificate verification, as local development environments typically lack the required Certificate Authority (CA).^[400-devops-06-kubernetes-k8s-ithelp-day24-readme.md]

Applying Manifests

The installation is performed by applying the configuration manifest:

[kubectl](<./kubectl.md>) apply -f ./components.yaml

A successful installation creates the necessary service accounts, roles, and the Metrics Server deployment.^[400-devops-06-kubernetes-k8s-ithelp-day24-readme.md] You can verify the deployment is running by checking the pods in the kube-system namespace^[400-devops-06-kubernetes-k8s-ithelp-day24-readme.md]:

[kubectl get pods](<./kubectl-get-pods.md>) -n kube-system | grep metrics-server

Verifying Metrics

Once installed, Metrics Server enables the use of kubectl top to display current resource usage.^[400-devops-06-kubernetes-k8s-ithelp-day24-readme.md]

  • Node Usage: To view CPU and Memory utilization for all nodes^[400-devops-06-kubernetes-k8s-ithelp-day24-readme.md]:
    [kubectl](<./kubectl.md>) top node
    
  • Pod Usage: To view Metrics for specific pods, typically within the kube-system namespace^[400-devops-06-kubernetes-k8s-ithelp-day24-readme.md]:
    [kubectl](<./kubectl.md>) top pods -n kube-system
    

Sources

^[400-devops-06-kubernetes-k8s-ithelp-day24-readme.md]