TIL

10_5.k8s ide 도구인 lens를 통해이벤트 로깅 실습

꿀승 2025. 3. 6. 16:58
728x90
반응형
SMALL

학습내용

  1. Lens를 이용한 로깅분석
  2. 실시간 이벤트 모니터링 실습

학습정리

1. Lens를 이용한 로깅분석

  • 이벤트 로그 탐색
    • Events 탭을 활용하여 실시간 이벤트 모니터링
    • 특정 네임스페이스 이벤트 필터링 및 검색 기능 활용
  • 파드 관련 이벤트 분석
    • 정상적인 Pod 생성과정에서 발생하는 이벤트 확인
    • CrashLoopBackOff, ImagePullBackOff 등 오류 이벤트 분석

2. 실시간 이벤트 모니터링 실습

  • ElasticSearch로 로그를 저장하는 deployment 설정

    • yaml 생성

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: elasticsearch
        labels:
          app: elasticsearch
      spec:
        replicas: 1 # node 1개
        selector:
          matchLabels:
            app: elasticsearch
        template:
          metadata:
            labels:
              app: elasticsearch
          spec:
            containers:
            - name: elasticsearch
              image: elastic/elasticsearch:6.4.0
              env:
              - name: discovery.type
                value: "single-node"
              ports:
              - containerPort: 9200
              - containerPort: 9300
      ---
      apiVersion: v1
      kind: Service
      metadata:
        labels:
          app: elasticsearch
        name: elasticsearch-svc
        namespace: default
      spec:
        ports:
        - name: elasticsearch-rest
          nodePort: 30920
          port: 9200
          protocol: TCP
          targetPort: 9200
        - name: elasticsearch-nodecom
          nodePort: 30930
          port: 9300
          protocol: TCP
          targetPort: 9300  
        selector:
          app: elasticsearch
        type: NodePort
    • 실행

      kubectl apply -f elasticsearch.yaml
      
      minikube service elasticsearch-svc
  • Kibana deployment 설정

    • yaml 생성

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: kibana
        labels:
          app: kibana
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: kibana
        template:
          metadata:
            labels:
              app: kibana
          spec:
            containers:
            - name: kibana
              image: elastic/kibana:6.4.0
              env:
              - name: SERVER_NAME
                value: "kibana.kubenetes.example.com"
              - name: ELASTICSEARCH_URL
                value: "http://elasticsearch-svc.default.svc.cluster.local:9200"
              ports:
              - containerPort: 5601
      ---
      apiVersion: v1
      kind: Service
      metadata:
        labels:
          app: kibana
        name: kibana-svc
        namespace: default
      spec:
        ports:
        - nodePort: 30561
          port: 5601
          protocol: TCP
          targetPort: 5601
        selector:
          app: kibana
        type: NodePort
    • 실행

      kubectl apply -f kibana.yaml
      
      minikube service kibana-svc
  • Fluentd deployment 설정

    • luented를 이용하여 쿠버네티스에서 발생한 로그를 ES에 저장합니다.

    • Fluented는 k8s와 같은 CNCF에서 관리하는 범용 로그 수집 오픈소스 프로젝트입니다.

    • 루비 기반으로 개발되었고 다양한 플러그인을 사용할 수 있습니다.

    • yaml 생성

      apiVersion: apps/v1
      kind: DaemonSet
      metadata:
        name: fluentd
        namespace: kube-system # 사용자가 직접 실행한 앱 컨테이너와 분리해 관리하기 위해 해당 네임스페이스로 설정
        labels:
          k8s-app: fluentd-logging
          version: v1
          kubernetes.io/cluster-service: "true"
      spec:
        selector:
          matchLabels:
            k8s-app: fluentd-logging
            version: v1
        template:
          metadata:
            labels:
              k8s-app: fluentd-logging
              version: v1
              kubernetes.io/cluster-service: "true"
          spec:
            tolerations:
            - key: node-role.kubernetes.io/master
              effect: NoSchedule
            containers:
            - name: fluentd
              image: fluent/fluentd-kubernetes-daemonset:elasticsearch
              env:
              - name:  FLUENT_ELASTICSEARCH_HOST
                value: "elasticsearch-svc.default.svc.cluster.local"
              - name:  FLUENT_ELASTICSEARCH_PORT
                value: "9200"
              - name: FLUENT_ELASTICSEARCH_SCHEME
                value: "http"
              - name: FLUENT_UID
                value: "0"
              resources:
                limits:
                  memory: 200Mi
                requests:
                  cpu: 100m
                  memory: 200Mi
              volumeMounts:
              - name: varlog
                mountPath: /var/log
              - name: varlibdockercontainers
                mountPath: /var/lib/docker/containers
                readOnly: true
            terminationGracePeriodSeconds: 30
            volumes:
            - name: varlog
              hostPath:
                path: /var/log
            - name: varlibdockercontainers
              hostPath:
                path: /var/lib/docker/containers
    • 실행

      kubectl apply -f fluentd-kubernetes-daemonset.yaml
      
728x90
반응형
LIST