Metrics Server — source of metrics for kubectl top, HPA, VPA.
Installation:
1kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml23# For self-signed cert4kubectl patch deployment metrics-server -n kube-system --type='json' -p='[5 {"op":"add","path":"/spec/template/spec/containers/0/args/-","value":"--kubelet-insecure-tls"}6]'
Verification:
1kubectl top nodes2kubectl top pods --sort-by=memory3kubectl top pods -n production --containers45# Raw metrics API6kubectl get --raw "/apis/metrics.k8s.io/v1beta1/pods" | jq7kubectl get --raw "/apis/metrics.k8s.io/v1beta1/nodes" | jq
Metrics Server vs Prometheus:
HPA with custom metrics:
1apiVersion: autoscaling/v22kind: HorizontalPodAutoscaler3spec:4 metrics:5 - type: Pods6 pods:7 metric:8 name: http_requests_per_second9 target:10 type: AverageValue11 averageValue: "100"12 - type: Object13 object:14 describedObject:15 apiVersion: networking.k8s.io/v116 kind: Ingress17 name: myapp18 metric:19 name: requests-per-second20 target:21 type: Value22 value: "1k"
Prometheus Adapter — bridge between Prometheus and K8s custom metrics API.