Azure Elastic SAN 볼륨을 Azure Kubernetes Service 클러스터에 연결
이 문서에서는 AKS(Azure Kubernetes Service) 클러스터에서 AZURE Elastic SAN(저장 영역 네트워크) 볼륨을 연결하는 방법을 설명합니다. 이 연결을 만들려면 클러스터에서 Kubernetes iSCSI CSI 드라이버를 사용하도록 설정합니다. 이 드라이버를 사용하면 AKS 클러스터에서 영구 볼륨을 만든 다음, Elastic SAN 볼륨을 영구 볼륨에 연결하여 Elastic SAN의 볼륨에 액세스할 수 있습니다.
드라이버 정보
iSCSI CSI 드라이버는 iSCSI를 통해 Kubernetes 클러스터에 연결할 수 있는 오픈 소스 프로젝트입니다. 드라이버는 오픈 소스 프로젝트이므로 Microsoft는 드라이버 자체에서 발생하는 문제에 대한 지원을 제공하지 않습니다.
Kubernetes iSCSI CSI 드라이버는 GitHub에서 사용할 수 있습니다.
라이선싱
Kubernetes용 iSCSI CSI 드라이버에는 Apache 2.0 라이선스에 따라 라이선스가 부여됩니다.
필수 조건
- 최신 Azure CLI를 사용하거나 최신 Azure PowerShell 모듈을 설치해야 합니다.
- iSCSI CSI 드라이버에 대한 호환성 요구 사항을 충족해야 합니다.
- Elastic SAN 배포
- 가상 네트워크 엔드포인트 구성
- 가상 네트워크 규칙 구성
제한 사항
- 동적 프로비저닝은 현재 지원되지 않습니다.
- 현재
ReadWriteOnce
액세스 모드만 지원됩니다.
시작하기
드라이버 설치
curl -skSL https://raw.githubusercontent.com/kubernetes-csi/csi-driver-iscsi/master/deploy/install-driver.sh | bash -s master --
배포 후 Pod 상태를 검사하여 드라이버가 설치되었는지 확인합니다.
kubectl -n kube-system get pod -o wide -l app=csi-iscsi-node
볼륨 정보 가져오기
볼륨의 StorageTargetIQN, StorageTargetPortalHostName, StorageTargetPortalPort가 필요합니다.
다음 Azure PowerShell 명령을 사용하여 가져올 수 있습니다.
Get-AzElasticSanVolume -ResourceGroupName $resourceGroupName -ElasticSanName $sanName -VolumeGroupName $searchedVolumeGroup -Name $searchedVolume
다음 Azure CLI 명령을 사용하여 가져올 수도 있습니다.
az elastic-san volume show --elastic-san-name --name --resource-group --volume-group-name
클러스터 구성
볼륨의 정보를 검색한 후에는 AKS 클러스터에서 새 리소스에 대한 몇 가지 yaml 파일을 만들어야 합니다.
Storageclass
다음 예제를 사용하여 storageclass.yml 파일을 만듭니다. 이 파일은 영구 볼륨의 스토리지 클래스를 정의합니다.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: san-volume
provisioner: manual
영구 볼륨
스토리지 클래스를 만든 후 pv.yml 파일을 만듭니다. 이 파일은 영구 볼륨을 정의합니다. 다음 예제에서는yourTargetPortal
, yourTargetPortalPort
및 yourIQN
을 이전에 수집한 값으로 바꾼 다음, 예제를 사용하여 pv.yml 파일을 만듭니다. 1gibibyte가 넘는 스토리지가 필요하고 사용 가능한 경우 1Gi
를 필요한 스토리지 양으로 바꿉니다.
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: iscsiplugin-pv
labels:
name: data-iscsiplugin
spec:
storageClassName: san-volume
accessModes:
- ReadWriteOnce
capacity:
storage: 1Gi
csi:
driver: iscsi.csi.k8s.io
volumeHandle: iscsi-data-id
volumeAttributes:
targetPortal: "yourTargetPortal:yourTargetPortalPort"
portals: "[]"
iqn: "yourIQN"
lun: "0"
iscsiInterface: "default"
discoveryCHAPAuth: "true"
sessionCHAPAuth: "false"
pv.yml 파일을 만든 후 다음 명령을 사용하여 영구 볼륨을 만듭니다.
kubectl apply -f pathtoyourfile/pv.yaml
영구 볼륨 클레임
다음으로, 영구적 볼륨 클레임을 만듭니다. 앞에서 정의한 스토리지 클래스를 정의한 영구 볼륨과 함께 사용합니다. pvc.yml 파일의 예제는 다음과 같습니다.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: iscsiplugin-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: san-volume
selector:
matchExpressions:
- key: name
operator: In
values: ["data-iscsiplugin"]
pvc.yml 파일을 만든 후 영구 볼륨 클레임을 만듭니다.
kubectl apply -f pathtoyourfile/pvc.yaml
PersistentVolumeClaim이 만들어지고 PersistentVolume에 바인딩되어 있는지 확인하려면 다음 명령을 실행합니다.
kubectl get pvc pathtoyourfile
마지막으로 Pod 매니페스트를 만듭니다. pod.yml 파일의 예제는 다음과 같습니다. 이를 사용하여 고유한 Pod 매니페스트를 만들고 name
, image
및 mountPath
값을 사용자 고유의 값으로 바꿉니다.
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- image: maersk/nginx
imagePullPolicy: Always
name: nginx
ports:
- containerPort: 80
protocol: TCP
volumeMounts:
- mountPath: /var/www
name: iscsi-volume
volumes:
- name: iscsi-volume
persistentVolumeClaim:
claimName: iscsiplugin-pvc
pod.yml 파일을 만든 후 Pod를 만듭니다.
kubectl apply -f pathtoyourfile/pod.yaml
Pod가 만들어졌는지 확인하려면 다음 명령을 실행합니다.
kubectl get pods
이제 Elastic SAN 볼륨을 AKS 클러스터에 성공적으로 연결했습니다.