Container Storage Interface
CSI (Container Storage Interface)
개념
- CRI(Container Runtime Interface), CNI(Container Network Interface) 이 다양한 컨테이너 런타임, 다양한 네트워크 솔루션을 지원하기 위해서 도입되었듯이, CSI(Container Storage Interface)는 다양한 스토리지 솔루션을 연동하기 위해 만들어진 인터페이스이다.
- 스토리지 벤더는 CSI 표준에 맞는 드라이버만 구현하면 Kubernetes와 연동 가능하다.
예시
- Portworx
- Amazon EBS
- Azure Disk
- Dell EMC (Isilon, PowerMax, Unity, Xtremio)
- NetApp
- Nutanix
- HPE
- Hitachi
- Pure Storage 등
특징
- Kubernetes 전용 표준이 아니고, 범용 컨테이너 오케스트레이션 표준이다.
- 이에 Cloud Foundry, Mesos, Nomad 등의 다른 컨테이너 오케스트레이션 플랫폼에서도 사용 가능하다.
RPC (Remote Procedure Call)
개념
- RPC (Remote Procedure Call)는 컨테이너 오케스트레이터가 볼륨 생성/삭제/연결 등의 스토리지 작업을 원격 스토리지 드라이버에게 요청하고 그 결과를 받는 표준화된 통신 방법이다.
- CSI는 RPC 집합을 정의하며, 스토리지 드라이버는 이를 반드시 구현해야한다.
- 이에 Kubernetes와 같은 컨테이너 오케스트레이터는 스토리지 드라이버의 내부 구현을 몰라도 표준 RPC 호출만 수행하면 된다.
예시
- CreateVolume
Pod가 생성되는 과정에 볼륨이 필요할 때- Kubernetes -> CSI 드라이버 호출
- 스토리지 드라이버는 실제 스토리지에 볼륨을 생성
- DeleteVolume
- 볼륨이 더이상 필요 없을 때
- Kubernetes -> CSI 드라이버 호출
- 스토리지 드라이버는 실제 스토리지에서 볼륨 삭제
레퍼런스
- https://github.com/container-storage-interface/spec
- https://kubernetes-csi.github.io/docs/
- http://mesos.apache.org/documentation/latest/csi/
- https://www.nomadproject.io/docs/internals/plugins/csi#volume-lifecycle
- Udemy - Certified Kubernetes Administrator (CKA) with Practice Tests (Mumshad)