쿠버네티스 교육

파일시스템 기반 Loki 설치

Jerry_이정훈 2023. 4. 1. 05:10
728x90

로키를 이용하여 쿠버네티스 로깅 시스템을 사용하고 있다. 그런데 로키가 스토리지를 오브젝트 스토리지 기반으로 변경하고 있었다. 로키 헬름 차트의 기본 스토리지도 s3이고.

 

그라파나 로키 공식 홈페이지에서도 오브젝트를 스토리지 사용하는게 주요 장점이라 한다.

from : https://grafana.com/oss/loki/ (공홈)

실 서비스 환경에서는 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 설정을 완료하면 아래와 같이 정상적으로 쿠버네티스 파드 로그를 조회할 수 있다.

그라파나 로키 조회 화면

반응형