기존 EBS 볼륨 가져오기

개요

AWS Elastic Block Store(EBS)가 이미 있는 경우

볼륨을 GKE on AWS로 가져오려면 PersistentVolume(PV) 객체를 만들어 특정 PersistentVolumeClaim(PVC)에 예약할 수 있습니다.

이 페이지에서는 데이터가 채워진 기존 EBS 볼륨을 사용하여 PV를 만드는 방법과 Pod에서 PV를 사용하는 방법을 설명합니다.

시작하기 전에

이 단계를 완료하기 전에 다음을 수행해야 합니다.

암호화된 EBS 볼륨 사용

EBS 볼륨이 AWS Key Management Service(KMS)로 암호화되는 경우 AWS용 GKE 제어 영역의 AWS IAM 역할에 KMS 키에 대한 액세스 권한을 부여해야 합니다.

제어 영역 역할에 키에 대한 액세스 권한을 부여하려면 다음 안내를 따르세요.

  1. 클러스터의 제어 영역 역할 이름을 찾습니다.

  2. EBS 볼륨을 암호화하는 데 사용되는 AWS KMS 키를 선택하고 키 사용자가 KMS 키를 사용하도록 허용에 설명된 안내에 따라 제어 영역 역할을 키 사용자로 추가합니다.

기존 EBS 볼륨의 PersistentVolume 만들기

새 PV를 지정하고 클러스터에 추가하여 기존 EBS 볼륨을 가져올 수 있습니다.

  1. 다음 YAML을 existing-volume.yaml이라는 파일에 복사합니다.

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: VOLUME_NAME
      annotations:
        pv.kubernetes.io/provisioned-by: ebs.csi.aws.com
    spec:
      capacity:
        storage: VOLUME_CAPACITY
      accessModes:
        - ReadWriteOnce
      persistentVolumeReclaimPolicy: Retain
      storageClassName: STORAGE_CLASS_NAME
      claimRef:
        name: my-pvc
        namespace: default
      csi:
        driver: ebs.csi.aws.com
        volumeHandle: EBS_VOLUME_ID
        fsType: FILE_SYSTEM_TYPE
      nodeAffinity:
        required:
          nodeSelectorTerms:
          - matchExpressions:
            - key: topology.ebs.csi.aws.com/zone
              operator: In
              values:
              - ZONE
    
    Replace the following:
    
    • VOLUME_NAME: 볼륨 이름
    • VOLUME_CAPACITY: 볼륨 크기(예: 30G). Kubernetes의 볼륨 용량 지정 방법에 대한 자세한 내용은 메모리 의미를 참조하세요.
    • STORAGE_CLASS_NAME: 볼륨을 프로비저닝하는 StorageClass의 이름(예: standard-rwo)

    • EBS_VOLUME_ID: EBS 볼륨 ID. 예를 들면 vol-05786ec9ec9526b67입니다.

    • FS_TYPE: 볼륨의 파일 시스템(예: ext4)

    • ZONE: EBS 볼륨을 호스팅하는 AWS 가용성 영역(예: us-east-1c)

  2. YAML을 클러스터에 적용합니다.

    kubectl apply -f existing-volume.yaml
    
  3. PV 생성을 확인합니다.

    kubectl describe pv volume-name
    

    이 명령어의 출력에는 PV 상태가 포함됩니다.

PersistentVolumeClaim 및 Pod에서 볼륨 사용

볼륨을 가져온 후에는 PVC와 PVC를 연결하는 Pod를 만들 수 있습니다.

  1. 아래의 YAML은 PVC를 만들어 Nginx 웹 서버를 실행하는 Pod에 연결합니다. 이를 nginx.yaml이라는 파일로 복사합니다.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: my-pvc
    spec:
      storageClassName: STORAGE_CLASS_NAME
      volumeName: VOLUME_NAME
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: VOLUME_CAPACITY
    ---
    
    apiVersion: v1
    kind: Pod
    metadata:
      name: web-server
    spec:
      containers:
       - name: web-server
         image: nginx
         volumeMounts:
           - mountPath: /var/lib/www/html
             name: data
      volumes:
       - name: data
         persistentVolumeClaim:
           claimName: PVC_NAME
    

    다음을 바꿉니다.

    • STORAGE_CLASS: 이전에 만든 PersistentVolume의 StorageClass 이름(예: standard-rwo)
    • VOLUME_NAME
    • VOLUME_CAPACITY
    • PVC_NAME: PVC의 이름(예: my-pvc)
  2. YAML을 클러스터에 적용합니다.

    kubectl apply -f nginx.yaml
    
  3. kubectl describe로 Nginx 인스턴스 상태를 확인합니다. 출력에 Running STATUS가 포함됩니다.

    kubectl describe pod web-server
    

다음 단계