기존 EBS 볼륨 가져오기

개요

Anthos clusters on AWS로 가져올 AWS Elastic Block Store(EBS) 볼륨이 이미 있는 경우 PersistentVolume(PV) 객체를 만들어 특정 PersistentVolumeClaim(PVC)에 대해 예약할 수 있습니다.

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

시작하기 전에

  • anthos-aws 디렉터리에서 anthos-gke를 사용하여 컨텍스트를 사용자 클러스터로 전환합니다.
    cd anthos-aws
    env HTTPS_PROXY=http://localhost:8118 \
      anthos-gke aws clusters get-credentials CLUSTER_NAME
    CLUSTER_NAME을 사용자 클러스터 이름으로 바꿉니다.

기존 EBS 볼륨의 PersistentVolume 만들기

새 PV를 지정하여 기존 EBS 볼륨을 가져올 수 있습니다.

  1. 다음 YAML을 existing-volume.yaml이라는 파일에 복사하고 다음과 같이 값을 바꿔 구성을 완료합니다.

    • volume-capacity: 볼륨 크기입니다. 예를 들면 30Gi입니다. Kubernetes의 볼륨 용량 지정 방법에 대한 자세한 내용은 메모리 의미를 참조하세요.
    • storage-class-name: 볼륨을 프로비저닝하는 StorageClass의 이름입니다. 예를 들어 기본 standard-rwo를 사용할 수 있습니다.

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

    • fs-type: 볼륨의 파일 시스템입니다. 예를 들면 ext4입니다.

    • zone: EBS 볼륨을 호스팅하는 AWS 가용성 영역입니다. 예를 들면 us-east-1c입니다.

    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
    
  2. YAML을 클러스터에 적용

    kubectl apply -f existing-volume.yaml
    
  3. PV 만들기 확인

    kubectl describe pv volume-name
    

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

PersistentVolumeClaim 및 Pod에서 볼륨 사용

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

아래의 YAML은 PVC를 만들어 Nginx 웹 서버를 실행하는 Pod에 연결합니다. 이를 nginx.yaml이라는 파일에 복사하고 다음과 같이 값을 바꿔 구성을 완료합니다.

  • storage-class: 이전에 만든 PersistentVolume의 StorageClass 이름입니다. 예를 들면 standard-rwo입니다.
  • volume-name: 이전에 만든 볼륨의 이름입니다.
  • volume-capacity: 볼륨 크기입니다. 예를 들면 30Gi입니다.
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: my-pvc
  1. YAML을 클러스터에 적용

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

    kubectl describe pod web-server
    

암호화된 EBS 볼륨 사용

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

AWS IAM 역할 이름을 받으려면 다음 단계를 수행하세요.

  1. Anthos clusters on AWS 구성이 있는 디렉터리로 변경합니다. 이 디렉터리는 관리 서비스를 설치할 때 생성됩니다.

    cd anthos-aws

  2. anthos-gke 도구로 Anthos clusters on AWS 환경을 만들었는지 또는 AWS IAM 프로필을 수동으로 만들었는지 선택합니다.

    anthos-gke 도구

    terraform output 명령어를 사용하고 iamInstanceProfile 값을 검색합니다.

    terraform output | grep iamInstanceProfile
    

    anthos- gke 도구로 Anthos clusters on AWS 환경을 만든 경우 출력은 다음과 같습니다.

      iamInstanceProfile: gke-CLUSTER_ID-controlplane
      iamInstanceProfile: gke-CLUSTER_ID-nodepool
    

    여기서 CLUSTER_ID는 클러스터 ID입니다. 다음 단계를 위해 gke-CLUSTER_ID-controlplane 값을 복사합니다.

    수동으로 생성됨

    다음 명령어를 사용하여 terraform output 출력을 검사합니다.

    terraform output | less
    

    출력을 스크롤하여 AWSCluster 정의 뒤에 있는 iamInstanceProfile을 찾습니다.

    kind: AWSCluster
    metadata:
      name: cluster-0
    spec:
      ...
      controlPlane:
       ...
        iamInstanceProfile: INSTANCE_PROFILE_NAME
    

    다음 단계를 위해 INSTANCE_PROFILE_NAME 값을 복사합니다.

  3. 제어 영역에 EBS 볼륨 액세스 권한을 부여하려면 EBS 볼륨을 암호화하는 데 사용되는 AWS KMS 키에 gke-xxxxxx-controlplane AWS IAM 프로필을 키 사용자로 추가합니다.

다음 단계