로키를 이용하여 쿠버네티스 로깅 시스템을 사용하고 있다. 그런데 로키가 스토리지를 오브젝트 스토리지 기반으로 변경하고 있었다. 로키 헬름 차트의 기본 스토리지도 s3이고.
그라파나 로키 공식 홈페이지에서도 오브젝트를 스토리지 사용하는게 주요 장점이라 한다.
실 서비스 환경에서는 AWS를 사용하기에 로키를 큰 어려움없이 s3 기반으로 변경을 하였다. s3 사용하니 기존 파일시스템에 비하여 오브젝트 스토리지라 비용이 저렴하다.(사용한만큼만 지불해도 되고) 그리고 write, read 파드가 분리되고 각각 3개의 파드로 실행되어서 성능 향상이 된 것이 아주 컸다. 기존 파일 시스템 기반에서는 성능 문제로 로그 조회가 안되는 문제가 있었는데 어느 정도 해소되었다.(엘라스틱서치를 같이 사용하고 있기는 하다.)
하지만 AWS를 사용하지 않는 온프렘 테스트 환경에서는 오브젝트 스토리지를 사용하려면 1) minio를 설치하던지 2) 유료로 s3를 사용해야 하는 어려움이 있다. 그래서 기본 설치 옵션을 수정해서 로컬 파일시스템을 계속 사용하는 방법으로 로키를 설치하였다. 물론, 실 서비스 환경이라면 minio 또는 s3를 사용하는게 낫다.
설치에 사용한 헬름 Value 파일이다. 해당 파일은 <24단계 실습으로 정복하는 쿠버네티스> 공식 깃헙에도 같이 올렸다. 깃헙 주소
loki:
commonConfig:
replication_factor: 1
auth_enabled: false
limits_config:
retention_period: 31d
max_query_parallelism: 32
server:
http_server_read_timeout: 600s
http_server_write_timeout: 600s
grpc_server_max_recv_msg_size: 20971520
grpc_server_max_send_msg_size: 20971520
storage:
type: "filesystem"
singleBinary:
replicas: 1
monitoring:
selfMonitoring:
enabled: false
grafanaAgent:
installOperator: false
lokiCanary:
enabled: false
test:
enabled: false
gateway:
enabled: false
- limits_config - retention_period: 31d
로그 파일을 31일 간 유지하는 옵션이다. 필요에 따라 변경하면 된다. - max_query_parallelism, server: http_server_read_timeout 등
성능에 관련된 옵션이다. - storage - type - filesystem
기본 설정이 s3인데 이 부분을 filesystem으로 변경한다. 말그대로 오브젝트 스토리지가 아닌 파일시스템 스토리지를 사용한다는 의미다. - singleBinary - replicas - 1
s3 타입이면 write 3ea, read 3ea, backend 3ea 등의 복수의 파드를 설치하는데 filesystem이면 하나의 로키 파드만 실행된다. - 기타 monitoring, test, gateway 등은 굳이 필요없어 보이는 설정이라 false로 지정한다.
해당 헬름 Value로 설치한다. 로컬에 헬름 차트 파일을 다운받아서 설치해도 되고(나는 이 방법을 선호한다. 나만 선호하는 것 같기는 하지만...) 아래처럼 원격 차트를 그대로 사용해도 된다.
helm install loki grafana/loki --version 4.8.0 -f my-values.yaml --namespace loki
스토리지 클래스가 정상이면 아래와 같이 파드, 서비스, PVC를 확인할 수 있다.
$ (⎈ |test:loki) k get pod,svc,pvc
NAME READY STATUS RESTARTS AGE
pod/loki-0 1/1 Running 0 73s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/loki ClusterIP 10.233.48.185 <none> 3100/TCP,9095/TCP 74s
service/loki-headless ClusterIP None <none> 3100/TCP 74s
service/loki-memberlist ClusterIP None <none> 7946/TCP 74s
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
persistentvolumeclaim/storage-loki-0 Bound pvc-02942b0c-9d76-43e5-b45b-87ec341a7360 10Gi RWO openebs-hostpath 73s
참고로 s3 타입으로 설치하면 파드가 훨씬 많다.
$ (⎈ |test:loki-s3) k get pod
NAME READY STATUS RESTARTS AGE
loki-backend-0 1/1 Running 0 12h
loki-backend-1 1/1 Running 0 12h
loki-backend-2 1/1 Running 0 12h
loki-gateway-665dcdfb56-fqzwv 1/1 Running 0 12h
loki-read-7c8c6564cc-6tvcc 1/1 Running 0 12h
loki-read-7c8c6564cc-9h5d9 1/1 Running 0 12h
loki-read-7c8c6564cc-gr8gj 1/1 Running 0 12h
loki-write-0 1/1 Running 0 12h
loki-write-1 1/1 Running 0 12h
loki-write-2 1/1 Running 0 12h
이제 로키 설정이 완료되었으니 Promtail, Grafana 설정을 완료하면 아래와 같이 정상적으로 쿠버네티스 파드 로그를 조회할 수 있다.
'쿠버네티스 교육' 카테고리의 다른 글
AWS ALB & LoadBalancer Controller (2) | 2023.04.11 |
---|---|
Github Action Self-hosted 세팅 (4) | 2023.04.06 |
원격 EKS 접속 환경 설정 (0) | 2022.11.08 |
EKS OJT 교육 실습 목차 (2) | 2022.11.08 |
[동영상] kubespray 설치 및 원격 cluster 등록 (0) | 2021.08.28 |