Come on IT/DevOps
prometheus-kube-prometheus-kube-controller-manager/0 해결방법
JONGSKY
2025. 2. 26. 17:26
728x90
SMALL
1. 글을 쓰게 된 계기
마스터 노드에서 정상적으로 수집이 안될 때 해결하는 방법에 대해서 정리하고자 합니다.
2. 해결방법
kube-controller-manager가 10257 포트에서 리슨 중인지 확인
먼저 kube-controller-manager가 10257 포트에서 제대로 실행 중인지 확인해야 합니다.
🛠️ 40번 마스터 노드에서 실행:
netstat -tunlp | grep 10257
👉 결과 확인
- 정상 (0.0.0.0:10257 또는 127.0.0.1:10257으로 리슨 중) → Prometheus 접근 문제일 가능성 큼.
- 아무 결과도 없음 → kube-controller-manager가 해당 포트를 열지 않음 → 설정 변경 필요.
kube-controller-manager가 localhost(127.0.0.1)에서만 리슨하는지 확인
대부분의 배포에서는 kube-controller-manager가 기본적으로 127.0.0.1:10257에서만 리슨하도록 설정되어 있음.
즉, Prometheus(외부 네트워크)에서 접근할 수 없음.
🛠️ 확인 방법:
ps aux | grep kube-controller-manager
출력에서 --bind-address=127.0.0.1 옵션이 있는지 확인!
- --bind-address=127.0.0.1이면 → Prometheus가 접근 불가
- --bind-address=0.0.0.0이면 → Prometheus가 접근 가능
👉 해결 방법:
만약 --bind-address=127.0.0.1로 되어 있다면, 0.0.0.0으로 변경해야 Prometheus에서 접근 가능.
kube-controller-manager 설정 변경 (localhost 리슨 해제)
kube-controller-manager는 Static Pod으로 실행되므로, 설정을 변경하려면 Manifest 파일을 수정해야 합니다.
🛠️ 수정 방법 (마스터 노드에서 실행)
sudo vi /etc/kubernetes/manifests/kube-controller-manager.yaml
이제 아래 옵션을 찾습니다.
- --bind-address=127.0.0.1
위 줄을 아래와 같이 변경:
- --bind-address=0.0.0.0
변경 후 저장하고 파일을 닫으면, Static Pod이 자동으로 재시작되며 설정이 반영됩니다.
🛠️ 변경 적용 후 확인
kubectl get pods -n kube-system | grep kube-controller-manager
Pod이 재시작되었는지 확인 후, 다시 netstat -tunlp | grep 10257로 확인.
✅ 이제 kube-controller-manager가 0.0.0.0:10257에서 리슨하면 Prometheus에서 접근 가능!
728x90
LIST