協助改進此頁面
若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。
部署 FSx for Lustre 驅動程式
本主題說明如何將 FSx for Lustre CSI 驅動程式部署到您的 Amazon EKS 叢集,並確認是否正常運作。我們建議您使用最新版的驅動程式。如需可用版本,請參閱 GitHub 上的 CSI 規格相容性對照表
注意
Fargate 或 Amazon EKS 混合節點不支援此驅動程式。
如需可用參數的詳細說明,以及示範驅動程式功能的完整範例,請參閱 GitHub 上的 FSx for Lustre 容器儲存介面 (CSI) 驅動程式
先決條件
-
現有的叢集。
-
Amazon FSx CSI 驅動程式 EKS 附加元件需要 EKS Pod 身分識別代理程式進行身分驗證。如果沒有此元件,附加元件會失敗並出現錯誤
Amazon EKS Pod Identity agent is not installed in the cluster,從而防止磁碟區操作。在部署 FSx CSI 驅動程式附加元件之前或之後,安裝 Pod 身分識別代理程式。如需詳細資訊,請參閱 設定 Amazon EKS Pod 身分識別代理程式。 -
已在裝置或 AWS CloudShell 上安裝和設定 AWS 命令列介面 (AWS CLI) 版本
2.12.3或更新版本,或是版本1.27.160或更新版本。若要檢查您目前的版本,請使用aws --version | cut -d / -f2 | cut -d ' ' -f1。如yum、apt-get或適用於 macOS 的 Homebrew 等套件管理工具通常比最新版本的 AWS CLI 落後數個版本之多。若要安裝最新版本,請參閱《AWS 命令列介面使用者指南》中的安裝與使用 aws configure 的快速組態。AWS CloudShell 中安裝的 AWS CLI 版本也可能比最新版本落後數個版本。若要更新,請參閱《AWS CloudShell 使用者指南》中的安裝 AWS CLI 至您的主目錄。 -
已在裝置或 AWS CloudShell 上安裝版本
0.214.0或更新版本的eksctl命令列工具。如需有關安裝或更新eksctl的指示,請參閱eksctl文件中的安裝一節。 -
已在裝置或 AWS CloudShell 上安裝
kubectl命令列工具。版本可以與您的叢集 Kubernetes 版本相同,或是為最多比該版本更舊一版或更新一版的次要版本。例如,如果您的叢集版本為1.29,則可以搭配使用kubectl1.28、1.29或1.30版。若要安裝或升級kubectl,請參閱 設定 kubectl 和 eksctl。
步驟 1:建立 IAM 角色
Amazon FSx CSI 外掛程式需要 IAM 許可,才能代表您呼叫 AWS API。
注意
Pod 可以存取指派給 IAM 角色的許可,除非您封鎖對 IMDS 的存取。如需詳細資訊,請參閱 藉助最佳實務來保護 Amazon EKS 叢集。
以下程序說明如何建立 IAM 角色,並將 AWS 受管政策連接到該角色。
-
建立 IAM 角色,並按照下列命令連接 AWS 受管政策。使用您要使用的叢集名稱取代
my-cluster。命令會部署 AWS CloudFormation 堆疊,而堆疊則會建立 IAM 角色並將 IAM 政策連接至該角色。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 EKS 附加元件安裝 Amazon FSx CSI 驅動程式,以提升安全性並減少工作量。若要將 Amazon EKS 附加元件新增至叢集,請參閱 建立 Amazon EKS 附加元件。如需附加元件的詳細資訊,請參閱 Amazon EKS 附加元件。
重要
叢集中預先存在的 Amazon FSx CSI 驅動程式安裝可能會導致附加元件安裝失敗。當您嘗試安裝 Amazon EKS 附加元件版本而又存在非 EKS FSx CSI 驅動程式時,安裝會因資源衝突而失敗。在安裝期間使用 OVERWRITE 旗標以解決此問題。
aws eks create-addon --addon-name aws-fsx-csi-driver --cluster-name my-cluster --resolve-conflicts OVERWRITE
或者,如果您想要 Amazon FSx CSI 驅動程式的自我管理安裝,請參閱 GitHub 上的安裝
步驟 3:部署儲存類別、持久性磁碟區宣告和範例應用程式
此程序使用 FSx for Lustre 容器儲存介面 (CSI) 驅動程式
-
記下叢集的安全群組。您可以在聯網區段下的 AWS 管理主控台 中查看,也可以使用以下 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 用戶端關聯的安全群組」,請使用您的叢集安全群組。您可以單獨保留傳出規則,以允許 All traffic (所有流量)。
-
執行以下命令,下載儲存類別清單檔案。
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: -
您可以選取 Compute (運算) 區段下的節點群組來檢查 AWS 管理主控台 中的節點子網。
-
若您指定的子網路與您擁有節點的子網路不同,則您的 VPC 必須已連線,且您必須確認安全群組中必要的連接埠已開啟。
-
-
securityGroupIds:您為檔案系統所建立的安全群組 ID。 -
deploymentType(選用):檔案系統部署類型。有效值為SCRATCH_1、SCRATCH_2、PERSISTENT_1、PERSISTENT_2。如需部署類型的詳細資訊,請參閱建立您的 Amazon FSx for Lustre 檔案系統。 -
其他參數 (選用):如需有關其他參數的詳細資訊,請參閱 GitHub 上的編輯 StorageClass
。
-
-
建立儲存類別清單檔案。
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.4 TiB 則以 2.4 TiB 為單位遞增。 -
SCRATCH_1:1.2 TiB、2.4 TiB或3.6 TiB,超過 3.6 TiB 則以 3.6 TiB 為單位遞增。
-
-
建立持續性磁碟區宣告。
kubectl apply -f claim.yaml範例輸出如下。
persistentvolumeclaim/fsx-claim created -
確認已佈建檔案系統。
kubectl describe pvc範例輸出如下。
Name: fsx-claim Namespace: default StorageClass: fsx-sc Status: Bound [...]注意
Status可能會顯示為Pending約 5-10 分鐘,然後變更為Bound。在Status成為Bound之前,請勿繼續下一步。如果Status顯示Pending超過 10 分鐘,請使用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) 的效能,請參閱 最佳化節點 (非 EFA) 上的 Amazon FSx for Lustre 效能,以取得可新增至啟動範本使用者資料的完整指令碼。
-
如需最佳化已啟用 EFA 節點的效能,請參閱 最佳化節點 (EFA) 上的 Amazon FSx for Lustre 效能。