일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 피카푸캠핑도봉산
- kubernetes-ai
- 피카푸클램핑도봉산
- api-key
- 캠핑
- 쿠버네티스보안
- IT
- kub-ai
- 티스토리챌린지
- 파드
- 쿠버네티스
- k8sgpt
- kube-ai
- 오블완
- karpor
- CKS
- AI
- POD
- kubernetes
- mac터널링
- GPU
- virt-manager
- 피카푸글램핑
- 쿠버네티스기초
- k8s
- CKA
- macos 터널링
- 도봉산글램핑
- 글램핑
- KVM
- Today
- Total
마구잡
Kubernetes NFS-CSI 배포하기 본문
개요
쿠버네티스 클러스터를 운영 하다 보면 언젠가 필연적으로 로컬 볼륨을 넘어서 외부 스토리지를 사용할 경우가 생긴다.
그 필요에 따라 openEBS, Rook-Ceph, minIO, NFS-CSI 등 여러 스토리지 클래스를 선택하게 된다.
(광고 클릭은 큰 힘이됩니다)
오브젝트 스토리지들은 네트워크와 보조저장장치가 뒷받침 되지 않으면 실사용하기 힘든 단점이 있다.
그래서 벨레로 같은 특정 조건이 붙지 않으면 사용하기 편한 NFS-CSI를 필자는 자주 사용한다.
이 글에서는 배포하기 쉽고 배포 후 볼륨 확인이 직관적인 NFS-CSI를 배포해 본다.
OS | Redhat 8.6 |
클러스터 버전 | Kubernetes 1.29 |
https://github.com/kubernetes-csi/csi-driver-nfs
GitHub - kubernetes-csi/csi-driver-nfs: This driver allows Kubernetes to access NFS server on Linux node.
This driver allows Kubernetes to access NFS server on Linux node. - kubernetes-csi/csi-driver-nfs
github.com
공식 깃헙
쿠버네티스 스토리지 드라이버 지원 목록
https://kubernetes-csi.github.io/docs/drivers.html
Drivers - Kubernetes CSI Developer Documentation
The following are a set of CSI driver which can be used with Kubernetes: NOTE: If you would like your driver to be added to this table, please open a pull request in this repo updating this file. Other Features is allowed to be filled in Raw Block, Snapsho
kubernetes-csi.github.io
배포하기
NFS Server 구축
NFS용 패키지 설치
yum install nfs-utils bind bind-chroot bind-utils
Dependencies resolved.
==============================================================================================================================================================================================================
Package Architecture Version Repository Size
==============================================================================================================================================================================================================
Installing:
...
Transaction Summary
==============================================================================================================================================================================================================
...
Is this ok [y/N]: Operation aborted.
NFS 서버 노출 구성
vim /etc/exports
...
/data/storage 192.168.60.0/24(rw,async,no_root_squash,no_all_squash,no_subtree_check)
실제 볼륨이 쌓일 디렉터리 위치: /data/storage
접근 가능한 네트워크 대역 설정: 192.168.60.0
NFS 접근시 옵션들: (rw,async,no_root_squash,no_all_squash,no_subtree_check)
NFS 시작 및 상태확인
systemctl enable --now nfs-server
systemctl status nfs-server
● nfs-server.service - NFS server and services
Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled; vendor preset: disabled)
Drop-In: /run/systemd/generator/nfs-server.service.d
└─order-with-mounts.conf
Active: active (exited) since Sun 2024-03-31 19:54:54 EDT; 1 months 5 days ago
Main PID: 1210 (code=exited, status=0/SUCCESS)
Tasks: 0 (limit: 48670)
Memory: 0B
CGroup: /system.slice/nfs-server.service
NFS-CSI 배포
공식 가이드를 보고 진행하려면 아래 공식 깃헙을 보고 따라하면 된다.
https://github.com/kubernetes-csi/csi-driver-nfs/blob/master/docs/install-csi-driver-v4.7.0.md
csi-driver-nfs/docs/install-csi-driver-v4.7.0.md at master · kubernetes-csi/csi-driver-nfs
This driver allows Kubernetes to access NFS server on Linux node. - kubernetes-csi/csi-driver-nfs
github.com
깃 클론 후 배포
git clone https://github.com/kubernetes-csi/csi-driver-nfs.git
cd csi-driver-nfs
./deploy/install-driver.sh v4.7.0 local
클러스터 csidrivers.storage.k8s.io 확인
kubectl get csidrivers.storage.k8s.io
NAME ATTACHREQUIRED PODINFOONMOUNT STORAGECAPACITY TOKENREQUESTS REQUIRESREPUBLISH MODES AGE
nfs.csi.k8s.io false false false <unset> false Persistent 39d
스토리지 클래스 배포
vim nfs-csi.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
annotations:
storageclass.kubernetes.io/is-default-class: "true" # <- Default 스토리즈 클래스 설정
name: nfs-csi
mountOptions:
- nfsvers=4.1
parameters:
server: 192.168.60.115 # NFS Server를 구축한 IP or 도메인
share: /data/storage # NFS Server내 볼륨이 쌓이는 위치
provisioner: nfs.csi.k8s.io
reclaimPolicy: Delete
volumeBindingMode: Immediate
kubectl apply -f nfs-csi.yaml
스토리지 클래스 확인
kubectl get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
nfs-csi (default) nfs.csi.k8s.io Delete Immediate false 32d
PVC를 배포하여 동적 프로비저닝 되는지 확인
vim test-pvc.yaml
...
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: test-pvc
spec:
storageClassName: nfs-csi
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
kubectl apply -f test.yaml
kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE
test-pvc Bound pvc-b481dc08-0cf9-4ac1-84c3-75792733c36b 1Gi RWO nfs-csi <unset> 29s
PV 동적 프로비저닝 확인
kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS VOLUMEATTRIBUTESCLASS REASON AGE
pvc-b481dc08-0cf9-4ac1-84c3-75792733c36b 1Gi RWO Delete Bound gitlab/test-pvc nfs-csi <unset> 33s
NFS Server에서 볼륨 확인
cd /data/storage/
ll
...
drwxr-xr-x. 2 root root 4096 May 7 03:21 pvc-b481dc08-0cf9-4ac1-84c3-75792733c36b
배포 완료
다음엔 openEBS, RookCeph, minIO를 차례대로 포스팅 하겠다.
'Kubernetes' 카테고리의 다른 글
Kubernetes + gitlab + gitlab-ci + harbor + argocd 총 집합 ( 3 ) (2) | 2024.05.21 |
---|---|
Kubernetes + gitlab + gitlab-ci + harbor + argocd 총 집합 ( 2 ) (1) | 2024.05.15 |
Kubernetes + gitlab + gitlab-ci + harbor + argocd 총 집합 ( 1 ) (0) | 2024.05.02 |
Kubernetes Binary 설치 - 2 (0) | 2024.02.20 |
Kubernetes Binary 설치 - 1 (0) | 2024.02.19 |