Storage Volume

김현수·2024년 3월 15일
0

Kubernetes

목록 보기
7/14

Kubernetes in Action, Second Edition MEAP V15 정리중

Volume이란?

container들이 파일시스템을 사용하도록 마운팅할 수 있는 저장공간

Volumn은 pod에 마운팅되고 pod과 같은 수명을 갖는다. 따라서 container가 재시작되어도 volumn의 정보는 그대로 남기 때문에 다시 가져와서 작업하면 된다.

물론 container가 crash되어 종료된 후 restart시 volume의 모든 정보를 다시 가져오면 또 crash날 확률이 높으므로 가져올 정보는 구분하자.

하나의 container에서 여러 개의 Volume에 마운트할 수 있다.

또는 r/w 권한을 부여하여 한 volume을 통해 container들끼리 데이터를 주고받을 수 있다.

External Storage에 Volume 마운트

pod에 한정된 Volume을 로컬 파일시스템이나 등의 외부 네트워크 저장소등과 연결해서 데이터를 주고받을 수 있다.

External storage 또한 여러 pod에서 동시에 접근할 수 있다.

Volume 유형

여러 유형이 있어서 더 많은 건 그때그때 확인해야겠지만, 중요한 것만 간단하게 써보려고 한다.

emptyDir

가장 간단한 Volume 형태로, 외부에서 마운트하지 않고 pod이 시작될 때 생성되어 pod의 lifecycle동안 데이터를 저장한다.

주로 container가 재시작되어도 데이터가 보존되어 있어야 하거나, 두 container가 서로 데이터를 공유할 때 사용한다.

gcePersistentDisk, awsElasticBlockStore, ...

클라우드 스토리지를 pod에 마운트할 때 사용한다. 여러 pod에서 사용할 수 있다는 장점이 있다.

주의사항은 cluster가 어떤 환경에서 실행되느냐에 따라 사용할 수 있는 저장소가 달라진다.

hostPath

node의 파일 시스템에서 pod로 마운트할 때 사용한다.

pod이 항상 동일한 node에서 실행되도록 보장되는건 아니기 때문에, pod이 다른 node로 rescheduled되면 데이터에 접근할 수 없는 위험이 있다.

일반적으로 hostPath 볼륨은 노드의 파일 시스템에서 읽거나 쓰는 파일이 필요한 경우에 사용된다. 예를 들어, 시스템 수준의 로그와 같이 노드에서 실행되는 프로세스가 읽거나 생성하는 파일에 대한 것이다.

configMap, secret, ... -

특수한 Volume 형태로, Kubernetes 객체에 대한 정보를 파일을 통해 볼 수 있는 볼륨이다.

csi

Container Storage Interface로 자신만의 저장소 드라이버를 만들어서 연결 가능한 볼륨

persistentVolumeClaim

외부 저장소를 pod으로 가져올 때 사용한다. 다음 장에서 자세히 설명한다.

profile
개발자 스터디 블로그

0개의 댓글