2023. 10. 27. 10:52ㆍk8s
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 |