이세개발
article thumbnail

다음은 쿠버네티스에서 동적 프로비저닝을 사용하여 스토리지를 관리하는 방법에 대한 설명입니다.

다음은 쿠버네티스에서 동적 프로비저닝을 위한 PersistentVolumeClaim (PVC)에 대한 YAML 파일 예시입니다. 이 예시는 AWS EBS CSI Driver 저장소에서 가져왔습니다:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: myapp-pvc-dynamic
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Gi
  storageClassName: nfs-client

이 YAML 파일에서:

  • apiVersion, kind, 그리고 metadata는 표준 쿠버네티스 필드입니다. metadata는 PVC의 이름을 포함합니다.
  • spec은 PVC의 세부 사항이 정의되는 곳입니다:
    • accessModes는 볼륨이 가져야 하는 접근 모드를 지정합니다. ReadWriteMany는 볼륨이 여러 노드에 의해 읽기-쓰기로 마운트될 수 있음을 의미합니다.
    • resources는 PVC가 요청하는 스토리지 리소스를 지정합니다. 여기서는 1Gi의 스토리지를 요청합니다.
    • storageClassName은 StorageClass를 지정합니다. 여기서는 nfs-client StorageClass가 사용되며, 이는 이전에 클러스터에 정의되어 있어야 하며 NFS 서버를 사용하도록 설정되어 있어야 합니다.

실제 프로비전된 스토리지는 StorageClass의 설정과 기본 스토리지 제공자의 설정에 따라 달라질 것입니다.


이번 예제에서는 NFS를 이용한 동적 프로비저닝을 설정하였습니다. NFS 서버가 이미 설정되어 있다면, 해당 서버를 사용하면 되고, 없다면 이전에 사용한 NFS 서버를 먼저 설치해야 합니다.

다음은 동적 프로비저닝을 위한 YAML 파일들입니다.

myapp-rs-dynamic.yaml

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: myapp-rs-dynamic
spec:
  replicas: 2
  selector:
    matchLabels:
      app: myapp-rs-dynamic
  template:
    metadata:
      labels:
        app: myapp-rs-dynamic
    spec:
      containers:
      - name: web-server
        image: nginx:alpine
        volumeMounts:
        - name: web-content
          mountPath: /usr/share/nginx/html
        ports:
        - containerPort: 80
      volumes:
      - name: web-content
        persistentVolumeClaim:
          claimName: myapp-pvc-dynamic

myapp-pvc-dynamic.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: myapp-pvc-dynamic
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Gi
  storageClassName: nfs-client

위의 YAML 파일들을 쿠버네티스에 적용하면, myapp-pvc-dynamic라는 PersistentVolumeClaim이 생성되고, 이를 사용하는 Pod가 배포됩니다. 이때, PVC는 nfs-client라는 StorageClass를 사용하도록 설정되어 있습니다. 이 StorageClass는 NFS 서버를 이용한 동적 프로비저닝을 지원하도록 설정되어 있어야 합니다.

참고자료:

profile

이세개발

@print(name)

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!