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-systemnamespace^[400-devops-06-kubernetes-k8s-ithelp-day24-readme.md]:[kubectl](<./kubectl.md>) top pods -n kube-system
Related Concepts¶
- [[AutoScaling]]
- Kubernetes
Sources¶
^[400-devops-06-kubernetes-k8s-ithelp-day24-readme.md]