使用 FSx for Lustre 存放高效能應用程式 - Amazon EKS

協助改善此頁面

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

想要為此使用者指南做出貢獻? 捲動至此頁面底部,然後選取編輯此頁面 GitHub。您的貢獻將幫助我們的使用者指南更適合每個人。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 FSx for Lustre 存放高效能應用程式

FSx for Lustre 容器儲存介面 (CSI) 驅動程式提供的CSI介面可讓 Amazon EKS叢集管理 FSx for Lustre 檔案系統的生命週期。如需詳細資訊,請參閱 FSx for Lustre 使用者指南

本主題說明如何將 FSx for Lustre CSI驅動程式部署至 Amazon EKS叢集,並確認其是否正常運作。我們建議您使用最新版的驅動程式。如需可用的版本,請參閱 上的CSI規格相容性矩陣 GitHub。

注意

Fargate 或 Amazon EKS混合節點不支援驅動程式。

如需可用參數的詳細說明,以及示範驅動程式功能的完整範例,請參閱 上的 FSx for Lustre Container Storage Interface (CSI) 驅動程式專案 GitHub.

您必須有:

  • 在您的裝置或 上安裝和設定的 1.27.160 AWS 命令列界面 (AWS CLI) 版本 2.12.3或更新版本 AWS CloudShell。若要檢查您目前的版本,請使用 aws --version | cut -d / -f2 | cut -d ' ' -f1。套件管理員apt-get,例如 yum、 或 Homebrew for macOS 通常是最新版本 後面的幾個版本 AWS CLI。若要安裝最新版本,請參閱《 AWS 命令列界面使用者指南》中的安裝快速組態搭配 aws 設定。安裝在 AWS CLI中的版本 AWS CloudShell 也可能是最新版本後面的幾個版本。若要更新它,請參閱 AWS CloudShell 《 使用者指南》中的安裝 AWS CLI 到您的主目錄

  • 已在裝置或 AWS CloudShell 上安裝版本 0.199.0 或更新版本的 eksctl 命令列工具。如需有關安裝或更新 eksctl 的指示,請參閱 eksctl 文件中的安裝一節。

  • 已在裝置或 AWS CloudShell 上安裝 kubectl 命令列工具。版本可與 相同,或最多可以比 更早或更晚的一個次要版本 Kubernetes 叢集的 版本。例如,如果您的叢集版本為 1.29,則可以搭配使用 kubectl 1.281.291.30 版。若要安裝或升級 kubectl,請參閱 設定 kubectl 和 eksctl

下列程序可協助您使用 FSx for Lustre CSI驅動程式建立簡單的測試叢集,以便了解其運作方式。我們不建議將測試叢集用於生產工作負載。在本教學課程中,建議您使用 example values,除非已註明要取代。完成生產叢集的步驟時,您可以替換任何 example value。我們建議您完成相同終端機中的所有步驟,因為變數會設定並在整個步驟中使用,而且不會存在於不同的終端機中。

  1. 設定幾個變數以在剩餘步驟中使用。my-csi-fsx-cluster 將 取代為您要建立的測試叢集名稱,並將 region-code取代為您要建立測試叢集 AWS 的區域。

    export cluster_name=my-csi-fsx-cluster export region_code=region-code
  2. 建立測試叢集。

    eksctl create cluster \ --name $cluster_name \ --region $region_code \ --with-oidc \ --ssh-access \ --ssh-public-key my-key

    叢集佈建需要幾分鐘的時間。在叢集建立期間,您會看到幾行輸出。輸出的最後一行類似於下面的範例行。

    [✓] EKS cluster "my-csi-fsx-cluster" in "region-code" region is ready
  3. 建立 Kubernetes 驅動程式的服務帳戶,並使用下列命令將 AmazonFSxFullAccess AWS受管政策連接至服務帳戶。如果您的叢集位於 AWS GovCloud (美國東部) 或 AWS GovCloud (美國西部) AWS 區域,請將 取代 arn:aws: arn:aws-us-gov:

    eksctl create iamserviceaccount \ --name fsx-csi-controller-sa \ --namespace kube-system \ --cluster $cluster_name \ --attach-policy-arn arn:aws: iam::aws:policy/AmazonFSxFullAccess \ --approve \ --role-name AmazonEKSFSxLustreCSIDriverFullAccess \ --region $region_code

    建立服務帳戶時,您會看到幾行輸出。輸出的最後一行類似於下列內容。

    [ℹ] 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-csi-fsx-cluster-addon-iamserviceaccount-kube-system-fsx-csi-controller-sa" [ℹ] deploying stack "eksctl-my-csi-fsx-cluster-addon-iamserviceaccount-kube-system-fsx-csi-controller-sa" [ℹ] waiting for CloudFormation stack "eksctl-my-csi-fsx-cluster-addon-iamserviceaccount-kube-system-fsx-csi-controller-sa" [ℹ] created serviceaccount "kube-system/fsx-csi-controller-sa"

    請注意已部署的 AWS CloudFormation 堆疊名稱。在先前的範例輸出中,堆疊被命名為 eksctl-my-csi-fsx-cluster-addon-iamserviceaccount-kube-system-fsx-csi-controller-sa

  4. 使用下列命令部署驅動程式。使用所需的分支取代 release-X.XX。不支援主分支,因為它可能包含與目前發行的穩定版本驅動程式不相容的近期功能。我們建議使用最新發行版本。如需分支清單,請參閱 上的aws-fsx-csi-driver分支 GitHub。

    注意

    您可以在 aws-fsx-csi-driver/deploy/kubernetes/overlays/stable 上檢視要套用的內容 GitHub.

    kubectl apply -k "github.com/kubernetes-sigs/aws-fsx-csi-driver/deploy/kubernetes/overlays/stable/?ref=release-X.XX"

    範例輸出如下。

    serviceaccount/fsx-csi-controller-sa created serviceaccount/fsx-csi-node-sa created clusterrole.rbac.authorization.k8s.io/fsx-csi-external-provisioner-role created clusterrole.rbac.authorization.k8s.io/fsx-external-resizer-role created clusterrolebinding.rbac.authorization.k8s.io/fsx-csi-external-provisioner-binding created clusterrolebinding.rbac.authorization.k8s.io/fsx-csi-resizer-binding created deployment.apps/fsx-csi-controller created daemonset.apps/fsx-csi-node created csidriver.storage.k8s.io/fsx.csi.aws.com created
  5. 請注意所建立角色ARN的 。如果您先前沒有記下,而且在輸出中 AWS CLI不再提供,您可以執行下列動作,在 中查看它 AWS Management Console。

    1. 開啟 AWS CloudFormation 主控台

    2. 確定主控台已設定為您在其中建立IAM角色 AWS 的區域,然後選取 Stacks

    3. 選取名為 eksctl-my-csi-fsx-cluster-addon-iamserviceaccount-kube-system-fsx-csi-controller-sa 的堆疊。

    4. 選取 Outputs (輸出) 標籤。Role1 ARN會列在輸出 (1) 頁面上。

  6. 修補驅動程式部署,以新增您先前使用下列命令建立的服務帳戶。ARN 將 取代為您記下ARN的 。使用您的帳戶 ID 取代 111122223333。如果您的叢集位於 AWS GovCloud (美國東部) 或 AWS GovCloud (美國西部) AWS 區域,請將 取代 arn:aws: arn:aws-us-gov:

    kubectl annotate serviceaccount -n kube-system fsx-csi-controller-sa \ eks.amazonaws.com/role-arn=arn:aws: iam::111122223333:role/AmazonEKSFSxLustreCSIDriverFullAccess --overwrite=true

    範例輸出如下。

    serviceaccount/fsx-csi-controller-sa annotated

此程序使用 FSx for Lustre Container Storage Interface (CSI) 驅動程式 GitHub 儲存庫,以使用動態佈建FSx的 Lustre 磁碟區。

  1. 記下叢集的安全群組。您可以在網路區段 AWS Management Console 下的 中或使用下列 AWS CLI命令來查看。

    aws eks describe-cluster --name $cluster_name --query cluster.resourcesVpcConfig.clusterSecurityGroupId
  2. 根據 Amazon FSx for Lustre 使用者指南中的 Amazon 安全群組中顯示的條件,為您的 Amazon FSx 檔案系統建立安全群組。 VPC 針對 VPC,選取叢集VPC的 ,如網路區段所示。對於「與 Lustre 用戶端關聯的安全群組」,請使用您的叢集安全群組。您可以單獨保留傳出規則,以允許 All traffic (所有流量)。

  3. 執行以下命令,下載儲存類別清單檔案。

    curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-fsx-csi-driver/master/examples/kubernetes/dynamic_provisioning/specs/storageclass.yaml
  4. 編輯 storageclass.yaml 檔案的參數區段。使用您自己的值取代每一個 ‭example value‬。

    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。在 開啟 Amazon FSx for Lustre 主控台,https://console.aws.amazon.com/fsx/以確認您要使用的子網路位於支援的可用區域中。子網路可以包含您的節點,也可以是不同的子網路或 VPC:

      • 您可以在運算區段下選取節點群組, AWS Management Console 以檢查 中的節點子網路。

      • 如果您指定的子網路與您擁有節點的子網路不同,則VPCs您的 必須連線,而且您必須確保在安全群組中開啟必要的連接埠。

    • securityGroupIds – 您為檔案系統建立的安全群組 ID。

    • deploymentType (選用) – 檔案系統部署類型。有效值為 SCRATCH_1SCRATCH_2PERSISTENT_1PERSISTENT_2。如需部署類型的詳細資訊,請參閱建立 Amazon FSx for Lustre 檔案系統

    • 其他參數 (選用) – 如需其他參數的相關資訊,請參閱在 上編輯 StorageClass GitHub.

  5. 建立儲存類別清單檔案。

    kubectl apply -f storageclass.yaml

    範例輸出如下。

    storageclass.storage.k8s.io/fsx-sc created
  6. 下載持續性磁碟區宣告清單檔案。

    curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-fsx-csi-driver/master/examples/kubernetes/dynamic_provisioning/specs/claim.yaml
  7. (選用) 編輯 claim.yaml 檔案。根據您的儲存要求和您在上一個步驟中選取的 deploymentType,將 1200Gi 變更為下列某一個增量值。

    storage: 1200Gi
    • SCRATCH_2PERSISTENT1.2 TiB2.4 TiB,超過 2.4 TiB 則以 2.4 TiB 為單位遞增。

    • SCRATCH_11.2 TiB2.4 TiB3.6 TiB,超過 3.6 TiB 則以 3.6 TiB 為單位遞增。

  8. 建立持續性磁碟區宣告。

    kubectl apply -f claim.yaml

    範例輸出如下。

    persistentvolumeclaim/fsx-claim created
  9. 確認已佈建檔案系統。

    kubectl describe pvc

    範例輸出如下。

    Name: fsx-claim Namespace: default StorageClass: fsx-sc Status: Bound [...]
    注意

    Status 可能會顯示為 Pending 約 5-10 分鐘,然後變更為 Bound。在 Status為 之前,請勿繼續下一個步驟Bound。如果 Status 顯示 Pending 超過 10 分鐘,請使用 Events 中的警告訊息作為解決任何問題的參考。

  10. 部署範例應用程式。

    kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-fsx-csi-driver/master/examples/kubernetes/dynamic_provisioning/specs/pod.yaml
  11. 確認範例應用程式正在執行。

    kubectl get pods

    範例輸出如下。

    NAME READY STATUS RESTARTS AGE fsx-app 1/1 Running 0 8s
  12. 驗證應用程式是否正確掛載了檔案系統。

    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
  13. 確認範例應用程式已將資料寫入 FSx for Lustre 檔案系統。

    kubectl exec -it fsx-app -- ls /data

    範例輸出如下。

    out.txt

    此範例輸出顯示範例應用程式成功地將 out.txt 檔案寫入檔案系統。

注意

刪除叢集之前,請務必刪除 FSx for Lustre 檔案系統。如需詳細資訊,請參閱FSx《 for Lustre 使用者指南》中的清除資源

📝 在 上編輯此頁面 GitHub