클라우드 + DevOps/Kubernetes (k8s)

Kubernetes 쿠버네티스 :: 동적 Volume, StorageClass

gamjadori 2024. 4. 19. 15:54
728x90

<Kubernetes 쿠버네티스 :: 동적 Volume, StorageClass>

<동적 Volume, StorageClass>

  1. 스토리지 정적 프로비저닝
    • 관리자가 수동으로 PV 생성
    • 해당 PV의 용량, 액세스 모드 및 저장소 유형과 같은 하위 저장소의 세부 정보 지정
    • 이러한 PV는 사용자가 생성하는 PVC 생성으로 요청되어 PVC의 요구 사랑과 일치하는 사용 가능한 PV에 바인딩
  2. 스토리지 동적 프로비저닝
    • PVC 요청에 대한 PV 생성 자동화
    • 관리자는 PV 생성하기 위한 템플릿인 StorageClass 정의
    • 각 StorageClass는 PV를 생성하는 책임이 있는 프로비저너를 지정
    • 사용자가 특정 StorageClass를 참조하는 PVC를 생성하면 프로비저너는 PVC의 요구 사항과 일치하는 PV를 자동으로 생성하여 관리자의 수동 개입 보류
    • 프로비저너는 일반적으로 CSP가 제공하는 볼륨 플러그인 사용
  • 동적 Volume, StorageClass 전략
    • 운영환경: StorageClass의 성능을 최대 설정
    • 개발환경: StorageClass를 느리지만 안전한 볼륨에 저장하도록 구성
    • 운영 정책에 따라 StorageClass를 정의하여 그에 상응하는 PV 자동 생성
  • StorageClass 생성을 위해 OpenEBS local hostpath 설치
kubectl apply -f <https://openebs.github.io/charts/openebs-operator-lite.yaml>
kubectl apply -f <https://openebs.github.io/charts/openebs-lite-sc.yaml>

 

1. OpenEBS Operator 및 OpenEBS StorageClass 배포

  • OpenEBS Operator
    • Kubernetes 클러스터에서 OpenEBS를 관리하는 데 사용되는 Kubernetes Operator
    • Kubernetes 애플리케이션을 배포, 관리 및 업그레이드하는 데 사용되는 컨트롤러
  • OpenEBS StorageClass
    • Kubernetes 클러스터에서 사용할 수 있는 스토리지 클래스를 정의
    • 스토리지 클래스는 PersistentVolumeClaim을 만들 때 사용되며, 해당 클래스에 지정된 스토리지를 동적으로 프로비저닝
[PS C:\\Users\\admin\\Desktop\\k8s-pods>kubectl apply -f <https://openebs.github.io/charts/openebs-operator-lite.yaml>
[PS C:\\Users\\admin\\Desktop\\k8s-pods>kubectl apply -f <https://openebs.github.io/charts/openebs-lite-sc.yaml>

<결과 확인>kubectl get sc -o wide

[PS C:\\Users\\admin\\Desktop\\k8s-pods> kubectl get sc -o wide

 

2. PersistentVolumeClaim 생성

<openebs-pvc.yaml>

  • ReadWriteOnce 액세스 모드를 사용하고 1Gi 용량의 스토리지 요청
  • StorageClass: openebs-hostpath 지정 (OpenEBS에서 제공하는 HostPath 프로비저너를 사용하여 호스트의 로컬 디스크에 PV 생성)
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
	name: openebs-pvc
spec:
	accessModes:
	- ReadWriteOnce
	resources:
		requests:
			storage: 1Gi
	storageClassName: "openebs-hostpath"

<적용>

[PS C:\\Users\\admin\\Desktop\\k8s-pods>kubectl apply -f openebs-pvc.yaml
persistentvolume/openebs-pvc created

<생성 확인>

 

3. Pod 정의

<mynode-sc-node.yaml>

  • mynode-sc-pod 라는 포드 정의
  • openebs-pvc (PersistentVolumeClaim)에 매핑된 볼륨 마운트
apiVersion: v1
kind: Pod
metadata:
  name: mynode-sc-pod
spec:
  containers:
  - name: mynode-container
    image: *****/mynode:1.0
    volumeMounts:
    - name: mynode-sc-path
      mountPath: /mount1
    ports:
    - containerPort: 8000
  volumes:
  - name: mynode-nfs-path
    persistentVolumeClaim:
      claimName: openebs-pvc

<적용>

[PS C:\\Users\\admin\\Desktop\\k8s-pods>kubectl apply -f mynode-sc-node.yaml
persistentvolume/mynode-sc-node.yaml created

<생성 확인>