Kubernetes cluster-level logging 중 컨테이너 엔진에서 남기는 로그를 logging-agent를 사용해 logging-backend로 전송하는 아래 두 가지 방법이 있습니다.
https://github.com/fluent/fluentd-kubernetes-daemonset
kubernetes 로그를 수집하기 위한 설정과 logging-backend 가 미리 설정된 fluentd docker 이미지를 사용합니다.
FLUENT_CONTAINER_TAIL_PARSER_TYPE를 cri로 설정해서 containerd에서 생성한 로그를 파싱할 수 있게 합니다.
GitHub - fluent/fluentd-kubernetes-daemonset: Fluentd daemonset for Kubernetes and it Docker image
env:
- name: FLUENT_CONTAINER_TAIL_PARSER_TYPE
value: cri
FLUENT_CONTAINER_TAIL_PARSER_TIME_FORMAT 환경 변수를 설정해서 시간 값을 parsing을 처리합니다.
env:
- name: FLUENT_CONTAINER_TAIL_PARSER_TIME_FORMAT
value: '%Y-%m-%dT%H:%M:%S.%N%:z'
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: fluentd
namespace: kube-system
labels:
k8s-app: fluentd-logging
version: v1
spec:
selector:
matchLabels:
k8s-app: fluentd-logging
version: v1
template:
metadata:
labels:
k8s-app: fluentd-logging
version: v1
spec:
tolerations:
- key: node-role.kubernetes.io/control-plane
effect: NoSchedule
- key: node-role.kubernetes.io/master
effect: NoSchedule
containers:
- name: fluentd
image: fluent/fluentd-kubernetes-daemonset:v1-debian-elasticsearch
env:
- name: FLUENT_ELASTICSEARCH_HOST
value: "elasticsearch"
- name: FLUENT_ELASTICSEARCH_PORT
value: "9200"
- name: FLUENT_ELASTICSEARCH_SCHEME
value: "http"
- name: FLUENT_CONTAINER_TAIL_PARSER_TYPE
value: cri
- name: FLUENT_CONTAINER_TAIL_PARSER_TIME_FORMAT
value: '%Y-%m-%dT%H:%M:%S.%N%:z'
resources:
limits:
memory: 200Mi
requests:
cpu: 100m
memory: 200Mi
volumeMounts:
- name: varlog
mountPath: /var/log
- name: containerlogdirectory
mountPath: /var/log/containers
readOnly: true
terminationGracePeriodSeconds: 30
volumes:
- name: varlog
hostPath:
path: /var/log
- name: containerlogdirectory
hostPath:
path: /var/log/containers