2.3. 안정성 및 성능 향상
다음 구성을 사용하여 프로덕션 환경에서 Loki의 안정성과 효율성을 보장합니다.
2.3.1. Loki Pod 배치 링크 복사링크가 클립보드에 복사되었습니다!
Pod의 허용 오차 또는 노드 선택기를 사용하여 Loki Pod가 실행되는 노드를 제어하고 다른 워크로드가 해당 노드를 사용하지 못하도록 할 수 있습니다.
LokiStack CR(사용자 정의 리소스)을 사용하여 로그 저장소 Pod에 허용 오차를 적용하고 노드 사양이 있는 노드에 taint를 적용할 수 있습니다. 노드의 테인트는 테인트를 허용하지 않는 모든 Pod를 거절하도록 노드에 지시하는 키:값
쌍입니다. 다른 Pod에 없는 특정 키:값
쌍을 사용하면 해당 노드에서 로그 저장소 Pod만 실행할 수 있습니다.
노드 선택기가 있는 LokiStack의 예
노드 선택기 및 허용 오차가 있는 LokiStack CR의 예
LokiStack(CR)의 nodeSelector
및 허용 오차
필드를 구성하려면 oc explain
명령을 사용하여 특정 리소스에 대한 설명 및 필드를 볼 수 있습니다.
oc explain lokistack.spec.template
$ oc explain lokistack.spec.template
출력 예
자세한 내용은 특정 필드를 추가할 수 있습니다.
oc explain lokistack.spec.template.compactor
$ oc explain lokistack.spec.template.compactor
출력 예
2.3.2. 노드 장애를 허용하도록 Loki 구성 링크 복사링크가 클립보드에 복사되었습니다!
로깅 5.8 이상 버전에서 Loki Operator는 Pod 유사성 방지 규칙 설정을 지원하여 동일한 구성 요소의 Pod가 클러스터의 다른 사용 가능한 노드에 예약되도록 요청합니다.
유사성은 예약할 노드를 제어하는 Pod의 속성입니다. 유사성 방지는 Pod가 노드에서 예약되지 않도록 하는 Pod의 속성입니다.
OpenShift Container Platform에서 Pod 유사성 및 Pod 유사성 방지를 사용하면 다른 Pod의 키 값 라벨에 따라 Pod를 예약할 수 있는 노드를 제한할 수 있습니다.
Operator는 compactor
,distributor
,gateway
,indexGateway
,ingester
,querier
,queryFrontend
및 ruler
구성 요소를 포함하는 모든 Loki 구성 요소에 대해 기본 기본 podAntiAffinity
규칙을 설정합니다.
requiredDuringSchedulingIgnoredDuringExecution
필드에서 필요한 설정을 구성하여 Loki 구성 요소의 기본 podAntiAffinity
설정을 덮어쓸 수 있습니다.
ingester 구성 요소에 대한 사용자 설정 예
2.3.3. Loki를 사용하여 스트림 기반 보존 활성화 링크 복사링크가 클립보드에 복사되었습니다!
로그 스트림을 기반으로 보존 정책을 구성할 수 있습니다. 보존 규칙을 전역, 테넌트별 또는 둘 다 설정할 수 있습니다. 둘 다 구성하는 경우 테넌트 규칙이 글로벌 규칙 앞에 적용됩니다.
s3 버킷 또는 LokiStack 사용자 정의 리소스(CR)에 정의된 보존 기간이 없으면 로그가 정리되지 않고 s3 스토리지를 채울 수 있습니다.
-
로깅 버전 5.9 이상에서는 스키마
v12
를 지원하지만 향후 호환성을 위해서는 스키마v13
을 사용하는 것이 좋습니다. 비용 효율적인 로그 정리의 경우 오브젝트 스토리지 공급자에서 직접 보존 정책을 구성합니다. 스토리지 공급자의 라이프사이클 관리 기능을 사용하여 이전 로그를 자동으로 삭제합니다. 또한 Loki에서 추가 처리를 방지하고 S3에 대한 요청을 삭제합니다.
오브젝트 스토리지에서 라이프사이클 정책을 지원하지 않는 경우 내부적으로 보존을 적용하도록 LokiStack을 구성해야 합니다. 지원되는 보존 기간은 최대 30일입니다.
사전 요구 사항
- 관리자 권한이 있습니다.
- Loki Operator를 설치했습니다.
-
OpenShift CLI(
oc
)가 설치되어 있습니다.
프로세스
스트림 기반 보존을 활성화하려면
LokiStack
CR을 생성하고 YAML 파일로 저장합니다. 다음 예제에서는lokistack.yaml
이라고 합니다.S3에 대한 글로벌 스트림 기반 보존의 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow S3에 대한 테넌트별 스트림 기반 보존 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow LokiStack
CR을 적용합니다.oc apply -f lokistack.yaml
$ oc apply -f lokistack.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3.4. 멤버 목록 생성 실패를 허용하도록 Loki 구성 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift Container Platform 클러스터에서 관리자는 일반적으로 개인 IP 네트워크 범위를 사용합니다. 결과적으로 LokiStack 멤버 목록 구성은 기본적으로 개인 IP 네트워크만 사용하므로 실패합니다.
관리자는 memberlist 구성에 대한 Pod 네트워크를 선택할 수 있습니다. hashRing
사양에서 podIP
주소를 사용하도록 LokiStack
CR(사용자 정의 리소스)을 수정할 수 있습니다. LokiStack
CR을 구성하려면 다음 명령을 사용합니다.
oc patch LokiStack logging-loki -n openshift-logging --type=merge -p '{"spec": {"hashRing":{"memberlist":{"instanceAddrType":"podIP"},"type":"memberlist"}}}'
$ oc patch LokiStack logging-loki -n openshift-logging --type=merge -p '{"spec": {"hashRing":{"memberlist":{"instanceAddrType":"podIP"},"type":"memberlist"}}}'
podIP
를 포함하는 LokiStack의 예
2.3.5. 클러스터를 다시 시작하는 동안 LokiStack 동작 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift Container Platform 클러스터가 다시 시작되면 LokiStack 수집 및 쿼리 경로가 노드에 사용 가능한 사용 가능한 CPU 및 메모리 리소스 내에서 계속 작동합니다. 즉, OpenShift Container Platform 클러스터 업데이트 중에 LokiStack에 대한 다운 타임이 없습니다. 이 동작은 PodDisruptionBudget
리소스를 사용하여 수행됩니다. Loki Operator는 특정 조건에서 정상적인 작업을 보장하기 위해 구성 요소별로 사용 가능한 최소 Pod 수를 결정하는 Loki의 PodDisruptionBudget
리소스를 프로비저닝합니다.