티스토리 뷰

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
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함