Volume에 대한 자세한 설명은 이전 포스팅 참고
Volume
- Volue은 Pod의 구성요소로 Pod Spec에서 정의된다.
- 파드가 시작되면 볼륨이 생성되고, 파드가 삭제되면 볼륨이 삭제된다.
- 볼륨은 파드의 모든 컨테이너에서 사용 가능하고 접근하려는 컨테이너에서 각각 마운트 되어야 한다.
EmptyDir
- 아무 데이터도 없는 빈 디렉토리를 제공해준다.
- 파드의 컨테이너 간에 Volume을 공유하기 위해 사용하며 컨테이너 간 파일을 공유할 때 유용하다.
- 파드가 실행되는 도중 컨테이너가 함께 사용할 수 있도록 임시 저장 공간을 생성한다.
spec:
container:
- volumeMounts:
- name: [마운트할 볼륨 이름]
mountPath: [경로]
volumes:
- name: [볼륨 이름]
emptyDir: {}
- spec.container.volumeMounts: 컨테이너 마운트 할 볼륨 선언
- spec.container.volumeMounts.name: 사용할 볼륨 이름().spec.volumn 필드와 이름 참조
- spec.containers.volumeMounts.mountPath: 컨테이너 내의 마운트 포인트
- spec.volumes.name: 볼륨의 이름
- spec.volumes.empty: emptyDir 정의
emptydir 볼륨을 생성하기 앞서 nginx와 ghcr.io/c1t1d0s7/fortune의 이미지를 사용할 것이다.
nginx와 ghcr.io/c1t1d0s7/fortune의 이미지는 docker를 통해 pull 한다.
docker pull nginx
docker pull ghcr.io/c1t1d0s7/fortune
* ghcr.io/c1t1d0s7/fortune는 명령을 실행할 때마다 랜덤 메시지를 출력한다.
emptydir 볼륨 생성
emptydir 볼륨을 생성하는 레플리카셋 정의.
// empty-rs.yaml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: emptydir-rs
spec:
replicas: 1
selector:
matchLabels:
app: emptydir-pod
template:
metadata:
labels:
app: emptydir-pod
spec:
containers:
- name: web-server1
image: nginx:latest
volumeMounts:
- name: web-volume
mountPath: /usr/share/nginx/html
readOnly: true
ports:
- containerPort: 80
- name: web-server2
image: ghcr.io/c1t1d0s7/fortune
volumeMounts:
- name: web-volume
mountPath: /var/htdocs
volumes:
- name: web-volume
emptyDir: {}
- 해당 파일은 라플리카셋을 통해 볼륨을 생성한다.
- 볼륨의 이름은 web-volume이다.
- web-server1 컨테이너는 nginx 웹 서버 이미지를 사용하여 /usr/share/nginx/html 디렉토리에 볼륨을 마운트.
- web-server2 컨테이너는 ghcr.io/c1t1d0s7/fortune 이미지를 사용하여 같은 볼륨을 /var/htdocs 디렉토리에 마운트.
서비스를 생성.
apiVersion: v1
kind: Service
metadata:
name: emptydir-svc
spec:
ports:
- port: 80
targetPort: 80
selector:
app: emptydir-rs
- 서비스를 80포트로 설정한다.
web-server1 컨테이너의 /usr/share/nginx/html/index.html 파일 확인.
- fortune에 의해 랜덤한 문장이 생성된 것을 확인할 수 있다.
web-server2 컨테이너의 /var/htdocs/index.html 파일 확인.
- 마찬가지로 fortune에 의해 랜덤한 문장이 생성된 것을 확인할 수 있다.
728x90
반응형
'DevOps > Kubernetes' 카테고리의 다른 글
[Kubernetes] helm이란? (0) | 2024.07.22 |
---|---|
[Kubernetes] 쿠버네티스 클러스터의 구조와 컴포넌트 (0) | 2024.07.22 |
[kubernetes] PV, PVC란? (0) | 2024.07.15 |
[kubernetes] Node란 (0) | 2024.07.10 |
[kubernetes] Pod 외부 접속 연결하기 (0) | 2024.07.09 |