Share via


Azure Kubernetes Service 클러스터에 Azure Elastic SAN 볼륨 커넥트

이 문서에서는 AKS(Azure Kubernetes Service) 클러스터에서 AZURE SAN(Elastic Storage 영역 네트워크) 볼륨을 연결하는 방법을 설명합니다. 이 연결을 만들려면 클러스터에서 Kubernetes iSCSI CSI 드라이버를 사용하도록 설정합니다. 이 드라이버를 사용하면 AKS 클러스터에서 영구 볼륨을 만든 다음, Elastic SAN 볼륨을 영구 볼륨에 연결하여 Elastic SAN의 볼륨에 액세스할 수 있습니다.

드라이버 정보

iSCSI CSI 드라이버는 iSCSI를 통해 Kubernetes 클러스터에 연결할 수 있는 오픈 소스 프로젝트입니다. 드라이버는 오픈 소스 프로젝트이므로 Microsoft는 드라이버 자체에서 발생하는 문제에 대한 지원을 제공하지 않습니다.

Kubernetes iSCSI CSI 드라이버는 GitHub에서 사용할 수 있습니다.

라이선싱

Kubernetes용 iSCSI CSI 드라이버에는 Apache 2.0 라이선스에 따라 라이선스가 부여됩니다.

필수 조건

제한 사항

  • 동적 프로비저닝은 현재 지원되지 않습니다.
  • 현재 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, yourTargetPortalPortyourIQN을 이전에 수집한 값으로 바꾼 다음, 예제를 사용하여 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, imagemountPath 값을 사용자 고유의 값으로 바꿉니다.

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 클러스터에 성공적으로 연결했습니다.

다음 단계

Elastic SAN 배포 계획