協助改善此頁面
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
想要為此使用者指南做出貢獻? 捲動至此頁面底部,然後選取編輯此頁面 GitHub。您的貢獻將幫助我們的使用者指南更適合每個人。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 FSx for Lustre 存放高效能應用程式
FSx for Lustre 容器儲存介面 (CSI) 驅動程式
本主題說明如何將 FSx for Lustre CSI驅動程式部署至 Amazon EKS叢集,並確認其是否正常運作。我們建議您使用最新版的驅動程式。如需可用的版本,請參閱 上的CSI規格相容性矩陣
注意
Fargate 或 Amazon EKS混合節點不支援驅動程式。
如需可用參數的詳細說明,以及示範驅動程式功能的完整範例,請參閱 上的 FSx for Lustre Container Storage Interface (CSI) 驅動程式
您必須有:
-
在您的裝置或 上安裝和設定的
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.28
、1.29
或1.30
版。若要安裝或升級kubectl
,請參閱 設定 kubectl 和 eksctl。
下列程序可協助您使用 FSx for Lustre CSI驅動程式建立簡單的測試叢集,以便了解其運作方式。我們不建議將測試叢集用於生產工作負載。在本教學課程中,建議您使用 example values
,除非已註明要取代。完成生產叢集的步驟時,您可以替換任何 example value
。我們建議您完成相同終端機中的所有步驟,因為變數會設定並在整個步驟中使用,而且不會存在於不同的終端機中。
-
設定幾個變數以在剩餘步驟中使用。
my-csi-fsx-cluster
將 取代為您要建立的測試叢集名稱,並將region-code
取代為您要建立測試叢集 AWS 的區域。export cluster_name=my-csi-fsx-cluster export region_code=region-code
-
建立測試叢集。
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
-
建立 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
。 -
使用下列命令部署驅動程式。使用所需的分支取代
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
-
請注意所建立角色ARN的 。如果您先前沒有記下,而且在輸出中 AWS CLI不再提供,您可以執行下列動作,在 中查看它 AWS Management Console。
-
確定主控台已設定為您在其中建立IAM角色 AWS 的區域,然後選取 Stacks。
-
選取名為
eksctl-my-csi-fsx-cluster-addon-iamserviceaccount-kube-system-fsx-csi-controller-sa
的堆疊。 -
選取 Outputs (輸出) 標籤。Role1 ARN會列在輸出 (1) 頁面上。
-
修補驅動程式部署,以新增您先前使用下列命令建立的服務帳戶。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) 驅動程式
-
記下叢集的安全群組。您可以在網路區段 AWS Management Console 下的 中或使用下列 AWS CLI命令來查看。
aws eks describe-cluster --name $cluster_name --query cluster.resourcesVpcConfig.clusterSecurityGroupId
-
根據 Amazon FSx for Lustre 使用者指南中的 Amazon 安全群組中顯示的條件,為您的 Amazon FSx 檔案系統建立安全群組。 VPC 針對 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
檔案的參數區段。使用您自己的值取代每一個 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_1
、SCRATCH_2
、PERSISTENT_1
、PERSISTENT_2
。如需部署類型的詳細資訊,請參閱建立 Amazon FSx for Lustre 檔案系統。 -
其他參數 (選用) – 如需其他參數的相關資訊,請參閱在 上編輯 StorageClass
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.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 使用者指南》中的清除資源。