Azure 파일 공유 사용
GKE on Azure는 Azure Files 공유 마운트를 지원합니다. Azure용 GKE에 사용할 Azure File 공유가 이미 있으면 PersistentVolume(PV) 객체를 만들고 이를 특정 PersistentVolumeClaim(PVC)에 예약할 수 있습니다.
이 페이지에서는 데이터가 채워진 기존 공유를 사용하여 PV를 만드는 방법과 포드에서 PV를 사용하는 방법을 설명합니다.
시작하기 전에
- 클러스터에 연결
- Azure 파일 공유를 만들거나 액세스 권한이 있어야 합니다. 자세한 내용은 Azure 파일 공유 만들기를 참조하세요.
Azure 스토리지 계정 정보 저장
Azure용 GKE는 Azure 스토리지 계정에 액세스하기 위한 정보를 보안 비밀에 저장합니다. 클러스터에 보안 비밀을 만들지 않았으면 하나 추가해야 합니다. 클러스터에 이 보안 비밀이 있으면 기존 공유를 위한 PersistentVolume 만들기로 건너뜁니다.
보안 비밀을 만들려면 다음 매니페스트를 '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 스토리지 계정 키입니다.
kubectl
도구를 사용하여 클러스터에 파일을 적용합니다.kubectl apply -f azure-service-account-key.yaml
기존 공유의 PersistentVolume 만들기
클러스터에 새 PV를 지정하여 기존 Azure 파일 공유를 가져옵니다. PV를 만들려면 다음을 수행합니다.
다음 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: 보안 비밀이 포함된 네임스페이스
YAML을 클러스터에 적용합니다.
kubectl apply -f existing-volume.yaml
kubectl describe pv
로 PV 만들기를 확인합니다.kubectl describe pv VOLUME_NAME
이 명령어의 출력에는 PV 상태가 포함됩니다.
PersistentVolumeClaim 및 Pod에서 볼륨 사용
볼륨을 가져온 후에는 PVC와 PVC를 마운트하는 Pod를 만들 수 있습니다.
다음 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
입니다.
- STORAGE_CLASS: 이전에 만든 PersistentVolume의 StorageClass 이름입니다. 예:
YAML을 클러스터에 적용합니다.
kubectl apply -f nginx.yaml
kubectl describe
로 Nginx 인스턴스 상태를 확인합니다. 출력에Running
STATUS
가 포함됩니다.kubectl describe pod web-server
포드를 삭제하려면
kubectl delete
명령어를 사용합니다.kubectl delete -f nginx.yaml
다음 단계
- Azure용 GKE에서 추가 스토리지 드라이버를 사용합니다.
- Azure File CSI 드라이버 문서 읽어보기