Docker

쿠버네티스 로깅

minseok__ 2023. 12. 5. 14:02

Volume Type

  • FileStorage
  • BlockStorage
  • ObjectStorage

로깅

 쿠버네티스에서 돌아가는 로그 관리

  • Service Pipeline - 별도의 플러그인 설치 후 모니터링 관련 파드가 생기고 이 파드들이 각각의 노드에서 로그를 가져 수집 서버에 모으고 이걸 ui를 통해 사용자에게 보여짐
  • Core Pipeline - 파드에 쌓여지는 로그

1. Basic Logging Construction


1-1) Deployment 생성

apiVersion: apps/v1
kind: Deployment
metadata:name: app-log
spec:selector:matchLabels:type: app
  template:metadata:labels:type: app
	spec:nodeSelector:kubernetes.io/hostname: k8s-node1
	  containers:
	  - name: container
		image: kubetm/app

 api 호출

curl <pod-ip>:8080/hostname
curl <pod-ip>:8080/version

1-2) Container Log 확인

 kubectl exec로 Container 내부 로그파일 확인

kubectl exec <pod-name> -it -- /bin/sh

 kubectl logs로 Stdout 로그 확인

kubectl logs <pod-name>
kubectl logs <pod-name> --tail 10 --follow

 Docker Log Driver 설정 확인

cat /etc/docker/daemon.json

 Docker Container 로그 파일 확인

cd  /var/lib/docker/containers
docker ps
cd <container-id>
ls

1-3) Node1에서 Log Link 확인

cd /var/log/pods
cd <Namespace>_<pod-name>_<pod-id>
cd container
ls -al

cd /var/log/containers
ls -al

1-4) Event Log 확인

kubectl get events
kubectl get events | grep app-log

1-5) Termination Log 확인

 Termination API Call

curl <pod-ip>:8080/termination

 Container Status 확인

kubectl describe pods <pod-name>

2. Loki Stack 설치


2-1) Helm 설치

https://helm.sh/docs/intro/install/

 Helm은 Kubernetes 애플리케이션의 패키징 및 배포를 단순화하기 위한 도구

 Helm은 Kubernetes 클러스터 내에서 애플리케이션을 설치, 업그레이드, 롤백하는 프로세스를 자동화한다.

curl -O https://get.helm.sh/helm-v3.3.4-linux-amd64.tar.gz
tar -xf helm-v3.3.4-linux-amd64.tar.gz
cd linux-amd64
cp ./helm /usr/local/bin/

2-2) loki-stack 설치

 패키지 다운로드 https://artifacthub.io/packages/helm/loki/loki-stack

 Loki-stack은 쿼리 기반의 모니터링을 제공하며, 로그 데이터를 수집하고 분석하여 빠른 검색과 시각화가 가능

 Loki-stack은 Grafana를 사용하여 로그 데이터를 시각화

 Grafana를 사용하면 로그 데이터를 대시보드로 표시하고, 지속적인 모니터링이 가능

helm repo add loki https://grafana.github.io/loki/charts
helm fetch loki/loki-stack --version 0.41.2

tar -xf loki-stack-0.41.2.tgz
cd loki-stack/
vi values.yaml
(Grafana Enable 설정)

 helm 배포 / 삭제

kubectl create ns loki-stack
helm install loki-stack -f values.yaml . -n loki-stack
helm uninstall loki-stack -n loki-stack

2-3) Grafana Service

 데이터 시각화 및 모니터링 도구인 Grafana를 구동하는 서비스

 Grafana Service는 사용자가 시계열 데이터를 시각화하고 대시보드를 만들 수 있도록 해주며, 다양한 데이터 소스와 통합하여 모니터링을 지원

kubectl edit -n loki-stack svc loki-stack-grafana
----
type: NodePort
nodePort : 30000
----

kubectl get secret --namespace loki-stack loki-stack-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo