Kubernetes에서 여러 노드의 디스크를 효율적으로 사용하는 방법
Kubernetes의 기본 스토리지 개념
1. Persistent Volume (PV)
PV는 클러스터 내의 실제 물리적 스토리지 리소스를 나타냅니다. 클러스터 관리자가 프로비저닝하며 클러스터 내 모든 사용자에게 제공됩니다.
2. Persistent Volume Claim (PVC)
PVC는 사용자가 스토리지를 요청할 때 생성됩니다. 특정 크기와 접근 모드를 지정하면, Kubernetes는 이에 맞는 PV를 찾아 PVC에 바인딩합니다.
3. StorageClass (SC)
SC는 서로 다른 유형의 스토리지를 추상화하고 제공하는 메커니즘입니다. 예를 들어, 고성능 SSD 스토리지나 저비용 HDD 스토리지를 정의할 수 있습니다. SC를 사용하면 PVC를 생성할 때 사용할 스토리지 유형을 지정할 수 있습니다.
여러 노드의 디스크를 효율적으로 사용하는 Longhorn의 필요성
기본적인 스토리지 관리 개념만으로는 여러 노드의 디스크를 효과적으로 활용하기 어려울 수 있습니다. Longhorn은 이러한 문제를 해결하기 위해 설계된 고가용성 분산 스토리지 솔루션입니다. 스토리지 분산 시스템은 Ceph, GlusterFS, Rook 등이 있지만 간편한 설치 및 UI를 통한 관리를 위해 Longhorn을 선택했습니다.
1. 디스크 자원의 최적화
Longhorn은 여러 노드에 걸쳐 데이터를 분산 저장하여 클러스터 내 모든 디스크 자원을 효율적으로 사용합니다. 이를 통해 특정 노드에 디스크 사용이 집중되는 문제를 방지할 수 있습니다.
2. 데이터 복제와 높은 가용성
Longhorn은 데이터를 여러 노드에 복제하여 저장합니다. 이를 통해 한 노드가 실패하더라도 데이터에 접근할 수 있어 고가용성을 보장합니다.
3. 자동 복구 기능
노드 장애가 발생하면 Longhorn은 자동으로 데이터를 다른 노드에 복제하여 데이터 일관성과 가용성을 자동으로 복구합니다. 이는 수동 개입 없이도 안정적인 스토리지 운영이 가능하게 합니다.
4. 손쉬운 설치 및 관리
Longhorn은 Kubernetes 환경에서 쉽게 배포할 수 있으며, 직관적인 UI를 통해 스토리지 상태를 모니터링하고 관리할 수 있습니다. Helm 차트를 통해 간편하게 설치 및 업그레이드가 가능합니다.
5. 고급 스토리지 관리 기능
Longhorn은 스냅샷, 백업, 복제본 관리 등 고급 스토리지 관리 기능을 제공합니다. 이를 통해 데이터 백업과 복구 작업이 더욱 간편해집니다.
Longhorn 설치
- Helm 리포지토리 추가
helm repo add longhorn <https://charts.longhorn.io>
helm repo update
- Longhorn 설치
kubectl create namespace longhorn-system
helm install longhorn longhorn/longhorn --namespace longhorn-system
- 설치 확인
kubectl get pods -n longhorn-system
- Longhorn UI 접근
# 노드포트 설정
kubectl -n longhorn-system patch svc longhorn-frontend -p '{"spec": {"type": "NodePort", "ports": [{"port": 80, "nodePort": 32000}]}}'
- 스토리지 클래스 설정
# longhorn-storageclass.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: longhorn
provisioner: driver.longhorn.io
parameters:
numberOfReplicas: "3" #데이터 복제본 수
staleReplicaTimeout: "30"
kubectl apply -f longhorn-storageclass.yaml
- PVC 생성 및 사용
# longhorn-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: longhorn-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: longhorn
kubectl apply -f longhorn-pvc.yaml
이제 Kubernetes 클러스터에서 Longhorn을 사용한 동적 볼륨 프로비저닝이 설정되었습니다. PVC가 정상적으로 생성되면, 이를 사용하는 애플리케이션에서 해당 PVC를 참조할 수 있습니다. Longhorn UI를 통해 볼륨을 관리하고 모니터링할 수 있습니다.