Azure 파일 공유 사용

GKE on Azure는 Azure Files 공유 마운트를 지원합니다. Azure용 GKE에 사용할 Azure File 공유가 이미 있으면 PersistentVolume(PV) 객체를 만들고 이를 특정 PersistentVolumeClaim(PVC)에 예약할 수 있습니다.

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

시작하기 전에

Azure 스토리지 계정 정보 저장

Azure용 GKE는 Azure 스토리지 계정에 액세스하기 위한 정보를 보안 비밀에 저장합니다. 클러스터에 보안 비밀을 만들지 않았으면 하나 추가해야 합니다. 클러스터에 이 보안 비밀이 있으면 기존 공유를 위한 PersistentVolume 만들기로 건너뜁니다.

  1. 보안 비밀을 만들려면 다음 매니페스트를 'azure-service-account-key.yaml'이라는 파일에 복사합니다.

    ---
    apiVersion: v1
    kind: Secret
    metadata:
      name: azure-secret-account-key
    type: Opaque
    stringData:
      accountname: STORAGE_ACCOUNT_NAME
      accountkey: STORAGE_ACCOUNT_KEY
    

    다음을 바꿉니다.

    • STORAGE_ACCOUNT_NAME: Azure 스토리지 계정 이름입니다.
    • STORAGE_ACCOUNT_KEY: Azure 스토리지 계정 키입니다.
  2. kubectl 도구를 사용하여 클러스터에 파일을 적용합니다.

    kubectl apply -f azure-service-account-key.yaml
    

기존 공유의 PersistentVolume 만들기

클러스터에 새 PV를 지정하여 기존 Azure 파일 공유를 가져옵니다. PV를 만들려면 다음을 수행합니다.

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

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: VOLUME_NAME
    spec:
      capacity:
        storage: VOLUME_CAPACITY
      storageClassName: standard-rwx
      accessModes:
        - ReadWriteMany
      persistentVolumeReclaimPolicy: Retain
      csi:
        driver: file.csi.azure.com
        readOnly: false
        volumeHandle: VOLUME_ID
    

    다음을 바꿉니다.

    • VOLUME_NAME: 볼륨 이름입니다.
    • VOLUME_CAPACITY: 볼륨 크기입니다. 예를 들면 30Gi입니다. Kubernetes의 볼륨 용량 지정 방법에 대한 자세한 내용은 메모리 의미를 참조하세요.
    • VOLUME_ID: 볼륨의 고유 ID이며 RESOURCE_GROUP_NAME#STORAGE_ACCOUNT_NAME#FILESHARE_NAME# 문자열로 형식이 지정됩니다.
    • FILE_SHARE_NAME: Azure 파일 공유 이름입니다.

    스토리지 계정이 클러스터와 다른 리소스 그룹에 있는 경우 스토리지 계정 키가 포함된 보안 비밀에 대한 참조를 추가해야 합니다. 참조를 추가하려면 spec.csi 섹션에 다음을 삽입합니다.

    # Optional. Only required if your storageAccount is in a different resource group than the cluster.
        nodeStageSecretRef:
          name: NODE_STAGE_SECRET_NAME
          namespace: NODE_STAGE_SECRET_NAMESPACE
    

    다음을 바꿉니다.

    • NODE_STAGE_SECRET_NAME: 보안 비밀의 이름
    • NODE_STAGE_SECRET_NAMESPACE: 보안 비밀이 포함된 네임스페이스
  2. YAML을 클러스터에 적용합니다.

    kubectl apply -f existing-volume.yaml
    
  3. kubectl describe pv로 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:
        - ACCESS_MODE
      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
    

    다음을 바꿉니다.

    • STORAGE_CLASS: 이전에 만든 PersistentVolume의 StorageClass 이름입니다. 예: standard-rwo
    • ACCESS_MODE: 볼륨의 액세스 모드입니다. Azure Disk의 경우 ReadWriteOnce를 사용합니다. Azure File의 경우 ReadWriteMany를 사용합니다.
    • VOLUME_CAPACITY: 볼륨 크기입니다. 예를 들면 30Gi입니다.
  2. YAML을 클러스터에 적용합니다.

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

    kubectl describe pod web-server
    
  4. 포드를 삭제하려면 kubectl delete 명령어를 사용합니다.

    kubectl delete -f nginx.yaml
    

다음 단계