empty-dir

2023. 10. 27. 10:52k8s

emptyDir

Kubernetes (k8s)에서 emptyDir은 임시 볼륨 타입 중 하나로, 파드 간에 데이터를 공유하거나 임시 데이터를 저장하는 데 사용된다. emptyDir 볼륨은 파드가 생성될 때 생성되며 파드가 삭제될 때 삭제되므로 일시적인 데이터 저장에 적합하다.

 

 

emptyDir 볼륨 특징
  • 생명 주기 : emptyDir 볼륨은 파드의 생명 주기와 관련이 있다. 파드가 삭제되면 해당 볼륨도 함께 삭제된다.
  • 공유 데이터 : emptyDir 볼륨은 동일한 파드 내의 컨테이너 간에 데이터를 공유하는 데 사용할 수 있으며, 컨테이너 간의 임시 데이터 교환에 유용하다.
  • 디스크 공간 : emptyDir 볼륨은 호스트 노드의 임시 디스크 공간을 활용한다. 노드의 가용 디스크 공간을 사용하므로 저장 용량은 제한적일 수 있다.

 

 

empty-dir.yml 생성
apiVersion: v1
kind: Pod
metadata:
  name: sidecar
spec:
  containers:
    - name: app
      image: busybox
      args:
        - /bin/sh
        - -c
        - >
          while true;
          do
            echo "$(date)\n" >> /var/log/example.log;
            sleep 1;
          done
      volumeMounts:
        - name: varlog
          mountPath: /var/log
    - name: sidecar
      image: busybox
      args: [/bin/sh, -c, "tail -f /var/log/example.log"]
      volumeMounts:
        - name: varlog
          mountPath: /var/log
  volumes:
    - name: varlog
      emptyDir: {}

이 YAML 정의는 Kubernetes 파드에 Sidecar 패턴을 구현하는 간단한 예를 보여준다. 이 파드는 두 개의 컨테이너로 구성되어 있으며, "app" 컨테이너와 "sidecar" 컨테이너가 함께 실행된다.

여기서 "app" 컨테이너는 busybox 이미지를 기반으로 하며, 매 초마다 현재 날짜와 시간을 "/var/log/example.log" 파일에 기록하는 무한 루프를 실행한다. 이것은 로깅을 수행하는 주요 애플리케이션을 나타낸다.

"sidecar" 컨테이너도 busybox 이미지를 기반으로 하며, "/var/log/example.log" 파일을 모니터링하는 역할을 한다. "tail -f" 명령을 사용하여 로그 파일을 실시간으로 읽고 표시한다. 이것은 주 컨테이너가 생성하는 로그를 수집하고 모니터링하는 역할을 수행한다.

두 컨테이너는 동일한 "varlog" 볼륨을 공유하고, 이 볼륨을 통해 로그 파일을 읽고 쓸 수 있다. "varlog" 볼륨은 "emptyDir" 타입으로 정의되어 있으므로 파드의 생명 주기 동안 데이터가 유지되며 파드가 삭제되면 삭제된다.

 

 

실습

kubectl apply -f empty-dir.yml

파드 생성 확인

 

 

kubectl logs -f sidecar -c sidecar

매초마다 로그 생성 확인

'k8s' 카테고리의 다른 글

liveness probe 실습  (0) 2023.10.27
hostpath  (0) 2023.10.27
배포명세서 실습  (0) 2023.10.26
클러스터에 tomcat 배포  (0) 2023.10.26
클러스터 생성  (0) 2023.10.25