
현재 입주해 있는 테넌트 중 한 분이 “인스턴스가 재시작 되면 일부 코드가 날라가는 것 같아요” 라는 피드백을 주셨습니다. 이전에 진행한 스토리지 설정 과정 에서 스토리지 자원 관리(Quota)와 데이터 격리(Isolation)만 설정을 했고, 영속성에 대한 생각을 못했던 것이 문제가 되었습니다.
치명적인 문제가 발생했기에,, 빠르게 작업을 해주었습니다..
들어가기 전 개념 정리 (PV & PVC)
- 쿠버네티스에서 스토리지는 크게 두 단계로 관리됩니다.
📌 PV (PersistentVolume)
- 실제 물리적 스토리지(SSD)의 일부분을 쿠버네티스가 인식할 수 있는 자원 형태로 등록해둔 것 →
관리자 영역📌 PVC (PersistentVolumeClaim)
- 사용자가 특정 용량과 접근 권한을 명시하여 스토리지를 할당받으려고 제출하는 요청 →
테넌트 영역테넌트가 PVC를 생성하면, 쿠버네티스는 테넌트의 요구사항(용량, 읽기/쓰기 모드)에 맞는 PV를 찾아서 서로 연결(
Binding) 해줍니다.
/config 내에 생성한 데이터, 파일들은 영속성이 보장되지만, 그 밖에 생성한 코드의 경우 영속성 유지가 안 됨.
현재 v1-basic-setup.sh 내에 있는 volumeMounts의 경로는 /config
→ 이를 유지하며 subPath 기능을 사용해 영역 추가하기

name: tenant-storagetenant-storage 라는 이름의 PVC를 찾아서 가져옴. 이전에 설정한 8Gi 짜리 디스크 공간을 가리킴mountPath/config : SSH 서버가 부팅될 때 필요한 호스트 키, 설정 파일들을 읽어가는 장소/home/tenant-user : 테넌트가 접속하자마자 마주하는 홈 디렉토리subPathsystem-config, tenant-home-data 라는 별도의 디렉토리를 자동 생성하여 관리system-config : PVC 내부에 system-config 라는 폴더를 만들어 SSH 시스템 파일만 따로 모음tenant-home-data : PVC 내부에 tenant-home-data 폴더를 만들어 유저가 생성한 폴더나 파일들만 따로 모음subPath 없이 마운트하면 볼륨의 루트(Root)가 해당 경로를 완전히 덮어씌우는 상황 발생.subPath 기능을 통해 시스템 설정 파일과 사용자 데이터를 물리적으로 분리 & 관리포인트(PVC)는 하나로 유지tenant-storagesystem-configtenant-home-dataBeforeAfter