커피 중독자되는 중…
프로메테우스로 모니터링 데이터 수집과 통합하기
쿠버네티스 프로메테우스를 helm으로 설치하고 grafana를 사용하던 중 원래 사용하던 프로메테우스의 External IP를 브라우저로 접속하려고 해도 작동하지 않았다.
원인을 찾기위해서 프로메테우스 서비스의 External IP를 확인해 봤다.
원래 External IP가 존재했는데 어느 순간 pending이 되어 있었다.
원인을 찾기 위해서 describe 명령으로 살펴봤다.
애레를 보니 AllocationFailed라고 나오면서 metallb-controller가 IP 할당을 실패한 것을 볼 수 있었다.
에러 문구를 읽어보자 이해가 됐다. 내가 프로메테우스 단독으로 사용할 때는 괜찮았는데 grafana를 연동시키면서 IP가 Overwrite된 것 같다. grafana로 접속할 땐 내가 원래 프로메테우스를 접속할 때 사용했던 External IP가 할당되어 있었고 프로메테우스로 접속하려고 했던 External IP가 막혀서 pending 상태였던 것이다.
이를 해결하기 위해 여러 가지 검색을 했다. 일단 내가 찾은 stackoverflow 게시물을 참고해보자. (아래 링크 첨부)
질문자가 나와 동일한 문제는 아니지만 도움이 될 것 같아서 답변해준대로 따라해봤다.
해결 방안은 External IP를 수동으로 설정해 주는 것이였다.
그래서 시도한 명령어는 아래와 같다.
kubectl patch svc prometheus-server -p '{"spec":{"externalIPs":["192.168.1.11"]}}'
현재 grafana가 192.168.12를 사용하고 있으므로 프로메테우스를 192.168.11로 설정해 준 것이었다.
이렇게 설정하면 prometheus-server의 External-IP가 192.168.11로 바꿔지긴 한다.
그러나.. 브라우저로 접속이 되지 않는다.
이는 서비스가 제공하는 Service가 제공하는 External-IP가 192.168.11이기 때문이다. 내가 처음 프로메테우스를 설치할 때 MetalLB와 연동해서 설치해줬었다. 즉 MetalLB의 metallb-controller가 제공하는 External IP를 바꿔줘야 한다.
해결책은 생각보다 간단했다. 바로 edit 명령을 사용하는 것이다.
kubectl edit service prometheus-server
위의 명령을 치면 아래 사진과 같이 나온다.
yaml 파일을 수정할 수 있는 편집기가 나오는데 밑으로 내리다 보면 status이라고 써져 있는 부분이 있다. 거기서 .status.loadBalancer.ingress.ip를 192.168.1.15로 바꾼다.
그리고 Esc+’:’+wq를 누르고 저장하고 나온다.
External IP를 확인해 보자.
External IP가 두개가 할당되어 있는데 192.168.1.11은 처음에 우리가 stackoverflow에서 본 해결책으로 할당한 것이고 192.168.1.15로 우리가 방금 할당한 것이다.
<div class=”webnots-information
이제 브라우저로 192.168.1.15를 접속해보자.
접속이 정상적으로 된다~!!