Add platform infrastructure configuration

This commit is contained in:
donghyeon-ka
2026-08-28 17:35:41 +09:00
parent fa76531e5b
commit 16c337bcc9
302 changed files with 83259 additions and 1 deletions
@@ -0,0 +1,38 @@
# AIStor 정적 Local PersistentVolume
상태(2026-07-23): 실제 클러스터 적용 및 바인딩 완료
이 기반 구성은 `/srv/k3s/aistor`에 마운트된 전용 XFS 파일시스템을 하나의 정적
Local PV에 연결한다.
| 리소스 | 값 |
| --- | --- |
| PersistentVolume | `aistor-data-local-pv` |
| StorageClass | `aistor-local-xfs-retain` |
| Kubernetes에 표시되는 용량 | `900Gi` |
| 접근 모드 | `ReadWriteOnce` |
| Reclaim 정책 | `Retain` |
| 바인딩 모드 | `WaitForFirstConsumer` |
| 필수 노드 | `donghyeon-system-product-name` |
ObjectStore pool은 이 StorageClass에 정확히 하나의 `900Gi` Claim을 요청한다.
`WaitForFirstConsumer`는 해당 Claim과 Local PV node affinity를 함께 반영한다.
StorageClass와 PV 모두 `Retain`을 사용하므로 Claim을 삭제해도 XFS 데이터는
지워지지 않지만, 복구와 재바인딩은 수동 작업이다.
적용하기 전에 호스트에서 다음 항목을 모두 확인한다.
```sh
findmnt -no SOURCE,TARGET,FSTYPE,OPTIONS /srv/k3s/aistor
df -hT /srv/k3s/aistor
kubectl get node donghyeon-system-product-name
```
첫 번째 명령은 전용 XFS 파티션이 정확한 경로에 마운트됐다고 출력해야 한다.
PV의 `900Gi` 용량은 하드 파일시스템 quota가 아니라 Kubernetes 바인딩
메타데이터다. 이 단일 노드 Local PV는 복제나 재해 복구를 제공하지 않는다.
현재 `data0-minio-aistor-pool-0-0` PVC가 `aistor-data-local-pv`에 Bound 상태이며
ObjectStore health는 `green`이다. `/srv/k3s/aistor`의 기존 XFS 메타데이터 사용량은
AIStor 객체 데이터와 별개일 수 있으므로 `du` 합계와 `df` 사용량을 동일시하지
않는다.
@@ -0,0 +1,27 @@
apiVersion: v1
kind: PersistentVolume
metadata:
name: aistor-data-local-pv
labels:
app.kubernetes.io/part-of: platform
app.kubernetes.io/component: object-storage
platform.hyeonworks.com/storage-tier: hdd
platform.hyeonworks.com/filesystem: xfs
spec:
capacity:
storage: 900Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: aistor-local-xfs-retain
local:
path: /srv/k3s/aistor
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- donghyeon-system-product-name
@@ -0,0 +1,6 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- storage-class.yaml
- aistor-data-pv.yaml
@@ -0,0 +1,12 @@
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: aistor-local-xfs-retain
labels:
app.kubernetes.io/part-of: platform
app.kubernetes.io/component: object-storage
platform.hyeonworks.com/storage-tier: hdd
provisioner: kubernetes.io/no-provisioner
reclaimPolicy: Retain
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: false