協助改善此頁面
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
若要提供此使用者指南,請選擇位於每個頁面右窗格的 GitHub 上的編輯此頁面連結。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
FSx for Lustre 容器儲存介面 (CSI) 驅動程式
本主題說明如何將 FSx for Lustre CSI 驅動程式部署到您的 Amazon EKS 叢集,並確認是否正常運作。我們建議您使用最新版的驅動程式。如需可用版本,請參閱 GitHub 上的 CSI 規格相容性對照表
注意
Fargate 或 Amazon EKS 混合節點不支援驅動程式。
如需可用參數的詳細說明,以及示範驅動程式功能的完整範例,請參閱 GitHub 上的 FSx for Lustre Container Storage Interface (CSI) 驅動程式
您必須有:
-
在您的裝置或 AWS CloudShell 上安裝和設定的 AWS 命令列界面 (AWS CLI) 版本
1.27.160
2.12.3
或更新版本。若要檢查您目前的版本,請使用aws --version | cut -d / -f2 | cut -d ' ' -f1
。適用於 macOS 的yum
、apt-get
或 Homebrew 等套件管理員通常是最新版本 CLI AWS 後面的數個版本。若要安裝最新版本,請參閱《 AWS 命令列界面使用者指南》中的使用 aws 設定安裝 和快速組態。 https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config在 AWS CloudShell 中安裝的 AWS CLI 版本也可能是最新版本後面的數個版本。若要更新它,請參閱《CloudShell AWS 使用者指南》中的將 CLI 安裝到您的主目錄。 AWS CloudShell -
裝置或 AWS CloudShell 上安裝的
eksctl
命令列工具版本0.205.0
或更新版本。如需有關安裝或更新eksctl
的指示,請參閱eksctl
文件中的安裝一節。 -
kubectl
命令列工具安裝在您的裝置或 AWS CloudShell 上。該版本可以與叢集的 Kubernetes 版本相同,也可以比叢集的 Kubernetes 版本更早或更晚,最多一個次要版本。例如,如果您的叢集版本為1.29
,則可以搭配使用kubectl
1.28
、1.29
或1.30
版。若要安裝或升級kubectl
,請參閱 設定 kubectl和 eksctl。
以下過程可協助您使用 FSx for Lustre CSI 驅動程式建立簡單的測試叢集,以便您查看其運作原理。不建議將測試叢集用於生產工作負載。在本教學課程中,建議您使用範例值
,除非已註明要取代這些值。您可以在完成生產叢集的步驟時取代任何範例值
。我們建議您在相同的終端機中完成所有步驟,因為變數會在整個步驟中設定和使用,並且不會存在於不同的終端機中。
-
設定幾個變數以在剩餘步驟中使用。將
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受管政策連接至服務帳戶。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 取代
為您想要的分支。不支援主分支,因為它可能包含與目前發行的穩定驅動程式版本不相容的近期功能。我們建議使用最新發行版本。如需分支清單,請參閱 GitHub 上的aws-fsx-csi-driver
分支。 注意
您可以在 GitHub 上檢視在 aws-fsx-csi-driver/deploy/kubernetes/overlays/stable
中套用的內容。 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 。如果您之前沒有記下,而且在 CLI AWS 輸出中不再提供,您可以執行下列動作,在 中查看它 AWS Management Console。
-
請確定主控台已設定為您在其中建立 IAM 角色 AWS 的區域,然後選取 Stacks。
-
選取名為
eksctl-my-csi-fsx-cluster-addon-iamserviceaccount-kube-system-fsx-csi-controller-sa
的堆疊。 -
選取 Outputs (輸出) 標籤。Role1 ARN 會列在 Output (1) (輸出 (1)) 頁面上。
-
修補驅動程式部署,以新增您先前使用下列命令建立的服務帳戶。將 ARN 取代為您記下的 ARN。使用您的帳戶 ID 取代
111122223333
。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 容器儲存介面 (CSI) driverGitHub
-
記下叢集的安全群組。您可以在聯網區段 AWS Management Console 下的 中或使用下列 CLI AWS 命令來查看。
aws eks describe-cluster --name $cluster_name --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: -
您可以在運算區段下選取節點群組, AWS Management Console 以檢查 中的節點子網路。
-
如果您指定的子網路與您擁有節點的子網路不同,則必須連接 VPCs,而且您必須確保安全群組中開啟必要的連接埠。
-
-
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 使用者指南》中的清除資源。