[k8s] Local Block Storage / Shared Block Storage / Shared File Storage

YunKwang-You·2023년 11월 19일
1

k8s

목록 보기
4/5
post-thumbnail

k8s의 스토리지는 총 세 가지 분류로 나뉩니다.


1. Local Block Storage

각 Node의 Pod는 자신의 특정 디스크 영역만을 할당 받아 사용할 수 있습니다. 다른 Node 내 디스크 영역을 사용하거나, 다른 Node 내 Pod가 자신의 디스크 영역을 사용하는 것은 불가합니다. LBS 내에서도 두 가지 종류가 존재합니다.

  • Host Path LBS

    호스트 노드의 특정 디렉터리에 데이터를 할당합니다.

  • Device LBS

    노드에서 별도로 마운트하지 않은 디스크 디바이스에 파드의 데이터를 저장합니다.


2. Shared Block Storage

=> Local Host Path Block Storage 와는 다르게 k8s의 PV 에서 지정한 Node의 디스크 영역을 분산하여 나누고, 각 Node의 Pod가 해당 PV를 사용할 수 있습니다. 단, 다른 Pod와 동시에 해당 PV를 바라보는 PVC를 사용할 수 없습니다.(ReadWriteOnce 만 가능, ReadWriteMany 불가능). Shared Block Storage의 장점은 가용성입니다. 특정 Node가 Down되거나 이상동작하게되면, Deployment에서 다른 Node에 Application Pod를 배포하게 될 것이고, 해당 Pod는 동일한 PVC를 가져 Replication 되어있는 다른 Node의 디스크 볼륨(PV)을 참조해서 복구합니다. Shared Block Storage에서는 데이터가 분산되어 Replication 되어있기 때문에, Snapshot 기능도 이용할 수 있습니다. Snapshot은 PVC를 대상으로 합니다. PVC를 복구하게되면 PVC가 바라보는 PV가 Node에 분산되어있는 Volume중 하나를 바라보게됩니다.


3. File Storage

=> 파일 스토리지는 블록 스토리지와 다르게 특정 볼륨의 파일을 동시에 읽고 쓰기 가능합니다. 정확히 말하면 파일 스토리지는 Node 자신의 다른 Pod 및 다른 Node의 Pod와 동시에 같은 PVC를 할당 가능합니다.( 단 ReadWriteOnce / ReadWriteMany 로 구분하여 ReadWriteOnce의 경우 다른 Pod가 같은 PVC를 바라보지 못하도록 제한할 수 있습니다. )

도움이 되길 바랍니다. : )


부가설명

Shared Block Storage / Shared File Strorage 사용을 위해서는

(1) Operator : 쿠버네티스 애플리케이션 관련 복잡한 작업을 처리해주는 컨트롤러 (대략적으로 Kernal위의 OS느낌을 받았습니다.)

(2) CSI(Container Storage Interface) : k8s core code에서 분리되어 외부 Storage 솔루션을 자유롭게 이용할 수 있도록 하는 인터페이스

(3) Storage Solution : 스토리지

이렇게 세 가지가 필요합니다.

profile
Network Infra Engineer

0개의 댓글