[Prometheus] Prometheus 컨테이너 에러 err="open /data/queries.active: permission denied" 해결
문제상황 : 프로메테우스를 설치할때 host-path의 폴더와 마운트하여 설치하고 싶었음.
values.yaml 파일에 적용할 pvc의 이름을 적고 설치를 시도했는데 에러가 났다 !!!!!!!!!
values 파일을 새로 생성해서 적용할 pvc 이름을 적어주고
(pv와 pvc는 미리 생성해두었음)
<values.yaml> -> 프로메테우스에 적용할 values.yaml 파일임
server:
persistentVolume:
existingClaim: prometheus-pvc
해당 values.yaml파일이 있는 폴더 경로로 이동해서 helm을 이용해서 프로메테우스를 설치함 !
(namespace는 monitor로 지정했다. 이미 생성되어있는 네임스페이스여서 --create-namespace 는 생략함)
helm install prometheus prometheus-community/prometheus -f values.yaml --namespace 네임스페이스
설치를 하고 해당 네임스페이스의 pvc를 확인해보면 Bound라고 뜸.
kubectl get pvc -n 네임스페이스이름
그리고 monitor 네임스페이스에 프로메테우스 파드들이 생성되었는지 확인
kubectl get po -n 네임스페이스이름
생성은 되었는데 CrashLoopBackOff 가 뜬다 ㅠㅠ
prometheus-server라는 파드에는
prometheus-server-configmap-reload
prometheus-server
이렇게 두개의 컨테이너가 생성된다.
에러가 발생하는 컨테이너는 prometheus-server 컨테이너!!!!!
해당 파드의 정보를 좀 더 상세하게 조회해 보자.
kubectl describe pods 파드이름 -n 네임스페이스이름
kubectl describe pods prometheus-server-69b9cbd5f5-gplr8 -n monitor
파드의 정보를 쭉 내려보면
설정한 prometheus-pvc로 볼륨설정이 잘 된것도 확인이되는데..
왜 CrashLoopBackOff 뜨냐고요 ㅠ
해당 컨테이너의 로그를 띄워봤다.
kubectl logs 파드이름 -c 컨테이너이름 -n 네임스페이스이름
kubectl logs prometheus-server-69b9cbd5f5-gplr8 -c prometheus-server -n monitor
로그 메세지 :
ts=2024-08-30T05:37:27.361Z caller=main.go:645 level=info msg="Starting Prometheus Server" mode=server version="(version=2.54.1, branch=HEAD, revision=e6cfa720fbe6280153fab13090a483dbd40bece3)"
ts=2024-08-30T05:37:27.363Z caller=main.go:650 level=info build_context="(go=go1.22.6, platform=linux/amd64, user=root@812ffd741951, date=20240827-10:56:41, tags=netgo,builtinassets,stringlabels)"
ts=2024-08-30T05:37:27.363Z caller=main.go:651 level=info host_details="(Linux 6.8.0-41-generic #41-Ubuntu SMP PREEMPT_DYNAMIC Fri Aug 2 20:41:06 UTC 2024 x86_64 prometheus-server-69b9cbd5f5-gplr8 (none))"
ts=2024-08-30T05:37:27.363Z caller=main.go:652 level=info fd_limits="(soft=1048576, hard=1048576)"
ts=2024-08-30T05:37:27.363Z caller=main.go:653 level=info vm_limits="(soft=unlimited, hard=unlimited)"
ts=2024-08-30T05:37:27.364Z caller=query_logger.go:114 level=error component=activeQueryTracker msg="Error opening query log file" file=/data/queries.active err="open /data/queries.active: permission denied"
panic: Unable to create mmap-ed active query log
무슨 에러냐 하면 수집한 metric 데이터를 기록한 query log file에 대한 접근권한이 없다는 것.
리눅스에서 호스트파일 시스템의 특정 경로를 컨테이너로 마운트 했을때 접근 권한 문제가 발생할 수 있는데
호스트 os와 컨테이너 사이의 UID, GID 불일치 때문이라고 한다.
로컬 피씨에서 id를 먼저 확인해보자
그리고 컨테이너로 접속해서 id를 확인해보자
uid와 gid가 불일치한다.
*65534 는 nobody임.
pod를 생성할때 특정 사용자를 지정해주지 않아서 nobody로 되었는데,
일단은 변경하지않고 그대로 진행..
이런경우 컨테이너의 uid에게 권한을 주면 됨 !
다시 로컬피씨에서 마운트하고자 하는 폴더 권한을 변경하였다.
이렇게 변경하고 프로메테우스를 다시 설치함 !!!!
그리고 pods를 띄워봤더니!!!!!!!!!
흑흑 잘돌아간다 ㅠㅠㅠㅠ
'기타 > 문제해결' 카테고리의 다른 글
[React] react-dropzone 으로 드래그앤 드롭시 Aw snap 에러 발생 ! (1) | 2024.11.16 |
---|---|
nginx 업로드 파일 용량 초과 오류 해결 (0) | 2024.10.14 |
[k3s] coreDNS 중지 오류 (0) | 2024.08.27 |
[React] CORS(Cross-Origin Resource Sharing) 에러 해결 (0) | 2024.08.07 |
Window에서 postman 완전 삭제후 재설치 (0) | 2024.08.06 |