Amazon FSx for Lustre CSI ドライバー
FSx for Lustre コンテナストレージインターフェイス (CSI) ドライバー
このトピックでは、FSx for Lustre CSI ドライバーを Amazon EKS クラスターにデプロイし、動作することを確認する方法を示します。最新バージョンのドライバーを使用することをお勧めします。利用可能なバージョンについては、GitHub の「CSI Specification Compatibility Matrix
注記
Fargate では、ドライバーはサポートされていません。
使用可能なパラメータの詳細と、ドライバーの機能を示す完全な例については、「GitHub」の「FSx for Lustre コンテナストレージインターフェイス (CSI) ドライバー
前提条件
必要なもの:
-
ご使用のデバイスまたは AWS CloudShell で、バージョン
2.12.3
以降、または AWS Command Line Interface (AWS CLI) のバージョン1.27.160
以降がインストールおよび設定されていること。現在のバージョンを確認するには、「
」を参照してください。macOS のaws --version | cut -d / -f2 | cut -d ' ' -f1
yum
、apt-get
、または Homebrew などのパッケージマネージャは、AWS CLI の最新バージョンより数バージョン遅れることがあります。最新バージョンをインストールするには、「AWS Command Line Interface ユーザーガイド」の「AWS CLI のインストール、更新、およびアンインストール」と「aws configure でのクイック設定」を参照してください。AWS CloudShell にインストールされている AWS CLI バージョンは、最新バージョンより数バージョン遅れている可能性もあります。更新するには、「AWS CloudShell ユーザーガイド」の「ホームディレクトリへの AWS CLI のインストール」を参照してください。 -
デバイスまたは AWS CloudShell にインストールされている
eksctl
コマンドラインツールのバージョン0.172.0
以降。eksctl
をインストールまたはアップグレードするには、eksctl
ドキュメントの「インストール」を参照してください。 -
デバイスまたは AWS CloudShell に、
kubectl
コマンドラインツールがインストールされていること。バージョンは、ご使用のクラスターの Kubernetes バージョンと同じか、1 つ前のマイナーバージョン以前、あるいはそれより新しいバージョンが使用できます。例えば、クラスターのバージョンが1.28
である場合、kubectl
のバージョン1.27
、1.28
、または1.29
が使用できます。kubectl
をインストールまたはアップグレードする方法については、「kubectl のインストールまたは更新」を参照してください。
次の手順は、FSx for Lustre CSI ドライバーを使用して簡単なテストクラスターを作成して、動作を確認できるようにするのに役立ちます。本番ワークロードにテストクラスターを使用することはお勧めしません。このチュートリアルでは、
を使用することをお勧めしますが、置き換えるように書かれている箇所はその限りではありません。本番クラスター向けに手順を完了するときには、どの example
values
も置き換えることができます。変数は、この手順全体で設定および使用され、別のターミナルには存在しないため、同じターミナルですべての手順を完了することをお勧めします。example value
FSx for Lustre CSI ドライバーを Amazon EKS クラスターにデプロイするには
-
残りの手順で使用する変数をいくつか設定します。
を作成するテストクラスターの名前に置き換え、my-csi-fsx-cluster
をテストクラスターを作成する AWS リージョン に置き換えます。region-code
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
-
次のコマンドでドライバーをデプロイします。
を目的のブランチに置き換えます。マスターブランチは、現在リリースされている安定版のドライバーと互換性のない今後リリースされる機能が含まれている可能性があるため、サポート対象外です。最新のリリース済みバージョンをダウンロードすることをお勧めします。アクティブなブランチのリストについては、「GitHub」の「release-X.XX
aws-fsx-csi-driver
」を参照してください。 注記
GitHub の
aws-fsx-csi-driver
で、適用されているコンテンツを表示できます。 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 に表示できます。
https://console.aws.amazon.com/cloudformation
で AWS CloudFormation コンソール を開きます。 -
コンソールが IAM ロールを作成した AWS リージョン に設定されていることを確認してから、[スタック] を選択します。
-
eksctl-
という名前のスタックを選択します。my-csi-fsx-cluster
-addon-iamserviceaccount-kube-system-fsx-csi-controller-sa
-
[出力] タブを選択します。[Role1] ARN が [出力 (1)] ページに表示されます。
-
次のコマンドを使用して、ドライバーのデプロイにパッチを適用し、前に作成したサービスアカウントを追加します。ARN を、メモした ARN に置き換えます。
をアカウントID に置き換えます。クラスターが AWS GovCloud (米国東部) または AWS GovCloud (米国東部) の AWS リージョン にある場合は、111122223333
arn:aws:
をarn:aws-us-gov:
に置き換えます。kubectl annotate serviceaccount -n kube-system
fsx-csi-controller-sa
\ eks.amazonaws.com/role-arn=arn:aws:iam::
--overwrite=true111122223333
:role/AmazonEKSFSxLustreCSIDriverFullAccess
出力例は次のとおりです。
serviceaccount/
fsx-csi-controller-sa
annotated
Kubernetes ストレージクラス、永続的なボリューム要求、およびサンプルアプリケーションをデプロイして、CSI ドライバーが動作していることを確認するには
この手順では、「FSx for Lustre Container Storage Interface (CSI) driver
-
クラスターのセキュリティグループを書き留めます。AWS Management Console の [ネットワーク] セクションまたは次の AWS CLI コマンドを使用して確認できます。
aws eks describe-cluster --name $cluster_name --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
-
ファイルの parameters セクションを編集します。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 は、すべてのアベイラビリティーゾーンでサポートされているわけではありません。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」の「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
が 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%
/ tmpfs64M
0
64M
0%
/dev tmpfs3.8G
0
3.8G
0%
/sys/fs/cgroup192.0.2.0
@tcp:/abcdef01
1.1T
7.8M
1.1T
1%
/data /dev/nvme0n1p180G
4.0G
77G
5%
/etc/hosts shm64M
0
64M
0%
/dev/shm tmpfs6.9G
12K
6.9G
1%
/run/secrets/kubernetes.io/serviceaccount tmpfs3.8G
0
3.8G
0%
/proc/acpi tmpfs3.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 ユーザーガイド」の「リソースをクリーンアップする」を参照してください。