SSD 정적 Local PersistentVolume
첫 배포에서는 서버의 루트 SSD에 워크로드별 Local PV 두 개를 예약한다.
| 워크로드 | StorageClass | 로컬 경로 | 선언 용량 |
|---|---|---|---|
| 플랫폼 PostgreSQL | ssd-local-postgres-retain |
/srv/k3s/ssd/platform-postgres |
20Gi |
| Gitea | ssd-local-gitea-retain |
/srv/k3s/ssd/gitea |
50Gi |
별도의 StorageClass를 사용하여 PostgreSQL의 20 GiB Claim이 Gitea의 50 GiB 볼륨에
잘못 바인딩되는 것을 방지한다. WaitForFirstConsumer를 사용하면 Scheduler가
Local PV의 node affinity를 반영할 수 있다. 두 PV 모두 Retain을 사용하므로
Claim을 삭제해도 디스크의 데이터는 삭제되지 않는다.
PVC는 의도적으로 이 인프라 디렉터리가 아니라 소유자와 함께 둔다.
- CloudNativePG는
Cluster의 storage 명세에서 PostgreSQL 인스턴스 PVC를 생성한다. 이 PVC는ssd-local-postgres-retain과20Gi를 요청해야 한다. - Gitea 서비스 배포가 직접 또는 공식 Chart를 통해 자체 PVC를 소유한다. 이 PVC는
ssd-local-gitea-retain과50Gi를 요청해야 한다.
PV를 생성하기 전에 scripts/bootstrap/prepare-ssd-local-paths.sh를 수동으로
실행한다. 이 스크립트는 /srv가 루트 파일시스템에 있는지 확인한 후 정확히 두
디렉터리만 준비한다.
Local PV의 capacity 필드는 바인딩 메타데이터이며 파일시스템 quota가 아니다.
PostgreSQL과 Gitea는 루트 SSD의 여유 공간을 공유한다. 루트 파일시스템을
모니터링하고, 하드 제한이 필요해지면 파일시스템 또는 블록 장치 quota를 별도로
추가한다.
Local PV는 이 워크로드들을 donghyeon-system-product-name 노드에 종속시킨다.
Retain은 자동 파일 삭제를 막지만 백업이나 고가용성을 제공하지 않는다. Released
상태의 PV를 재사용하는 작업은 명시적인 복구 절차로 수행해야 한다.