※ 다음 실습은 kubernetes v1.17.3에서 테스트하였습니다.
메트릭스 서버는 쿠버네티스에서 리소스 메트릭 파이프라인을 구성하는 가장 기본적인 방법이다. 그러나 쿠버네티스를 설치한다고해서 메트릭 서버가 자동으로 설치되지는 않으므로 직접 설치하는 과정이 필요하다.
다음 두 명령을 실행해 공개된 yaml 파일을 사용하여 metrics-server 사용할 수 있도록 yaml 파일을 적용한다.
여기까지 실행하면 metrics 서버는 돌지만 kubelet 에 접근해 포드와 노드의 정보를 얻어오지 못하는 현상이 일어난다.
이 현상은 tls 통신이 제대로 이뤄지지 않기 때문이므로 다음과 같이 metrics 서버의 내용을 수정하여 서버 통신이 원활하게 할 수 있도록 옵션을 바꾼다.
메트릭스 디플로이의 설정을 변경하기 위해 다음 명령어 실행한다.
yaml 파일 내부에서 args를 찾아가서 다음 설정 두 개 추가한다.
(참고한 사이트: https://github.com/kubernetes-sigs/metrics-server/issues/300)
아규먼트
|
설명
|
- --kubelet-insecure-tls
|
인증서가 공인 기관에 승인 받지 않은 안전하지 않기 때문에 보안적으로 취약하지만 무시하겠다는 의미
|
- --kubelet-preferred-address-types=InternalIP
|
kubelet 연결에 사용할 때 사용하는 주소 타입을 지정
|
추가된 다음의 모습은 다음과 같다. 기존의 옵션은 유지하도록 한다.
<앞 부분 생략>
spec:
containers:
- args:
- --cert-dir=/tmp
- --secure-port=4443
- --kubelet-insecure-tls # 추가된 옵션
- --kubelet-preferred-address-types=InternalIP # 추가된 옵션
<뒷 부분 생략>
정보 수집에 시간이 걸리므로 1분 정도 지난 후 포드와 노드의 리소스를 요청하면 정상적으로 리소스를 모니터링 할 수 있다.
포드의 리소스 질의를 해보자.
$ k top pod -n kube-system
NAME CPU(cores) MEMORY(bytes)
coredns-6955765f44-cfn8r 2m 21Mi
coredns-6955765f44-qvw44 1m 16Mi
etcd-master 9m 47Mi
kube-apiserver-master 19m 325Mi
kube-controller-manager-master 4m 54Mi
kube-proxy-9whjc 1m 19Mi
kube-proxy-d8cnw 1m 17Mi
kube-proxy-lnvvm 1m 24Mi
kube-scheduler-master 2m 22Mi
metrics-server-6ffdb54684-v4tpv 1m 12Mi
weave-net-7c9fc 1m 59Mi
weave-net-7qtwm 1m 74Mi
weave-net-dk9vb 1m 65Mi
다음은 nodes의 리소스를 질의해보자.
$ k top nodes
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
master 175m 8% 2880Mi 75%
work1 29m 1% 2653Mi 69%
work2 21m 1% 2319Mi 60%
메트릭스 서버가 잘 동작한다.
'[Kubernetes Master] > 12. 리소스 로깅과 모니터링' 카테고리의 다른 글
쿠버네티스 애플리케이션 로그 관리 (0) | 2023.08.01 |
---|---|
[중요][AWS] 쿠버네티스 모니터링 (Monitoring) - Metrics Server 설치 (0) | 2023.07.27 |
[버전불일치] 메트릭스 서버 설치 및 kubectl top 명령 (0) | 2023.07.27 |
쿠버네티스 모니터링 시스템과 아키텍처 (0) | 2023.07.26 |
댓글