메트릭 서버(Metric Server) 설치에 관한 오류들…
다양한 메트릭 서버 설치에 관한 오류들을 알아보자.
kubectl top node Error from server (ServiceUnavailable): the server is currently unable to handle the request (get nodes.metrics.k8s.io)
1 2 |
$ kubectl top pod Error from server (ServiceUnavailable): the server is currently unable to handle the request (get pods.metrics.k8s.io) |
메트릭 서버(Metric Server) 의 파드(Pod)가 정상적으로 Running 상태라 하더라도 이와같은 오류 메시지를 만날 수 있다. 이 오류는 kube-apiserver 의 로그에 다음과 같이 관련 오류가 나온다.
1 |
Apr 23 15:49:33 kmaster1.systemv.local kube-apiserver[4598]: E0423 15:49:33.330967 4598 available_controller.go:508] v1beta1.metrics.k8s.io failed with: Operation cannot be fulfilled on apiservices.apir>Apr 23 15:49:38 kmaster1.systemv.local kube-apiserver[4598]: E0423 15:49:38.332227 4598 available_controller.go:508] v1beta1.metrics.k8s.io failed with: failing or missing response from https://10.32.0.>Apr 23 15:49:43 kmaster1.systemv.local kube-apiserver[4598]: E0423 15:49:43.333609 4598 available_controller.go:508] v1beta1.metrics.k8s.io failed with: failing or missing response from https://10.32.0. |
뒤쪽에 삭제된 부분은 “net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)” 이다. 응답커넥션을 맺다가 안되서 timeout 으로 끝난 것이다.
이것은 kube-apiserver 다음의 커맨드 파라메터를 추가해줘야 한다.
- –enable-aggregator-routing=true
메트릭 서버의 0.4.3 버전부터는 쿠버네티스의 Aggregator Layer 를 이용한다. API 서버가 실행중인 호스트에 kube-proxy 가 없을 경우에 위 파라메터를 추가해줘야 한다.
워커 노드 메트릭 수집 안됨
1 2 3 4 5 |
$ kubectl top nodes NAME CPU(cores) CPU% MEMORY(bytes) MEMORY% kworker1.systemv.local <unknown> <unknown> <unknown> <unknown> kworker2.systemv.local <unknown> <unknown> <unknown> <unknown> kworker3.systemv.local <unknown> <unknown> <unknown> <unknown> |
쿠버네티스의 Deployments.apps 리소스에 배포된 Metric Server 메니페스트를 다음과 같이 수정해 줘야 한다.
1 2 3 4 |
$ kubectl edit deployment.apps/metrics-server -n kube-system dnsPolicy: ClusterFirst hostNetwork: true nodeSelector: |
hostNetwork: true 를 추가해줘야 한다.