쿠버네티스 환경에서는 컨테이너가 종료되거나 재시작되면 로그가 손실될 수 있습니다.
이를 방지하고 애플리케이션의 문제를 효과적으로 진단하기 위해 로그 수집 시스템을 구축하는 것이 중요합니다.
이 글에서는 kubectl을 활용한 기본적인 로그 조회 방법과 Fluentd DaemonSet을 사용하여 로그를 중앙에서 관리하는 방법을 다룹니다.
📌 글에서 다루는 상황들
1. kubectl logs를 활용한 기본적인 로그 조회 방법
2. Fluentd DaemonSet을 활용한 중앙 집중식 로그 수집
각 문제를 실무에서 바로 활용할 수 있도록 Manifest 템플릿과 예상 결과 값을 제공합니다.
1️⃣ kubectl logs를 활용한 기본적인 로그 조회 방법
❓ 문제 상황
운영팀에서 특정 애플리케이션이 정상적으로 실행되지 않고 있으며, 로그를 확인하여 원인을 파악해야 합니다.
kubectl logs 명령어를 활용하여 애플리케이션의 실행 로그를 조회해야 합니다.
• 문제 발생 Pod: web-app-pod
• 로그를 확인하여 애플리케이션 오류 원인을 분석
✅ 어떻게 해결할 수 있을까요?
🛠️ 해결 방법
1. kubectl logs 명령어를 사용하여 애플리케이션 로그를 조회합니다.
2. kubectl logs -f 옵션을 활용하여 실시간 로그를 모니터링합니다.
✅ 문제 해결을 위한 명령어 실행
🔹 기본 로그 조회
kubectl logs web-app-pod
💡 예상 출력 값
[2024-03-13 12:00:01] INFO Starting application...
[2024-03-13 12:00:05] ERROR Database connection failed: timeout
🔹 실시간 로그 모니터링
kubectl logs -f web-app-pod
✅ kubectl logs를 활용하여 실시간으로 로그를 확인하며 문제를 분석할 수 있음
2️⃣ Fluentd DaemonSet을 활용한 중앙 집중식 로그 수집
❓ 문제 상황
운영팀에서 각 Pod에서 발생하는 로그를 수집하여 중앙에서 관리해야 합니다.
이를 위해 Fluentd DaemonSet을 배포하여 모든 노드에서 로그를 수집하고 중앙 로그 서버로 전송해야 합니다.
• Fluentd DaemonSet을 배포하여 /var/log/containers 디렉터리의 로그를 수집
• 모든 Pod의 로그를 Fluentd가 수집하여 중앙 로그 저장소로 전송
✅ 어떻게 해결할 수 있을까요?
🛠️ 해결 방법
1. Fluentd DaemonSet을 배포하여 모든 노드에서 로그를 수집합니다.
2. Fluentd를 활용하여 애플리케이션 로그를 중앙 로그 저장소로 전송합니다.
✅ 정답 Manifest (Fluentd DaemonSet 설정)
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: fluentd-daemonset
spec:
selector:
matchLabels:
app: fluentd
template:
metadata:
labels:
app: fluentd
spec:
containers:
- name: fluentd
image: fluent/fluentd
volumeMounts:
- name: varlog
mountPath: /var/log # 모든 노드의 로그를 수집
volumes:
- name: varlog
hostPath:
path: /var/log # 노드의 /var/log 디렉토리를 마운트
📌 적용 후 예상 결과 값
1. Fluentd DaemonSet이 정상적으로 배포되었는지 확인
kubectl get daemonset
💡 예상 출력 값
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
fluentd-daemonset 3 3 3 3 3 <none> 5s
2. Fluentd 로그 확인
kubectl logs -l app=fluentd --tail=10
💡 예상 출력 값
[2024-03-13 12:05:00] INFO Collecting logs from /var/log
[2024-03-13 12:05:05] INFO Sending logs to central log server
✅ 모든 노드에서 Fluentd가 로그를 수집하여 중앙 로그 저장소로 전송됨