NFS on Kubernetes

  • Post Author:
  • Post Category:칼럼
  • Post Comments:0 Comments
  • Post last modified:April 8, 2020
Wake Up From Your Sleep by Dave
Wake Up From Your Sleep by Dave

Kubernetes용 NFS Provisioner는 두 가지가 눈에 띈다.

둘 다 NFS-Ganesha를 이용하는데 벤치마크로 봤을 때 준수하고 무난한 선택이라고 생각한다. 로컬 디스크 대비해 50~60%의 성능을 보인다. 기대치에 따라 좋다고도 나쁘다고도 할 수 있다. WordPress처럼 서버를 수평확장하려면 NFS가 필수적인 경우도 있다. Object Storage를 최대한 활용하는 회피 수단이 없진 않다. 그러나 NFS를 아예 안 쓰며 수평확장하기엔 고통이 많이 따를 수 있다. 이러한 경우라면 수평확장해서 얻는 성능 이점이 NFS의 저조한 IO 성능을 만회한다.

NFS는 DigitalOcean 같은 퍼블릭 클라우드에서 운영비용을 줄일 때도 도움이 된다. 모임에서 운영하는 Kubernetes 클러스터의 경우에는 CPU와 메모리가 다소 남는 상황이나 볼륨 제한 때문에 유휴 리소스를 제대로 활용하기 힘들다. Droplet(AWS의 EC2 인스턴스)에 달 수 있는 Block Storage의 최대 개수가 일곱 개에 불과(?)하기 때문이다. 볼륨을 더 달 수 있다면 유휴 리소스를 최대한 활용할 여지가 있다.

디지털오션의 Kubernetes(이하 DOKS)처럼 관리형 서비스인 경우 어느 정도는 커스터마이징에 제한을 받는다. 따라서 Rook Ceph 같이 Block Storage 서비스를 자체 운영하는 방식은 손을 많이 탄다. 미션크리티컬한 상황이 아니라면 NFS가 더 편리하고 효과적인 수단일 수 있다. Ceph에 비해선 NFS가 더 단순하고 이해하고 운영하기에 덜 복잡하기 때문이다.

어느 Provisioner를 선택해야 하나?

Rook은 Operator를 표방하니 운영 자동화의 도움을 좀더 받을 수 있으리라 기대하나 큰 차이라고 생각하진 않는다. 어느 쪽을 선택해도 문제가 없다.

Also in Kubernetes Storages

Kubernetes 스토리지의 모든 것

  1. Kubernetes에 EBS 볼륨 붙이기
  2. NFS on Kubernetes
  3. AWS 블록 스토리지 개요와 비용

View the entire series

Buy me a coffeeBuy me a coffee

최 재훈

Kubernetes, DevSecOps, Golang, 지속적인 통합 등 다양한 주제에 관심이 많다.