티스토리 뷰
728x90
📦 StorageClass 설치 방법
- Kubespray로 쿠버네티스 설치를 완료했지만,
- 아직 기본 StorageClass가 없거나 불완전한 상태
- 이제 동작하는 StorageClass를 추가/설정해야 ArgoCD 같은 것들도 문제없이 설치 가능
2. 가장 많이 쓰는 선택지
방법 | 설명 | 추천 상황 |
NFS 서버 연결 | 외부에 NFS 서버 띄우고, NFS StorageClass 설치 | 개인 서버, 클라우드 아닌 환경 |
Local Path Provisioner | 각 노드 로컬 디스크를 스토리지처럼 사용 | 소규모, 실습/테스트 |
Rook-Ceph | 자체 분산 스토리지 구축 (PVC 자동 프로비저닝) | 고가용성, 대규모 환경 |
Cloud Provider StorageClass | AWS EBS, GCP PD 같은거 사용 | 퍼블릭 클라우드(Kubespray cloud 모드) |
3. 실전: LocalPath Provisioner 설치 (가장 쉬움)
가장 빨리 쓸 수 있는 방식부터 보여드릴게요.
3.1. 설치
kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/master/deploy/local-path-storage.yaml
✅ 위 명령어 한 번이면 Local Path Provisioner가 설치되고, StorageClass가 생깁니다.
3.2. Default StorageClass로 설정 (선택)
만약 Default StorageClass로 지정하고 싶으면:
kubectl patch storageclass local-path -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
✅ 이렇게 해야 PVC 만들 때 storageClassName 지정 안 해도 자동 연결됩니다.
4. 실전: 외부 NFS 서버 연결하는 방법 (조금 더 탄탄하게)
만약 NFS 서버를 쓸 수 있다면 다음처럼 합니다.
4.1. NFS Client Provisioner 설치
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/nfs-subdir-external-provisioner/master/deploy/deployment.yaml
(참고: 실제로 values.yaml 수정해서 Helm으로 배포하는 걸 권장합니다.)
4.2. StorageClass 예시 (nfs-client)
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: nfs-client
provisioner: example.com/nfs
parameters:
archiveOnDelete: "true"
mountOptions:
- vers=4.1
4.3. Default 설정
kubectl patch storageclass nfs-client -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
5. 설치 후 StorageClass 상태 확인
StorageClass가 제대로 설치됐는지 꼭 확인합니다.
kubectl get storageclass
예시 출력:
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
local-path (default) rancher.io/local-path Delete WaitForFirstConsumer false 2m
6. 참고: Kubespray 설치하면서 자동으로 StorageClass 추가하는 법
만약 Kubespray 설치하는 시점에 StorageClass를 같이 준비하고 싶으면, inventory/mycluster/group_vars/k8s_cluster/addons.yml 파일을 수정합니다.
nfs_provisioner_enabled: true
nfs_provisioner_nfs_server: <YOUR_NFS_SERVER_IP>
nfs_provisioner_nfs_path: /exports
- 설치할 때 자동으로 NFS Provisioner 설치 + StorageClass 생성됩니다.
✅ 정리
작업 | 명령어/설명 |
Local Path Provisioner 설치 | kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/master/deploy/local-path-storage.yaml |
Default StorageClass 설정 | kubectl patch storageclass local-path -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}' |
설치 확인 | kubectl get storageclass |
(선택) 설치 중 자동 추가 | Kubespray addons.yml 수정 |
추가로,
- ArgoCD, GitOps, Helm 같은 걸 쓰려면 반드시 기본 StorageClass 가 있어야 함.
- 그리고 dynamic provisioning 이 제대로 되는지 테스트도 권장합니다 (PVC → PV 연결되는지).
728x90
'쿠버네티스' 카테고리의 다른 글
📦 OpenFaaS란? (0) | 2025.04.14 |
---|---|
MetalLB와 물리 장비 연동을 통한 Kubernetes LoadBalancer 구성 정리 (0) | 2025.04.06 |
쿠버네티스 클라우드 네이티브 오토스케일링 방법 (0) | 2025.04.06 |
ConfigMap을 활용한 유용한 응용 팁 (0) | 2025.04.06 |
Kubernetes ConfigMap을 이용해서 데이터를 마운트 (0) | 2025.04.06 |