storage란?
storage는 컴퓨터에 데이터를 저장하는 저장소 역할을 수행하는 부품이다.
컴퓨터의 하드디스크와 동일한 역할을 수행하는 부품이며, 스토리지를 직접 서버에 연결할 수 있다.
대용량의 데이터를 저장하기 위해 별도의 스토리지용 네트워크를 구성할 수 있다.
Volume을 사용해야 하는 이유
컨테이너 실행 중에 문제가 발생해 컨테이너가 삭제된다면, 데이터도 같이 삭제된다.
이때 로그 파일을 저장하거나, 데이터 베이스를 사용할 경우 실시간으로 생성되던 데이터가 사라지면 큰 장애가 발생한다.
따라서 컨테이너 사용 시 중요한 데이터는 볼륨을 사용해 보관해 주어야 한다.
Volume의 종류
emptyDir
Pod가 실행되는 디스크 공간에 볼륨을 마운트 한다.
주로 컨테이너끼리 데이터 공유를 위해서 사용하며, Pod가 사라지면 Volume도 같이 삭제되는 임시 볼륨의 성격을 가지고 있다.
✅ LifeCycle - pod 단위
컨테이너가 삭제되더라도 Pod가 실행되고 있다면 데이터는 emptyDir에 의해 보관된다.
Pod가 삭제되는 순간 데이터는 모두 삭제된다.
emptyDir 실습해보기
apiVersion: v1
metadata: Pod
name: emptydir-pod
spec:
containers:
- name: nginx
image: nginx
volumeMounts:
- mountPath: /emptydir # 실행될 컨테이너 내부 디렉터리
name: emptydir-volume # 마운트할 볼륨 이름
volumes:
- name: emptydir-volume # 볼륨 이름
emptyDir: {}
- spec.containers.volumeMounts.mountPath → 실행될 컨테이너 안에 마운트할 경로. 컨테이너 안에 해당 디렉토리가 없더라도 자동으로 생성 해준다.
- spec.containers.volumeMounts.mountPath → 마운트할 볼륨의 이름
- spec.voluems → 위에 작성한 emptydir-volume을 사용하도록 지정 해준다.
✅ Pod에 접속해 보았더니 파드 배포시 volumeMounts에 입력한 mountPath인 emptydir가 생성되었다.
해당 디렉토리에 들어가서 test.txt 파일을 생성해보았다.
✅ 현재 emptydir-pod에서 실행중인 nginx container의 /emptydir 디렉터리에 pod에서 생성한 test.txt 파일이 생성되었음 확인할 수 있다.
hostpath
해당 파드가 배포된 Node의 DIsk에 볼륨을 사용한다.
주로 파드의 데이터를 저장하는 용도가 아니라 노드의 데이터를 파드에 쓰기 위해 사용된다.
✅ LifeCycle - node 단위
pod가 사라지더라도 Volume에 있던 데이터를 유지한다.
hostpath 실습해보기
apiVersion: v1
kind: Pod
metadata:
name: hostpath-pod
spec:
containers:
- name: host-pod
image: nginx
volumeMounts:
- mountPath: /hostpath
name: hostpath-volume
volumes:
- name: hostpath-volume
hostPath:
path: /tmp/hostpath
type: DirectoryOrCreate
- spec.containers.volumeMounts.mountPath → 실행된 컨테이너 안에 마운트할 경로. 컨테이너 안에 해당 디렉토리가 없더라도 자동으로 생성 해준다.
- spec.containers.volumeMounts.name → 마운트할 볼륨의 이름
- spec.voluems.name → 위에 작성한 hostpath-volume을 사용하도록 지정 해준다.
- spec.voluems.hostPath → 노드에 마운트할 경로를 정해주고 해당 경로는 Directory 라는것을 명시 합니다. 해당 디렉토리는 노드에 생성되어 있어야 하며, DirectoryOrCreate를 사용할 경우 디렉토리가 존재하지 않으면 디렉토리를 생성 해준다.
✅ unikernel-worker라는 노드에 hostpath-pod가 배포된 것을 확인했다.
✅ unikernel-worker에서 /tmp/hostpath에 test.txt 파일을 생성했다.
✅ hostpath-pod의 /hostpath에 test.txt 파일이 생성된 것을 확인할 수 있었다.
https://nirsa.tistory.com/156?category=871751
[Kubernetes] 쿠버네티스 볼륨 개념 1편 (emptryDir, hostPath)
볼륨을 사용해야하는 이유? 컨테이너 특성 상 어떠한 문제가 발생하여 컨테이너가 삭제 된다면 데이터도 같이 삭제 됩니다. 웹 소스 파일의 경우 이미지에 들어있어 삭제 되더라도 상관 없겠지
nirsa.tistory.com
'Kubernetes' 카테고리의 다른 글
The connection to the server <host>:6443 was refused - did you specify the right host or port? (0) | 2022.01.06 |
---|---|
pod pv pvc 강제 삭제하기 (0) | 2022.01.06 |
[WARNING SystemVerification]: this Docker version is not on the list of validated versions: 20.10.12. Latest validated version: 19.03 (0) | 2021.12.31 |
master에 worker node 재조인하기 (0) | 2021.12.31 |
Kubernetes에서 Go application을 Unikernel로 실행하기 (1) | 2021.12.30 |