[k8s] kind metrics-server 설치
metrics-server는 HPA, VPA 등의 Autoscale을 위한 메트릭 수집 서버다. 각 노드의 kubelet을 이용해 node, pod의 CPU, memory 메트릭을 수집하며, 이를 kube-apiserver로 전달한다.
kind로 만든 클러스터에 metrics-server를 helm으로 설치해보자. 간단한 설치 및 사용법은 이전 글을 참고하자
YAML manifest 또는 공식 helm chart로 설치할 수 있다
helm을 이용한 설치
- metrics-server helm chart: https://artifacthub.io/packages/helm/metrics-server/metrics-server
먼저 위와 같이 override.yaml
파일을 만든다.
helm upgrade --install -f override.yaml metrics-server metrics-server/metrics-server
그 다음, 위 명령어로 설치한다
│ I0402 14:20:49.579928 1 server.go:187] "Failed probe" probe="metric-storage-ready" err="no metrics to serve" │
│ I0402 14:20:59.577760 1 server.go:187] "Failed probe" probe="metric-storage-ready" err="no metrics to serve" │
│ I0402 14:21:03.773956 1 server.go:187] "Failed probe" probe="metric-storage-ready" err="no metrics to serve" │
│ E0402 14:21:04.332255 1 scraper.go:140] "Failed to scrape node" err="Get \"https://172.18.0.3:10250/metrics/resource\": x509: cannot validate certificate │
│ E0402 14:21:04.333295 1 scraper.go:140] "Failed to scrape node" err="Get \"https://172.18.0.4:10250/metrics/resource\": x509: cannot validate certificate │
│ E0402 14:21:04.334167 1 scraper.go:140] "Failed to scrape node" err="Get \"https://172.18.0.2:10250/metrics/resource\": x509: cannot validate certificate │
args를 넣지 않으면 위처럼 인증서 관련 오류가 나오기 때문에 넣어줘야 한다.
설치가 완료되면 메트릭 API를 사용할 수 있다.
Usages
ex) k9s pulse
❯ kubectl get --raw "/apis/metrics.k8s.io/v1beta1/nodes/kind-worker" | jq '.'
{
"kind": "NodeMetrics",
"apiVersion": "metrics.k8s.io/v1beta1",
"metadata": {
"name": "kind-worker",
"creationTimestamp": "2023-04-02T15:04:01Z",
"labels": {
"beta.kubernetes.io/arch": "arm64",
"beta.kubernetes.io/os": "linux",
"kubernetes.io/arch": "arm64",
"kubernetes.io/hostname": "kind-worker",
"kubernetes.io/os": "linux"
}
},
"timestamp": "2023-04-02T15:03:55Z",
"window": "20.039s",
"usage": {
"cpu": "46553820n",
"memory": "113716Ki"
}
}
ex) /apis/metrics.k8s.io/v1beta1/...
❯ k top nodes
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
kind-control-plane 335m 6% 550Mi 7%
kind-worker 54m 1% 110Mi 1%
kind-worker2 61m 1% 128Mi 1%
ex) kubectl top nodes