다음을 통해 공유


Azure Kubernetes Service에서 Azure Managed Lustre CSI 드라이버 사용

이 글에서는 Azure Lustre CSI Driver for Kubernetes를 사용하여 Azure Kubernetes Service (AKS)에서 Azure Managed Lustre를 계획하고 설치하며 사용하는 방법에 대해 배웁니다. 이 드라이버는 CSI(컨테이너 지원 인터페이스) 사양을 기반으로 합니다.

Kubernetes의 Azure Lustre CSI 드라이버를 사용하면 AKS에 배포된 Kubernetes 컨테이너에서 Azure Managed Lustre 스토리지를 영구 스토리지 볼륨으로 액세스할 수 있습니다.

호환 가능한 Kubernetes 버전

Kubernetes용 Azure Lustre CSI 드라이버는 AKS호환됩니다. 다른 Kubernetes 설치는 현재 지원되지 않습니다.

AKS Kubernetes 버전 1.21 이상이 지원됩니다. 이 지원에는 새 AKS 클러스터를 만들 때 현재 사용할 수 있는 모든 버전이 포함됩니다.

Important

Kubernetes용 Azure Lustre CSI 드라이버는 현재 AKS의 노드 풀에 대한 Ubuntu Linux OS SKU에서만 작동합니다.

호환되는 Lustre 버전

Kubernetes용 Azure Lustre CSI 드라이버는 Azure Managed Lustre호환됩니다. 다른 Lustre 설치는 현재 지원되지 않습니다.

Azure Lustre CSI 드라이버 버전

지원되는 드라이버 버전은 다음과 같습니다.

드라이버 버전 이미지 지원되는 k8s 버전 Lustre 클라이언트 버전 동적 프로비저닝
메인 브랜치 mcr.microsoft.com/oss/v2/kubernetes-csi/azurelustre-csi:latest 1.21+ 2.15.5
v0.3.0 mcr.microsoft.com/oss/v2/kubernetes-csi/azurelustre-csi:v0.3.0 1.21+ 2.15.5
v0.2.0 mcr.microsoft.com/oss/v2/kubernetes-csi/azurelustre-csi:v0.2.0 1.21+ 2.15.5
v0.1.18 mcr.microsoft.com/oss/v2/kubernetes-csi/azurelustre-csi:v0.1.18 1.21+ 2.15.5
v0.1.17 mcr.microsoft.com/oss/v2/kubernetes-csi/azurelustre-csi:v0.1.17 1.21+ 2.15.5
v0.1.15 mcr.microsoft.com/oss/v2/kubernetes-csi/azurelustre-csi:v0.1.15 1.21+ 2.15.4
v0.1.14 mcr.microsoft.com/oss/v2/kubernetes-csi/azurelustre-csi:v0.1.14 1.21+ 2.15.3
v0.1.13 mcr.microsoft.com/oss/v2/kubernetes-csi/azurelustre-csi:v0.1.13 1.21+ 2.15.4
v0.1.12 mcr.microsoft.com/oss/v2/kubernetes-csi/azurelustre-csi:v0.1.12 1.21+ 2.15.3
v0.1.11 mcr.microsoft.com/oss/v2/kubernetes-csi/azurelustre-csi:v0.1.11 1.21+ 2.15.1
v0.1.10 mcr.microsoft.com/oss/v2/kubernetes-csi/azurelustre-csi:v0.1.10 1.21+ 2.15.2

모든 드라이버 릴리스 및 해당 변경 로그의 전체 목록은 Azure Lustre CSI 드라이버 릴리스 페이지를 참조하세요.

필수 조건

AKS 배포 계획을 세우세요

Azure Kubernetes Service를 배포하는 경우 AKS와 Azure Managed Lustre 간의 작업에 몇 가지 옵션이 영향을 줍니다.

AKS와 함께 사용할 네트워크 유형 확인

AKS는 여러 네트워킹 모델을 지원하며, 각각 다른 기능과 사용 사례를 지원합니다. 모든 네트워킹 모델은 Kubernetes용 Azure Lustre CSI 드라이버에서 작동하지만 가상 네트워킹 및 클러스터 설정에 대한 요구 사항은 다릅니다.

특정 요구 사항에 적합한 네트워킹 모델을 선택하는 방법에 대한 포괄적인 내용은 Azure Kubernetes Service CNI 네트워킹 개요를 참조하세요.

Azure Portal에서 AKS 클러스터를 만들 때 다음과 같은 네트워킹 옵션이 표시됩니다.

Azure CNI 오버레이(권장)

  • Pod에 대해 논리적으로 구분된 CIDR 범위를 사용하여 VNet IP 주소 공간 절약
  • 최대 클러스터 크기 조정 지원(노드당 노드 5000개 및 Pod 250개)
  • 간단한 IP 주소 관리
  • 대부분의 시나리오에 가장 적합한 선택

Azure CNI Pod 서브넷

  • Pod는 전체 VNet에 완전한 연결을 제공받아, 개인 IP 주소를 통해 직접 접근할 수 있습니다.
  • 조각화되지 않은 더 큰 VNet IP 주소 공간이 필요합니다.
  • Pod IP에 대한 직접 외부 액세스가 필요한 경우 이 항목을 선택합니다.

Azure CNI 노드 서브넷(레거시)

Kubenet(사용 중지)

  • 2028년 3월 31일 은퇴. 자세한 내용은 AKS Use Kubenet을 참조하세요.
  • 제한된 크기 조정 및 수동 경로 관리 필요
  • 사용 중지 날짜 전에 Azure CNI 오버레이로 마이그레이션 계획

네트워킹 모델에 대한 자세한 내용은 Azure Kubernetes Service CNI 네트워킹 개요를 참조하세요.

AKS 및 Azure Managed Lustre의 상호 연결에 대한 네트워크 아키텍처 확인

Azure Managed Lustre는 프라이빗 가상 네트워크 내에서 작동합니다. AKS 인스턴스는 Azure Managed Lustre 가상 네트워크에 대한 네트워크 연결이 있어야 합니다. Azure Managed Lustre와 AKS 간에 네트워킹을 구성하는 두 가지 일반적인 방법이 있습니다.

  • AKS를 자신의 가상 네트워크에 설치한 후, Azure Managed Lustre 가상 네트워크와 가상 네트워크 피어링을 만듭니다.
  • AKS에서 Bring your own Azure Virtual Network 옵션을 사용하여 Azure Managed Lustre 가상 네트워크의 새 서브넷에 AKS를 설치합니다.

참고 항목

AZURE Managed Lustre와 동일한 서브넷에 AKS를 설치하지 않는 것이 좋습니다.

AKS 및 Azure Managed Lustre 가상 네트워크 피어링

두 가상 네트워크를 피어링하는 옵션은 네트워크 관리를 다른 권한 있는 역할로 분리하는 이점이 있습니다. 피어링을 사용하면 Azure 구독 또는 지역에서 구현할 수 있으므로 추가 유연성을 제공할 수 있습니다. 가상 네트워크 피어링을 사용하려면 충돌하는 IP 네트워크 공간을 선택하지 않도록 두 네트워크 간의 조정이 필요합니다.

두 가상 네트워크가 보여지는 다이어그램 - Azure Managed Lustre용 네트워크와 AKS용 네트워크, 두 네트워크는 피어링 화살표로 연결됩니다.

Azure Managed Lustre 가상 네트워크의 서브넷에 AKS 설치

AKS에서 Azure Managed Lustre 가상 네트워크에 AKS 클러스터를 설치할 때 자신의 Azure 가상 네트워크를 사용하는 기능을 활용하는 것은 네트워크가 단독으로 관리되는 시나리오에서 유리할 수 있습니다. Azure Managed Lustre 가상 네트워크에서 AKS 네트워킹 요구 사항에 맞게 크기를 조정한 추가 서브넷을 만들어야 합니다.

Azure Managed Lustre 가상 네트워크에서 AKS를 프로비전할 때 네트워크 관리에 대한 권한 분리는 없습니다. AKS 서비스 주체는 Azure Managed Lustre 가상 네트워크에 대한 권한이 필요합니다.

두 개의 서브넷이 있는 Azure Managed Lustre 가상 네트워크를 보여 주는 다이어그램입니다. 하나는 Lustre 파일 시스템용이고 다른 하나는 AKS용입니다.

프로비저닝 방법

Azure Lustre CSI 드라이버는 다음 두 가지 프로비저닝 방법을 지원합니다.

동적 프로비저닝(v0.3.0 이상에서 사용 가능)

동적 프로비저닝을 사용하면 영구 볼륨 클레임을 만들 때 CSI 드라이버가 요청 시 Azure Managed Lustre 파일 시스템을 자동으로 만들 수 있습니다.

참고 항목

동적 프로비저닝은 Azure Lustre CSI 드라이버 버전 0.3.0부터 사용할 수 있으며 현재 공개 미리 보기로 제공됩니다. 자세한 내용은 v0.3.0 릴리스 정보를 참조하세요.

정적 프로비전

정적 프로비저닝은 기존 Azure Managed Lustre 파일 시스템을 사용합니다. 이 메서드에는 다음이 포함됩니다.

  • 기존 Lustre 클러스터를 참조하는 스토리지 클래스 만들기
  • Lustre 파일 시스템 이름 및 MGS IP 주소 수동 지정
  • 기존 Lustre 인프라가 있는 시나리오에 적합합니다.

사용 사례에 가장 적합한 방법을 선택합니다. 동적 프로비저닝은 먼저 아래에 설명된 다음 정적 프로비저닝 지침을 따릅니다.

동적 프로비저닝(공개 미리 보기)

공개 미리 보기 알림: 동적 프로비저닝 기능은 현재 공개 미리 보기로 제공됩니다. 일부 기능은 지원되지 않거나 기능이 제한될 수 있습니다.

동적 프로비전은 영구 볼륨 클레임을 만들 때 요청 시 Azure Managed Lustre 파일 시스템을 자동으로 만듭니다. 이 기능은 CSI 드라이버 버전 0.3.0에서 사용할 수 있게 되었습니다.

동적 프로비저닝을 위한 필수 구성 요소

Permissions

Important

이 CSI 드라이버를 사용하여 Azure Managed Lustre 클러스터를 동적으로 만들기 전에 kubelet ID에 올바른 권한이 부여되어야 합니다.

kubelet ID에는 다음 권한이 필요합니다.

  • 클러스터를 만들 리소스 그룹에 대한 읽기 및 쓰기 권한
  • 필요한 경우 서브넷을 만들고 관리하는 네트워크 권한
  • Azure Managed Lustre 서비스 권한

자세한 권한 요구 사항은 드라이버 매개 변수 설명서를 참조하세요.

네트워크 요구 사항

  • Azure Managed Lustre 클러스터에 대한 기존 가상 네트워크 및 서브넷
  • 클러스터에 대한 서브넷에서 사용할 수 있는 충분한 IP 주소
  • Lustre 트래픽을 허용하는 적절한 네트워크 보안 그룹 규칙

동적 프로비저닝을 위한 AKS 클러스터 만들기

AKS 클러스터를 아직 만들지 않은 경우 클러스터 배포를 만듭니다. Azure Portal사용하여 AKS(Azure Kubernetes Service) 클러스터 배포 참조하세요.

동적 프로비저닝을 위한 가상 네트워크 피어링 만들기

참고 항목

Azure Managed Lustre 가상 네트워크의 서브넷에 AKS를 설치한 경우 이 네트워크 피어링 단계를 건너뜁니다.

AKS 가상 네트워크는 AKS 클러스터의 리소스 그룹에서 별도의 리소스 그룹에 만들어집니다. Azure Portal에서 AKS 클러스터로 이동하여 속성인프라 리소스 그룹을 찾아 이 리소스 그룹의 이름을 찾을 수 있습니다. 이 리소스 그룹에는 Azure Managed Lustre 가상 네트워크와 페어링해야 하는 가상 네트워크가 포함되어 있습니다. MC_<aks-rg-name>_<aks-cluster-name>_<region> 패턴과 일치합니다.

AKS 가상 네트워크를 Azure Managed Lustre 가상 네트워크와 연결하려면 가상 네트워크 연결을 참조하세요.

MC_ 리소스 그룹 및 가상 네트워크의 이름으로 인해 네트워크 이름은 여러 AKS 배포에서 유사하거나 동일할 수 있습니다. 피어링을 설정할 때는 선택하려는 AKS 네트워크를 신중하게 선택하십시오.

동적 프로비저닝을 위해 AKS 클러스터에 연결

  1. Azure CLI 도구에 대한 액세스 권한이 있는 터미널 세션을 열고 Azure 계정에 로그인합니다.

    az login
    
  2. Azure Portal에 로그인합니다.

  3. AKS 클러스터를 찾습니다. 개요 패널에서 연결 단추를 선택한 후, 클러스터 자격 증명 다운로드명령어를 복사합니다.

  4. 터미널 세션에서 명령을 붙여넣어 자격 증명을 다운로드합니다. 이 명령은 다음과 유사합니다.

    az aks get-credentials --subscription <AKS_subscription_id> --resource_group <AKS_resource_group_name> --name <name_of_AKS>
    
  5. 환경에 없는 경우 kubectl을 설치합니다.

    az aks install-cli
    
  6. 현재 컨텍스트가 자격 증명을 방금 설치하고 연결할 수 있는 AKS 클러스터인지 확인합니다.

    kubectl config current-context
    kubectl get deployments --all-namespaces=true
    

동적 프로비저닝을 위한 드라이버 설치

Kubernetes용 Azure Lustre CSI 드라이버를 설치하려면 다음 명령을 실행합니다.

curl -skSL https://raw.githubusercontent.com/kubernetes-sigs/azurelustre-csi-driver/main/deploy/install-driver.sh | bash

로컬 설치에 대한 샘플 명령을 얻으려면 Kubernetes 클러스터Azure Lustre CSI 드라이버 설치를 참조하세요.

동적 프로비저닝을 위한 Storage 클래스 만들기

storageclass_dynprov_lustre.yaml이라는 파일을 만들고 다음 YAML 내용을 복사합니다. 환경에 필요한 대로 매개 변수를 편집합니다.

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: azurelustre-dynprov
provisioner: azurelustre.csi.azure.com
parameters:
  sku-name: "AMLFS-Durable-Premium-125"  # Choose appropriate SKU
  zone: "1"  # Specify zone if required for your SKU/___location
  maintenance-day-of-week: "Sunday"
  maintenance-time-of-day-utc: "22:00"
  ___location: "eastus"  # Optional: defaults to AKS cluster ___location
  resource-group: "my-resource-group"  # Optional: defaults to AKS cluster RG
  vnet-name: "my-vnet"  # Optional: defaults to AKS cluster VNET
  subnet-name: "my-subnet"  # Optional: defaults to AKS cluster subnet
reclaimPolicy: Delete  # Change to "Retain" to keep clusters after PVC deletion
volumeBindingMode: Immediate
---
# Optional: Resource quota to limit number of clusters
apiVersion: v1
kind: ResourceQuota
metadata:
  name: pvc-lustre-dynprov-quota
spec:
  hard:
    azurelustre-dynprov.storageclass.storage.k8s.io/persistentvolumeclaims: "1"

AKS 클러스터에 Storage 클래스를 적용합니다.

kubectl apply -f storageclass_dynprov_lustre.yaml

동적 프로비저닝을 위한 영구 볼륨 클레임 만들기

pvc_storageclass_dynprov.yaml라는 파일을 만들고 다음 YAML을 그 안에 복사하세요.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-lustre-dynprov
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: azurelustre-dynprov
  resources:
    requests:
      storage: 48Ti  # Minimum size for AMLFS-Durable-Premium-125

AKS 클러스터에 PVC를 적용합니다.

kubectl apply -f pvc_storageclass_dynprov.yaml

클러스터 만들기 모니터링

Azure Managed Lustre 클러스터를 만드는 데 10분 이상이 걸릴 수 있습니다. 진행률을 모니터링할 수 있습니다.

kubectl describe pvc pvc-lustre-dynprov

만드는 동안 상태는 다음과 같은 메시지와 함께 표시됩니다 Pending . Waiting for a volume to be created either by the external provisioner 'azurelustre.csi.azure.com'...

준비가 되면 성공 메시지와 함께 Bound 상태가 됩니다.

동적 프로비저닝을 위한 Pod 만들기

pod_echo_date_dynprov.yaml라는 파일을 만들고 다음 YAML을 그 안에 복사하세요.

apiVersion: v1
kind: Pod
metadata:
  name: lustre-echo-date-dynprov
spec:
  containers:
  - image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
    name: lustre-echo-date-dynprov
    command:
      - "/bin/sh"
      - "-c"
      - "while true; do echo $(date) >> /mnt/lustre/outfile; sleep 1; done"
    volumeMounts:
    - name: lustre-storage
      mountPath: /mnt/lustre
  volumes:
  - name: lustre-storage
    persistentVolumeClaim:
      claimName: pvc-lustre-dynprov

AKS 클러스터에 Pod를 적용합니다.

kubectl apply -f pod_echo_date_dynprov.yaml

동적 프로비저닝 확인

Pod가 실행되면 동적으로 생성된 Azure Managed Lustre 파일 시스템이 올바르게 탑재되었는지 확인할 수 있습니다.

kubectl exec -it lustre-echo-date-dynprov -- df -h

에 탑재된 /mnt/lustreAzure Managed Lustre 파일 시스템이 표시됩니다.

동적 리소스 정리

동적으로 만든 리소스를 삭제하려면 다음을 수행합니다.

kubectl delete pvc pvc-lustre-dynprov

스토리지 클래스에 있는 reclaimPolicy: Delete경우 Azure Managed Lustre 클러스터도 삭제됩니다. 설정된 Retain경우 더 이상 필요하지 않은 경우 클러스터를 수동으로 삭제해야 합니다.

정적 프로비전

정적 프로비저닝을 사용하면 필요한 Kubernetes 리소스를 수동으로 만들어 AKS 클러스터에서 기존 Azure Managed Lustre 파일 시스템을 사용할 수 있습니다.

정적 프로비저닝을 위한 필수 구성 요소

정적 프로비저닝을 위한 Azure Managed Lustre 파일 시스템 클러스터 만들기

Azure Managed Lustre 파일 시스템 클러스터를 아직 만들지 않은 경우 지금 클러스터를 만듭니다. 지침을 보려면 Azure Portal을 사용하여 Azure Managed Lustre 파일 시스템 만들기을 참조하세요. 정적 프로비저닝을 수행하려면 기존 Azure Managed Lustre 파일 시스템이 필요합니다.

정적 프로비저닝을 위한 AKS 클러스터 만들기

AKS 클러스터를 아직 만들지 않은 경우 클러스터 배포를 만듭니다. Azure Portal사용하여 AKS(Azure Kubernetes Service) 클러스터 배포 참조하세요.

정적 프로비저닝을 위한 가상 네트워크 피어링 만들기

참고 항목

Azure Managed Lustre 가상 네트워크의 서브넷에 AKS를 설치한 경우 이 네트워크 피어링 단계를 건너뜁니다.

AKS 가상 네트워크는 AKS 클러스터의 리소스 그룹에서 별도의 리소스 그룹에 만들어집니다. Azure Portal에서 AKS 클러스터로 이동하여 속성인프라 리소스 그룹을 찾아 이 리소스 그룹의 이름을 찾을 수 있습니다. 이 리소스 그룹에는 Azure Managed Lustre 가상 네트워크와 페어링해야 하는 가상 네트워크가 포함되어 있습니다. MC_<aks-rg-name>_<aks-cluster-name>_<region> 패턴과 일치합니다.

AKS 가상 네트워크를 Azure Managed Lustre 가상 네트워크와 연결하려면 가상 네트워크 연결을 참조하세요.

MC_ 리소스 그룹 및 가상 네트워크의 이름으로 인해 네트워크 이름은 여러 AKS 배포에서 유사하거나 동일할 수 있습니다. 피어링을 설정할 때는 선택하려는 AKS 네트워크를 신중하게 선택하십시오.

정적 프로비저닝을 위해 AKS 클러스터에 연결

  1. Azure CLI 도구에 대한 액세스 권한이 있는 터미널 세션을 열고 Azure 계정에 로그인합니다.

    az login
    
  2. Azure Portal에 로그인합니다.

  3. AKS 클러스터를 찾습니다. 개요 패널에서 연결 단추를 선택한 후, 클러스터 자격 증명 다운로드명령어를 복사합니다.

  4. 터미널 세션에서 명령을 붙여넣어 자격 증명을 다운로드합니다. 이 명령은 다음과 유사합니다.

    az aks get-credentials --subscription <AKS_subscription_id> --resource_group <AKS_resource_group_name> --name <name_of_AKS>
    
  5. 환경에 없는 경우 kubectl을 설치합니다.

    az aks install-cli
    
  6. 현재 컨텍스트가 자격 증명을 방금 설치하고 연결할 수 있는 AKS 클러스터인지 확인합니다.

    kubectl config current-context
    kubectl get deployments --all-namespaces=true
    

정적 프로비저닝을 위한 드라이버 설치

Kubernetes용 Azure Lustre CSI 드라이버를 설치하려면 다음 명령을 실행합니다.

curl -skSL https://raw.githubusercontent.com/kubernetes-sigs/azurelustre-csi-driver/main/deploy/install-driver.sh | bash

로컬 설치에 대한 샘플 명령을 얻으려면 Kubernetes 클러스터Azure Lustre CSI 드라이버 설치를 참조하세요.

정적 프로비저닝을 위한 영구 볼륨 만들기 및 구성

기존 Azure Managed Lustre 파일 시스템에 대한 영구 볼륨을 만들려면 다음을 수행합니다.

  1. azurelustre-csi-driver 리포지토리의 /docs/examples/ 폴더에서 다음 구성 파일을 복사합니다. 드라이버을 설치할 때 리포지토리를 복제했다면, 로컬 복사본을 이미 사용할 수 있습니다.

    • storageclass_existing_lustre.yaml
    • pvc_storageclass.yaml

    전체 리포지토리를 복제하지 않으려면 각 파일을 개별적으로 다운로드할 수 있습니다. 다음 링크를 각각 열고, 파일의 내용을 복사한 다음, 동일한 파일 이름을 가진 로컬 파일에 붙여넣습니다.

  2. storageclass_existing_lustre.yaml 파일에서 Lustre 클러스터의 내부 이름과 MGS(Lustre Management Service) IP 주소를 업데이트합니다.

    바꿀 값이 강조 표시된 storageclass_existing_lustre.yaml 파일의 스크린샷

    두 설정 모두 Azure 포털의 Azure Managed Lustre 파일 시스템에 대한 클라이언트 연결 창에 표시됩니다.

    Azure 포털의 클라이언트 연결 창 스크린샷입니다. 탑재 명령에서 MGS IP 주소와

    다음을 업데이트합니다.

    • Azure Managed Lustre 파일 시스템에서 Lustre 클러스터의 시스템 할당 내부 이름으로 바꿉 EXISTING_LUSTRE_FS_NAME 있습니다. 내부 이름은 일반적으로 lustrefs. 내부 이름은 파일 시스템을 만들 때 지정한 이름이 아닙니다.

      제안된 mount 명령에는 다음 주소 문자열에 강조 표시된 이름이 포함됩니다.

      클라이언트 연결 창의 샘플 주소 문자열 스크린샷 Lustre 클러스터의 내부 이름이 강조 표시됩니다.

    • EXISTING_LUSTRE_IP_ADDRESS MGS IP 주소로 바꿉니다.

  3. 스토리지 클래스 및 영구 볼륨 클레임을 만들려면 다음 kubectl 명령을 실행합니다.

    kubectl create -f storageclass_existing_lustre.yaml
    kubectl create -f pvc_storageclass.yaml
    

정적 프로비저닝을 위한 Pod 만들기

PVC를 사용하여 Azure Managed Lustre 파일 시스템을 탑재하는 Pod를 만듭니다.

pod_echo_date.yaml라는 파일을 만들고 다음 YAML을 그 안에 복사하세요.

apiVersion: v1
kind: Pod
metadata:
  name: lustre-echo-date
spec:
  containers:
  - image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
    name: lustre-echo-date
    command:
      - "/bin/sh"
      - "-c"
      - "while true; do echo $(date) >> /mnt/lustre/outfile; sleep 1; done"
    volumeMounts:
    - name: lustre-storage
      mountPath: /mnt/lustre
  volumes:
  - name: lustre-storage
    persistentVolumeClaim:
      claimName: pvc-lustre

AKS 클러스터에 Pod를 적용합니다.

kubectl apply -f pod_echo_date.yaml

정적 프로비전 확인

Pod가 실행되면 Azure Managed Lustre 파일 시스템이 올바르게 탑재되었는지 확인할 수 있습니다.

kubectl exec -it lustre-echo-date -- df -h

에 탑재된 /mnt/lustreAzure Managed Lustre 파일 시스템이 표시됩니다.

쓰기 중에 콘솔에서 타임스탬프를 보려면 다음 명령을 실행합니다.

kubectl logs -f lustre-echo-date

정적 리소스 정리

완료되면 리소스를 정리하려면 다음을 수행합니다.

kubectl delete pod lustre-echo-date
kubectl delete pvc pvc-lustre
kubectl delete storageclass azurelustre-static

Important

그러면 Kubernetes 리소스만 삭제됩니다. Azure Managed Lustre 파일 시스템 자체는 계속 존재하며 다시 사용할 수 있습니다.

컨테이너 이미지 서명 유효성 검사

Azure Lustre CSI 드라이버는 사용자가 사용하는 이미지의 무결성 및 원본을 확인할 수 있도록 컨테이너 이미지에 서명합니다. 서명은 공개/프라이빗 키 쌍을 활용하여 Microsoft가 디지털 서명을 만들고 이미지에 추가하여 컨테이너 이미지를 빌드했음을 증명합니다. 이 섹션에서는 이미지가 Microsoft에서 서명되었는지 확인하는 단계를 제공합니다.

Kubernetes 시스템 구성 요소의 이미지 보안 이해

Azure Lustre CSI 드라이버에서 사용하는 컨테이너 이미지는 Kubernetes에서 신뢰할 수 있는 kube-system 시스템 네임스페이스로 간주되는 네임스페이스에 배포됩니다. 보안 및 운영상의 이유로 이미지 무결성 정책은 일반적으로 시스템 네임스페이스에 적용되지 않습니다.

  • 부트스트랩 요구 사항: CSI 드라이버와 같은 시스템 구성 요소는 정책 적용 시스템(예: 게이트키퍼 및 비준)을 사용할 수 있기 전에 시작해야 합니다.
  • 신뢰할 수 있는 구성 요소: 이미지는 신뢰할 수 있는 kube-system 공급자가 관리하는 핵심 Kubernetes 인프라 구성 요소입니다.
  • 운영 안정성: 정책 적용 구성 요소 자체에 정책을 적용하면 클러스터 기능을 방지할 수 있습니다.

그러나 배포 전에 CSI 드라이버 이미지의 무결성을 확인할 수 있습니다.

배포 전 이미지 확인

Azure Lustre CSI 드라이버를 배포하기 전에 Microsoft의 공개 서명 인증서를 사용하여 컨테이너 이미지의 디지털 서명 및 신뢰성을 확인할 수 있습니다.

표기법 CLI를 사용하여 이미지 서명 확인

  1. Notation CLI 다운로드:

    export NOTATION_VERSION=1.3.2
    curl -LO https://github.com/notaryproject/notation/releases/download/v$NOTATION_VERSION/notation_$NOTATION_VERSION\_linux_amd64.tar.gz
    sudo tar xvzf notation_$NOTATION_VERSION\_linux_amd64.tar.gz -C /usr/bin/ notation
    
  2. Microsoft 서명 공용 인증서를 다운로드합니다.

    curl -sSL "https://www.microsoft.com/pkiops/certs/Microsoft%20Supply%20Chain%20RSA%20Root%20CA%202022.crt" -o msft_signing_cert.crt
    
  3. 표기법 CLI에 인증서를 추가합니다.

    notation cert add --type ca --store supplychain msft_signing_cert.crt
    
  4. 인증서를 표기법으로 확인합니다.

    notation cert ls
    

    명령의 출력은 다음 예제와 같습니다.

    STORE TYPE  STORE NAME  CERTIFICATE 
    ca          supplychain msft_signing_cert.crt
    
  5. Azure Lustre CSI 드라이버 이미지에 대한 trustpolicy 파일을 만듭니다.

    다음과 같은 파일을 만듭니다 trustpolicy.json.

    {
        "version": "1.0",
        "trustPolicies": [
            {
                "name": "supplychain",
                "registryScopes": [ "*" ],
                "signatureVerification": {
                    "level" : "strict" 
                },
                "trustStores": [ "ca:supplychain" ],
                "trustedIdentities": [
                    "x509.subject: CN=Microsoft SCD Products RSA Signing,O=Microsoft Corporation,L=Redmond,ST=Washington,C=US"
                ]
            }
        ]
    }
    
  6. 표기법을 사용하여 Azure Lustre CSI 드라이버 이미지를 확인합니다.

    notation policy import trustpolicy.json
    export NOTATION_EXPERIMENTAL=1
    
    # Verify the controller image
    notation verify --allow-referrers-api mcr.microsoft.com/oss/v2/kubernetes-csi/azurelustre-csi:v0.3.0
    

    성공적인 확인의 출력은 다음 예제와 같습니다.

    Successfully verified signature for mcr.microsoft.com/oss/v2/kubernetes-csi/azurelustre-csi@sha256:a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456
    

애플리케이션 워크로드 이미지 무결성

프로덕션 환경에서 보안을 강화하려면 AKS 이미지 무결성을 사용하도록 설정하여 애플리케이션 워크로드에 대한 컨테이너 이미지 서명의 유효성을 자동으로 검사하는 것이 좋습니다. 네임스페이스의 CSI 드라이버 이미지는 kube-system 일반적으로 정책 적용에서 제외되지만 애플리케이션 네임스페이스에 대한 이미지 무결성 정책을 구성할 수 있습니다.

애플리케이션 워크로드에 대한 이미지 무결성 정책을 구현하는 방법에 대한 자세한 내용은 AKS(Azure Kubernetes Service)의 이미지 무결성을 참조하세요.

Troubleshooting

Azure Lustre CSI 드라이버 관련 문제를 해결하려면 GitHub 리포지토리의 CSI 드라이버 문제 해결 가이드 를 참조하세요.

일반적인 문제는 다음과 같습니다.

  • AKS와 Azure Managed Lustre 간의 네트워크 연결 문제 - 가상 네트워크 피어링 또는 서브넷 구성 확인
  • 잘못된 구성 - 스토리지 클래스 구성에서 MGS IP 주소 및 파일 시스템 이름을 다시 확인합니다.
  • Pod 예약 문제 - 지원되는 유일한 구성이므로 노드 풀에 Ubuntu Linux OS SKU를 사용하고 있는지 확인합니다.
  • 권한 문제 - AKS 서비스 주체에 Azure Managed Lustre 가상 네트워크에 대한 적절한 권한이 있는지 확인합니다.

동적 프로비저닝 관련 문제의 경우:

  • 인증/권한 부여 오류 - Azure Managed Lustre 클러스터를 만들기 위한 kubelet ID 권한 확인
  • SKU 및 영역 유효성 검사 오류 - 지정된 SKU가 해당 지역에서 지원되고 영역 구성이 올바른지 확인합니다.
  • 네트워크 IP 주소 가용성 - 대상 서브넷에서 충분한 IP 주소를 사용할 수 있는지 확인
  • 할당량 제한 - Azure Managed Lustre 클러스터에 대한 Kubernetes 리소스 할당량 및 Azure 구독 할당량 확인

추가 문제 해결 리소스는 다음을 참조하세요.