본 문서에서는 ceph를 kubernetes의 영구저장장치인 persistent volume의 backend 저장장치로 사용하는 방법에 대해 기술하겠다. 사용할 수 있는 Ceph 클러스터가 있는 상태에서 k8s 클러스터에서 이를 활용하는 구체적인 방법을 정리한다.

Ceph?

ceph는 신뢰도있고 확장가능한 저장소로 범용 사용을 위해 설계되었다. 기존의 EMC나 NatApp의 상용 스토리지와 비슷한 성능을 일반 하드웨어를 통해 구성하고자하는 목적으로 만들어진 오픈소스이며 자세한 내용은 공식페이지(http://cerph.com)를 참조하자.

ceph.png

kubernetes환경에서 ceph를 설치하는 rook라는 프로젝트도 존재하며 이에 대해서는 자세히 다룬 블로그가 이미 존재하므로 참조하여 구축할 수 있다.(https://devocean.sk.com/search/techBoardDetail.do?ID=163760)

Ceph RBD를 kubernetes PV Backend 로..

Ceph Provisioner

과거에 ceph rbd를 사용하기 위해 이용했던 것으로 kubespary를 통해 설치시 지정하거나 yaml 을 통해 직접 kubernetes 클러스터에 적용(apply)해서 사용했었다. 하지만 kubernetes 진영에서 직접적으로 3rd 구현물들을 포함하지 않고 인터페이스를 통해 3rd들이 기능을 제공하도록 하는 전략을 네트워크와 스토리지에 적용하면서 retired로 규정한 상태이다. 동작은 하지만 권장하는 방법인 ceph-csi를 사용하자.

ceph-csi

ceph 커뮤니티에서 kubernetes의 저장소 인터페이스를 구현한 ceph용 구현체(https://github.com/ceph/ceph-csi)이다.

Ceph CSI 플러그인은 container orchestrator(kubernetes)와 ceph 클러스터간 인터페이스에 대한 구현이다. ceph 볼륨을 동적으로 배포하고 워크로드와 연결시킨고, ceph의 다양한 제공기능인 rbd(rbd 문서 참조)와 cephfs 볼륨(cephFS 문서참조), nfs 볼륨을 지원한다.

Helm chart로 설치하고 사용하기

기본적으로 설치, 삭제 유틸리티가 https://github.com/ceph/ceph-csi/tree/devel/examples 의 하부디렉토리로 rbd, cephfs, nfs별로 제공되고 있다.

앞에 소개한 설치 스크립트를 통해 설정을 추가하여 k8s에 ceph 클러스터를 연결가능하지만 너무 복잡하다. 이에따라 일반적으로 팀에서 사용하던 방법이고 k8s에서 간결한 배표툴인 helm을 사용하여 적용한다. Helm chart의 코드는 다음 위치에서 확인할 수 있다. https://github.com/ceph/ceph-csi/tree/devel/charts/ceph-csi-rbd

Helm repo

앞에서 제시한 코드를 받아서 사용할 수도 있지만 ceph에서는 helm repo를 통해 챠트를 제공하고 있다. 다음과 같이 등록하자.

siim@adm:~/ceph-csi$ helm repo add ceph-csi <https://ceph.github.io/csi-charts>

"ceph-csi" has been added to your repositories

siim@adm:~/ceph-csi$ helm search repo ceph-csi
NAME                            CHART VERSION   APP VERSION     DESCRIPTION                                       
ceph-csi/ceph-csi-cephfs        3.6.1           3.6.1           Container Storage Interface (CSI) driver, provi...
ceph-csi/ceph-csi-rbd           3.6.1           3.6.1           Container Storage Interface (CSI) driver, provi...helm repo add ceph-csi <https://ceph.github.io/csi-charts>