728x90
1️⃣ 개요
Kubernetes 환경에서 DaemonSet은 노드 단위의 작업을 자동화하거나, 시스템 이벤트를 감지하는 데 활용됩니다.
특히, 노드에서 발생하는 이벤트를 수집하고 분석하는 로직을 DaemonSet으로 구성하면
모든 노드에서 일어나는 다양한 이벤트를 빠르게 파악할 수 있습니다.
이번 글에서는 DaemonSet을 통해 Kubernetes 이벤트 감지 및 알림용 에이전트를 구성하는 방법을 설명합니다.
2️⃣ 이벤트 감지 에이전트 구성 목적
감지 항목 예시 | 활용 목적 |
Pod OOMKilled, CrashLoopBackOff | 장애 대응 자동화 |
노드 NotReady 이벤트 | 노드 상태 모니터링 |
PersistentVolume 오류 | 스토리지 이슈 조기 감지 |
컨테이너 ImagePullBackOff | CI/CD 문제 추적 |
✅ 위 이벤트는 kubectl get events 명령이나 Kubernetes API를 통해 확인 가능하며,
DaemonSet은 이를 자동 수집하고 로그 또는 외부 시스템으로 전송할 수 있습니다.
3️⃣ 이벤트 감지를 위한 방법
- kubectl events 명령어 사용 → 임시 확인용
- client-go 기반 Custom Agent 구성
- Vector, Fluent Bit, Logstash 등의 수집기 활용
- kube-eventer, kubewatch 등의 오픈소스 활용
- 직접 Curl or Python으로 API polling 구성
4️⃣ 이벤트 감지용 DaemonSet 예제 (Vector 사용)
Vector는 이벤트, 로그, 메트릭 수집에 모두 사용 가능한 에이전트입니다.
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: event-agent
spec:
selector:
matchLabels:
app: event-agent
template:
metadata:
labels:
app: event-agent
spec:
containers:
- name: vector
image: timberio/vector:latest
volumeMounts:
- name: vector-config
mountPath: /etc/vector
volumes:
- name: vector-config
configMap:
name: vector-config # Vector 설정은 ConfigMap으로 관리
📌 설명
- Vector는 Kubernetes API를 통해 이벤트를 수집하도록 설정할 수 있으며,
- 해당 설정은 ConfigMap에서 YAML 또는 TOML로 관리합니다.
5️⃣ Vector 설정 ConfigMap 예시
apiVersion: v1
kind: ConfigMap
metadata:
name: vector-config
data:
vector.toml: |
[sources.kubernetes_events]
type = "kubernetes_events" # Kubernetes 이벤트 수집 활성화
[sinks.console]
inputs = ["kubernetes_events"]
type = "console"
encoding.codec = "json" # 수집된 이벤트를 stdout에 JSON 형식으로 출력
📌 설명
- 위 설정은 DaemonSet이 노드에서 Kubernetes 이벤트를 수집하고 로그로 출력하는 역할을 합니다.
- 실제 운영에서는 console 대신 loki, elasticsearch, s3 등의 출력 대상(sink)을 설정하면 됩니다.
6️⃣ 이벤트 확인 및 출력 예시
kubectl logs <pod-name> -c vector
출력 예시 (JSON):
{
"reason": "BackOff",
"message": "Back-off restarting failed container",
"involved_object": {
"kind": "Pod",
"name": "web-app-123",
"namespace": "default"
},
"type": "Warning",
"timestamp": "2024-03-20T08:00:00Z"
}
📌 설명
- 이벤트 발생 시 Vector가 이를 감지하여 로그로 출력합니다.
- 이 데이터를 기반으로 알림 전송 또는 대시보드에 시각화할 수 있습니다.
7️⃣ 다른 이벤트 수집 도구 예시
도구 | 특징 |
kube-eventer (Alibaba OSS) | 이벤트 수집 후 DingTalk, Slack 등으로 알림 전송 가능 |
kubewatch | 간단한 이벤트 감지 도구, Slack/IRC 연동 가능 |
Custom Controller | client-go 활용, 특정 조건에서 자동 작업 수행 가능 |
🔥 8️⃣ 결론
✔ DaemonSet을 활용하면 노드 단위에서 Kubernetes 이벤트를 감지하고 수집하는 에이전트를 쉽게 배포할 수 있습니다.
✔ Vector, Fluent Bit, kube-eventer 등 다양한 도구를 사용하여 이벤트 수집과 알림을 자동화할 수 있습니다.
✔ 감지된 이벤트를 기반으로 장애 대응, 모니터링, 알림 시스템을 구성할 수 있으며, 운영 효율성을 크게 향상시킬 수 있습니다.
728x90