클라우드/쿠버네티스(Kubernetes)

쿠버네티스 Kubernetes 스토리지 볼륨 6 / 정적 볼륨 프로비저닝 1

두뚜 2021. 7. 13. 00:49

# 정적 볼륨 프로비저닝

- PV 및 PVC리소스를 직접 생성하고 사용하는 방식

# NFS 스토리지 구성

# NFS 서버 패키지 설치


# NFS 공유 디렉터리 설정


# NFS 내보내기 설정


# NFS 공유 디렉터리에 파드가 사용 할 index.html 파일 생성


# NFS 공유 디렉터리에 적절한 권한 부여


# NFS 서버 서비스 재시작


# NFS 서버 서비스 상태 확인

더보기


vagrant@k-control:~$ sudo apt install -y nfs-kernerl-server


vagrant@k-control:~$ sudo mkdir /nfs-volume -


vagrant@k-control:~$ echo "/nfs-volume *(rw,sync,no_subtree_check)" | sudo tee /etc/exports


vagrant@k-control:~$ echo "hello NFS volume" | sudo tee /nfs-volume/index.html


vagrant@k-control:~$ sudo chown -R nobody:nogroup /nfs-volume
vagrant@k-control:~$ sudo chmod 777 /nfs-volume


vagrant@k-control:~$ sudo systemctl restart nfs-kernel-server


vagrant@k-control:~$ sudo systemctl status nfs-kernel-server



# NFS 클라이언트 구성(node1, node2, node3)


# NFS 클라이언트 패키지인 nfs-common 설치

파드가 직접 서버에 마운트해서 사용하는게 아니다. NFS서버가 있으면 호스트가 연결을 해서 호스트가 파드로 제공해주는 형태이기 때문에 노드에 nfs-common 패키지를 설치해야한다.



# PV 생성 및 확인

 

# pv 리소스 정의 파일 작성

더보기

# ldh-pv-nfs.yml
apiVersion: v1
kind: PersistentVolume
metadata:
name: ldh-pv-nfs
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
nfs:
path: /nfs-volume
server: 192.168.200.50


https://kubernetes.io/ko/docs/concepts/storage/persistent-volumes/

 

퍼시스턴트 볼륨

이 페이지는 쿠버네티스의 퍼시스턴트 볼륨 의 현재 상태를 설명한다. 볼륨에 대해 익숙해지는 것을 추천한다. 소개 스토리지 관리는 컴퓨트 인스턴스 관리와는 별개의 문제다. 퍼시스턴트볼륨

kubernetes.io

# .spec.capacity.storage : 스토리지 용량 지정(용량 제한)

# .spec.accessMode : 접근 방식 관련 옵션(스토리지에 따라 지원 옵션이 다름, 사용자 임의로 설정 불가)
1) ReadWriteOnce : 하나의 파드만 읽기/쓰기 가능
2) ReadWirteMany : 여러 파드 읽기/쓰기 가능
3) ReadOnlyMany : 여러 파드 읽기만 가능
ex) share목적인 파일시스템은 공유하기 위해 ReadWriteMany가 가능

 

# .spec.persistentVolumeReclaimPolicy : 회수 정책
1) Retain
2) Delete
3) Recycle

 

# .spec.nfs : NFS 볼륨 ,emptyDir, hostPath와 같은 볼륨을 지정. 볼륨에 따라 하위 필드는 달라진다.


# PV 리소스 생성


# PV 리소스 상태 확인

더보기

vagrant@k-control:~$ kubectl create -f ldh-pv-nfs.yml


vagrant@k-control:~$ kubectl get persistentvolumes

NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS
ldh-pv-nfs 5Gi RWX Retain Available

볼륨의 접근 모드 : RWX(ReadWriteMany)
정책 : 유지 정책 (Retain)
상태 : 사용 가능 (Available)


PV 리소스의 4가지 상태
- Available: 다른 PVC에 연결되지 않은 상태로 사용가능한 상태
- Bound : 특정 PVC에 연결
- Released: 연결되었던 PVC가 해제되었으며, 리소스를 회수하지 않은 상태
- Failed : 회수 실패


# PVC 생성 및 확인

#PVC 리소스 정의 파일

더보기

# ldh-pvc-nfs.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: ldh-pvc-nfs
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Gi
volumeName: ldh-pv-nfs
storageClassName: ''

PVC 리소스의 주요 필드
- .spec.accessModes : PV의 필드와 동일
- .spec.requests.storage : PV에 요청하는 크기
- .spec.volumeName : PV 리소스 이름을 지정
- .spec.storageClassName : 스토리지 클래스 이름 (지금은 지정하지 않음)


# PVC 리소스 생성


# PVC 리소스 상태 확인

볼륨의 접근 모드 : RWX(ReadWriteMany)
상태 : 연결 (Bound)

- 상태가 보류(Pending)상태면 연결 중 또는 적절한 PV리소스를 못찾은 것 (이러면 kubectl describe로 리소스 이벤트 원인을 찾아 해결)



# PV 리소스 상태 재확인

볼륨의 접근 모드 : RWX(ReadWriteMany)
정책 : 유지 정책 (Retain)
상태 : 연결 (Bound)

요청 : ldh-pvc-nfs PVC 리소스가 연결