이 페이지 개선에 도움 주기
이 사용자 가이드에 기여하려면 모든 페이지의 오른쪽 창에 있는 GitHub에서 이 페이지 편집 링크를 선택합니다.
FSx for Lustre CSI 드라이버 배포
이 주제에서는 FSx for Lustre CSI 드라이버를 Amazon EKS 클러스터에 배포하고 제대로 작동하는지 확인하는 방법에 관해 설명합니다. 드라이버는 최신 버전을 사용하는 것이 좋습니다. 사용 가능한 버전은 GitHub의 CSI Specification Compatibility Matrix
참고
드라이버는 Fargate 또는 Amazon EKS Hybrid Nodes에서 지원되지 않습니다.
사용할 수 있는 파라미터에 대한 자세한 설명과 드라이버의 기능을 보여주는 전체 예제는 GitHub의 FSx for Lustre Container Storage Interface (CSI) driver
사전 조건
-
기존 클러스터가 있어야 합니다.
-
Amazon FSx CSI 드라이버 EKS 추가 기능을 사용하려면 인증을 위해 EKS Pod Identity 에이전트가 필요합니다. 이 구성 요소가 없으면
Amazon EKS Pod Identity agent is not installed in the cluster
오류와 함께 추가 기능이 실패하여 볼륨 작업을 수행하지 못합니다. FSx CSI 드라이버 추가 기능을 배포하기 전 또는 후에 Pod Identity 에이전트를 설치합니다. 자세한 내용은 Amazon EKS Pod Identity 에이전트 설정 섹션을 참조하세요. -
장치에 설치 및 구성된 AWS 명령줄 인터페이스(AWS CLI)의 버전
2.12.3
이상 또는 버전1.27.160
이상 또는 AWS CloudShell. 현재 버전을 확인하려면aws --version | cut -d / -f2 | cut -d ' ' -f1
을 사용합니다.yum
,apt-get
또는 macOS용 Homebrew와 같은 패키지 관리자는 최신 버전의 AWS CLI 이전에 나온 버전이 몇 가지 있을 때도 있습니다. 최신 버전을 설치하려면 AWS 명령줄 인터페이스 사용 설명서에서 설치 및 aws config를 사용하여 빠른 구성을 참조하세요. AWS CloudShell에 설치된 AWS CLI 버전도 최신 버전보다 여러 버전 이전일 수도 있습니다. 업데이트하려면 AWS CloudShell 사용 설명서의 홈 디렉터리에 AWS CLI 설치하기를 참조하세요. -
장치에 설치된
eksctl
명령줄 도구의 버전0.210.0
이상 또는 AWS CloudShell이 필요합니다.eksctl
을 설치 또는 업그레이드하려면eksctl
설명서에서 설치를 참조하세요. -
kubectl
명령줄 도구는 장치 또는 AWS CloudShell에 설치됩니다. 버전은 클러스터의 Kubernetes 버전과 동일하거나 최대 하나 이전 또는 이후의 마이너 버전일 수 있습니다. 예를 들어, 클러스터 버전이1.29
인 경우kubectl
버전1.28
,1.29
또는1.30
를 함께 사용할 수 있습니다.kubectl
을 설치하거나 업그레이드하려면 kubectl 및 eksctl 설정 부분을 참조하세요.
1단계-IAM 역할 생성
Amazon FSx CSI 플러그인이 사용자를 대신하여 AWS API를 직접적으로 호출하려면 IAM 권한이 필요합니다.
참고
IMDS에 대한 액세스 권한을 차단하지 않는 한 포드는 IAM 역할에 할당된 권한에 대한 액세스 권한이 있습니다. 자세한 내용은 모범 사례로 Amazon EKS 클러스터 보호 섹션을 참조하세요.
다음 절차에서는 IAM 역할을 생성하고 AWS 관리형 정책을 연결하는 방법을 보여줍니다.
-
다음 명령을 사용하여 IAM 역할을 생성하고 AWS 관리형 정책을 연결합니다.
my-cluster
를 사용하려는 클러스터의 이름으로 바꿉니다. 이 명령은 IAM 역할을 생성하고 IAM 정책을 연결하는 AWS CloudFormation 스택을 배포합니다.eksctl create iamserviceaccount \ --name fsx-csi-controller-sa \ --namespace kube-system \ --cluster my-cluster \ --role-name AmazonEKS_FSx_CSI_DriverRole \ --role-only \ --attach-policy-arn arn:aws:iam::aws:policy/AmazonFSxFullAccess \ --approve
서비스 계정이 생성되면 여러 줄의 출력이 표시됩니다. 출력의 마지막 줄은 다음과 유사합니다.
[ℹ] 1 task: { 2 sequential sub-tasks: { create IAM role for serviceaccount "kube-system/fsx-csi-controller-sa", create serviceaccount "kube-system/fsx-csi-controller-sa", } } [ℹ] building iamserviceaccount stack "eksctl-my-cluster-addon-iamserviceaccount-kube-system-fsx-csi-controller-sa" [ℹ] deploying stack "eksctl-my-cluster-addon-iamserviceaccount-kube-system-fsx-csi-controller-sa" [ℹ] waiting for CloudFormation stack "eksctl-my-cluster-addon-iamserviceaccount-kube-system-fsx-csi-controller-sa" [ℹ] created serviceaccount "kube-system/fsx-csi-controller-sa"
배포된 AWS CloudFormation 스택의 이름을 기록합니다. 이전 예제 출력에서 스택의 이름이
eksctl-my-cluster-addon-iamserviceaccount-kube-system-fsx-csi-controller-sa
로 지정되어 있습니다.
이제 Amazon FSx CSI 드라이버 IAM 역할을 생성했으므로 다음 섹션을 계속 진행할 수 있습니다. 이 IAM 역할을 사용하여 추가 기능을 배포하면 fsx-csi-controller-sa
라는 서비스 계정을 생성하고 사용하도록 구성됩니다. 이 서비스 계정은 필요한 Kubernetes 권한이 할당된 Kubernetes clusterrole
에 바인딩되어 있습니다.
2단계: Amazon FSx CSI 드라이버 설치
보안을 강화하고 작업량을 줄이려면 Amazon FSx 추가 기능을 통해 Amazon EBS CSI 드라이버를 설치하는 것이 좋습니다. Amazon EKS 추가 기능을 클러스터에 추가하려면 Amazon EKS 추가 기능 생성 섹션을 참조하세요. Amazon EKS 추가 기능에 대한 자세한 내용은 Amazon EKS 추가 기능 섹션을 참조하세요.
중요
클러스터에 기존 Amazon FSx CSI 드라이버를 설치하면 추가 기능 설치에 실패할 수 있습니다. 비 EKS FSx CSI 드라이버가 있는 동안 Amazon EKS 추가 기능 버전을 설치하려고 하면 리소스 충돌로 인해 설치가 실패합니다 설치 중 OVERWRITE
플래그를 사용하여 이 문제를 해결합니다.
aws eks create-addon --addon-name aws-fsx-csi-driver --cluster-name my-cluster --resolve-conflicts OVERWRITE
대신 Amazon FSx CSI 드라이버의 자체 관리형 설치를 원하는 경우 GitHub의 Installation
3단계: 스토리지 클래스, 영구 볼륨 클레임 및 샘플 앱 배포
이 절차에서는 FSx for Lustre Container Storage Interface(CSI) 드라이버
-
클러스터의 보안 그룹을 기록합니다. 이는 네트워킹 섹션 아래의 AWS Management Console에서 또는 다음을 AWS CLI 명령을 사용하여 볼 수 있습니다.
my-cluster
를 사용하려는 클러스터의 이름으로 바꿉니다.aws eks describe-cluster --name my-cluster --query cluster.resourcesVpcConfig.clusterSecurityGroupId
-
Amazon FSx for Lustre 사용 설명서의 Amazon VPC 보안 그룹에 표시된 기준에 따라 Amazon FSx 파일 시스템에 대한 보안 그룹을 생성합니다. VPC의 경우 네트워킹 섹션 아래 표시된 대로 클러스터의 VPC를 선택합니다. “Lustre 클라이언트와 연결된 보안 그룹”의 경우 클러스터 보안 그룹을 사용합니다. 아웃바운드 규칙을 그대로 두어 모든 트래픽을 허용할 수 있습니다.
-
다음 명령을 사용하여 스토리지 클래스 매니페스트를 다운로드합니다.
curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-fsx-csi-driver/master/examples/kubernetes/dynamic_provisioning/specs/storageclass.yaml
-
storageclass.yaml
파일의 파라미터 섹션을 편집합니다. 모든 예제 값을 자신의 값으로 바꾸세요.parameters: subnetId: subnet-0eabfaa81fb22bcaf securityGroupIds: sg-068000ccf82dfba88 deploymentType: PERSISTENT_1 automaticBackupRetentionDays: "1" dailyAutomaticBackupStartTime: "00:00" copyTagsToBackups: "true" perUnitStorageThroughput: "200" dataCompressionType: "NONE" weeklyMaintenanceStartTime: "7:09:00" fileSystemTypeVersion: "2.12"
-
subnetId
- Amazon FSx for Lustre 파일 시스템을 생성해야 하는 서브넷 ID입니다. Amazon FSx for Lustre는 일부 가용 영역에서 지원되지 않습니다. https://console.aws.amazon.com/fsx/에서 Amazon FSx for Lustre 콘솔을 열어 사용하려는 서브넷이 지원되는 가용 영역에 있는지 확인합니다. 서브넷은 노드를 포함할 수도 있고 다른 서브넷이나 VPC일 수도 있습니다. -
컴퓨팅 섹션에서 노드 그룹을 선택하여 AWS Management Console에서 노드 서브넷을 확인할 수 있습니다.
-
지정한 서브넷이 노드가 있는 서브넷과 다른 경우 VPC가 연결되어 있어야 하며 보안 그룹에 필요한 포트가 열려 있는지 확인해야 합니다.
-
-
securityGroupIds
- 파일 시스템에 대해 생성된 보안 그룹의 ID. -
deploymentType
(선택사항) - 파일 시스템 배포 유형입니다. 유효한 값은SCRATCH_1
,SCRATCH_2
,PERSISTENT_1
및PERSISTENT_2
입니다. 배포 유형에 대한 자세한 내용은 Amazon FSx for Lustre 파일 시스템 생성을 참조하세요. -
기타 파라미터(선택 사항) - 기타 파라미터에 대한 자세한 내용을 알아보려면 GitHub의 스토리지 클래스 편집
을 참조하세요.
-
-
스토리지 클래스 매니페스트를 생성합니다.
kubectl apply -f storageclass.yaml
예제 출력은 다음과 같습니다.
storageclass.storage.k8s.io/fsx-sc created
-
영구 볼륨 클레임 매니페스트를 다운로드합니다.
curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-fsx-csi-driver/master/examples/kubernetes/dynamic_provisioning/specs/claim.yaml
-
(선택사항)
claim.yaml
파일을 편집합니다. 스토리지 요구 사항과 이전 단계에서 선택한deploymentType
에 따라1200Gi
를 다음 증분 값 중 하나로 변경합니다.storage: 1200Gi
-
SCRATCH_2
및PERSISTENT
-1.2 TiB
,2.4 TiB
또는 2.4TiB 대비 2.4TiB씩 증가합니다. -
SCRATCH_1
-1.2 TiB
,2.4 TiB
,3.6 TiB
또는 3.6TiB 대비 3.6TiB씩 증가합니다.
-
-
영구 볼륨 클레임을 생성합니다.
kubectl apply -f claim.yaml
예제 출력은 다음과 같습니다.
persistentvolumeclaim/fsx-claim created
-
파일 시스템이 프로비저닝되었는지 확인합니다.
kubectl describe pvc
예제 출력은 다음과 같습니다.
Name: fsx-claim Namespace: default StorageClass: fsx-sc Status: Bound [...]
참고
Status
는Bound
로 변경되기 전에 5~10분 동안Pending
으로 표시될 수 있습니다.Status
가Bound
가 될 때까지 다음 단계를 계속하지 마세요.Status
에 10분 이상 동안Pending
이 표시되는 경우 모든 문제를 해결하기 위한 참조로Events
의 경고 메시지를 사용합니다. -
샘플 애플리케이션을 배포합니다.
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-fsx-csi-driver/master/examples/kubernetes/dynamic_provisioning/specs/pod.yaml
-
샘플 애플리케이션이 실행 중인지 확인합니다.
kubectl get pods
예제 출력은 다음과 같습니다.
NAME READY STATUS RESTARTS AGE fsx-app 1/1 Running 0 8s
-
파일 시스템이 애플리케이션에 의해 올바르게 탑재되었는지 확인합니다.
kubectl exec -ti fsx-app -- df -h
예제 출력은 다음과 같습니다.
Filesystem Size Used Avail Use% Mounted on overlay 80G 4.0G 77G 5% / tmpfs 64M 0 64M 0% /dev tmpfs 3.8G 0 3.8G 0% /sys/fs/cgroup 192.0.2.0@tcp:/abcdef01 1.1T 7.8M 1.1T 1% /data /dev/nvme0n1p1 80G 4.0G 77G 5% /etc/hosts shm 64M 0 64M 0% /dev/shm tmpfs 6.9G 12K 6.9G 1% /run/secrets/kubernetes.io/serviceaccount tmpfs 3.8G 0 3.8G 0% /proc/acpi tmpfs 3.8G 0 3.8G 0% /sys/firmware
-
샘플 앱에서 데이터가 FSx for Lustre 파일 시스템에 작성되었는지 확인합니다.
kubectl exec -it fsx-app -- ls /data
예제 출력은 다음과 같습니다.
out.txt
이 출력 예는 샘플 앱이 파일 시스템에
out.txt
파일을 성공적으로 기록했다는 것을 보여줍니다.
참고
클러스터를 삭제하기 전에 FSx for Lustre 파일 시스템을 삭제해야 합니다. 자세한 내용은 FSx for Lustre 사용 설명서의 리소스 정리를 참조하세요.
FSx for Lustre의 성능 튜닝
Amazon EKS와 함께 FSx for Lustre를 사용하는 경우 노드 초기화 중 Lustre 튜닝을 적용하여 성능을 최적화할 수 있습니다. 권장 접근 방식은 시작 템플릿 사용자 데이터를 사용하여 모든 노드에서 일관된 구성을 보장하는 것입니다.
이러한 튜닝에는 다음이 포함됩니다.
-
네트워크 및 RPC 최적화
-
Lustre 모듈 관리
-
LRU(리소스 잠금 단위) 튜닝
-
클라이언트 캐시 제어 설정
-
OST 및 MDC에 대한 RPC 제어
이러한 성능 튜닝을 실행하는 방법에 대한 자세한 지침은 다음과 같습니다.
-
표준 노드(비 EFA)의 성능을 최적화하려면 노드에서 Amazon FSx for Lustre 성능 최적화(비 EFA)에서 시작 템플릿 사용자 데이터에 추가할 수 있는 전체 스크립트를 참조하세요.
-
EFA 지원 노드의 성능 최적화는 노드에서 Amazon FSx for Lustre 성능 최적화(EFA) 섹션을 참조하세요.