local-path로 StorageClass 만들기

다 먼지같은 일입니다·2021년 8월 26일
0

분산저장..?

kubernetes에 분산저장과 관련된 기능이 필요했다.
기존의 클러스터는 스토리지 서버가 따로 존재했기 때문에 모든 pv들은 해당 스토리지 서버에 생성하는 방식이었다.

스토리지 서버내에서 이중화는 적용되어 있지만, 그래도 서버 1대가 아닌가. 만약 통째로 터지면 안되는것.....

Hadoop처럼 분산저장에 대한 니즈가 생겨 검토를 진행했다.

Hostpath는 왜 안써?

hostpath로 볼륨을 설정하면 매우 편리하다. 다만...

지금 보이는 조회되는 것은 namenode의 pvc이다. Hostpath로 설정한 datanode의 volume은 pvc로 조회되지 않는다.

내부적으로 사용중인 페이지에서 pvc의 목록을 가져오는 것이 있기 때문에 pvc로 조회되지 않는 것은 곤란

그렇다고 pv를 수동으로 만들자니 뭔가 통일성이 없는거 같아서 local-path-provisioner를 찾아보았다.

해당 그림의 volume 부분을 local-path-provisioner를 이용하여 pv로 구현하고자 한다.

rancher

https://github.com/rancher/local-path-provisioner

위의 프로젝트를 이용하여 설치를 진행해보았다.

기존의 nfs-provisioner와 다른점은 VolumeBindingMode의 차이인거 같았다.

  • immediate: pvc 생성 즉시 pv도 생성하고 바인딩
  • waitForFirstConsumer: pvc를 생성하면 pending 처리, pod와 마운트 되면 pv 생성후 바인딩

생각해보면 꼭 필요한 옵션.
pod가 어떤노드에 생길지 알고 미리 pv를 미리 만든단 말인가

pvc를 미리 생성한 후 pending 상태에서 pod를 만들어 마운트 해주면

위와 같이 pvc가 정상적으로 바인딩 된 모습을 확인할 수 있다.


또한 실제로 pod이 배포된 노드로 가면 pv가 정상적으로 생성된 것도 확인할 수 있다.

기본 디렉토리는 /opt/local-path-provisioner이지만 원한다면 provisioner 설치시 configMap을 수정하여 변경할 수 있다.

0개의 댓글