Amazon EBS CSI ドライバー - Amazon EKS

英語の翻訳が提供されている場合で、内容が矛盾する場合には、英語版がオリジナルとして取り扱われます。翻訳は機械翻訳により提供されています。

Amazon EBS CSI ドライバー

Amazon EBS コンテナストレージインターフェイス (CSI) ドライバーは、Amazon EKS クラスターが永続的ボリュームの Amazon EBS ボリュームのライフサイクルを管理できるようにする CSI インターフェイスを提供します。

このトピックでは、Amazon EBS CSI ドライバーを Amazon EKS クラスターにデプロイし、動作することを確認する方法を示します。ドライバーのバージョン v 0.6.0 を使用することをお勧めします。

注記

このドライバは、Kubernetesバージョン1.14以降でのみサポートされています。 Amazon EKS クラスタとノードです。Fargate では、ドライバはサポートされていません。Amazon EBS CSI ドライバーのアルファ機能は、Amazon EKS クラスターではサポートされていません。このドライバーはベータリリースです。本番稼働用に Amazon EKS によって十分にテストされ、サポートされています。ドライバーのサポートは削除されませんが、詳細は変更される可能性があります。ドライバーのスキーマまたはセマンティクスが変更された場合は、次のバージョンへの移行手順が提供されます。

使用可能なパラメータの詳細と、ドライバーの機能を示す完全な例については、GitHub の Amazon EBS コンテナストレージインターフェイス (CSI) ドライバープロジェクトを参照してください。

Amazon EBS CSI ドライバーを Amazon EKS クラスターにデプロイするには

  1. 作成 IAM というポリシー Amazon_EBS_CSI_Driver ノードインスタンスプロファイルの Amazon EBS CSIドライバが AWS APIを代理で使用します。次の AWS CLI コマンドを使用して、AWS アカウントで IAM ポリシーを作成します。GitHub でポリシードキュメントを表示することもできます。

    1. GitHub からポリシードキュメントをダウンロードします。

      curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-ebs-csi-driver/v0.6.0/docs/example-iam-policy.json
    2. ポリシーを作成します。

      aws iam create-policy --policy-name Amazon_EBS_CSI_Driver \ --policy-document file://example-iam-policy.json

    返されるポリシー ARN を書き留めておきます。

  2. 取得する IAM ノードのロール名。次のコマンドを使用して、aws-auth configmap を出力します。

    kubectl -n kube-system describe configmap aws-auth

    出力:

    Name: aws-auth Namespace: kube-system Labels: <none> Annotations: <none> Data ==== mapRoles: ---- - groups: - system:bootstrappers - system:nodes rolearn: arn:aws:iam::<111122223333>:role/<eksctl-alb-nodegroup-ng-b1f603c5-NodeInstanceRole-GKNS581EASPU> username: system:node:{{EC2PrivateDNSName}} Events: <none>

    system:nodes グループが割り当てられている rolearn 値のロール名を記録します。前の出力例では、役割名は<eksctl-alb-nodegroup-ng-b1f603c5-NodeInstanceRole-GKNS581EASPU>です。クラスターの各ノードグループに 1 つの値が必要です。

  3. 新しい Amazon_EBS_CSI_Driver IAM ポリシーを各ノードに IAM 先ほど特定した役割を、以下のコマンドで、赤いテキストを自分のテキストに置き換えます。 AWS アカウント番号とノード IAM 役割名。

    aws iam attach-role-policy \ --policy-arn arn:aws:iam::<111122223333>:policy/Amazon_EBS_CSI_Driver \ --role-name <eksctl-alb-nodegroup-ng-b1f603c5-NodeInstanceRole-GKNS581EASPU>
  4. 次のコマンドを使用して Amazon EBS CSI ドライバーをデプロイします。

    注記

    このコマンドには、バージョン 1.14 以降が必要です。 kubectl. あなたの kubectl version を次のコマンドで実行します。kubectl バージョンをインストールまたはアップグレードするには、「設置 kubectl」を参照してください。

    kubectl version --client --short
    kubectl apply -k "github.com/kubernetes-sigs/aws-ebs-csi-driver/deploy/kubernetes/overlays/stable/?ref=master"

サンプルアプリケーションをデプロイし、CSI ドライバーが動作していることを確認するには

この手順では、 動的なボリューム・プロビジョニング 例を Amazon EBS CSI(コンテナ・ストレージ・インタフェース)ドライバ 動的にプロビジョニングされた Amazon EBS ボリューム。

  1. Amazon EBS コンテナストレージインターフェイス (CSI) ドライバー GitHub リポジトリをローカルシステムにクローンします。

    git clone https://github.com/kubernetes-sigs/aws-ebs-csi-driver.git
  2. dynamic-provisioning サンプルディレクトリに移動します。

    cd aws-ebs-csi-driver/examples/kubernetes/dynamic-provisioning/
  3. specs ディレクトリから、ebs-sc ストレージクラス、ebs-claim 永続ボリュームクレーム、および app サンプルアプリケーションをデプロイします。

    kubectl apply -f specs/
  4. ebs-sc ストレージクラスについて説明します。

    kubectl describe storageclass ebs-sc

    出力:

    Name: ebs-sc IsDefaultClass: No Annotations: kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"storage.k8s.io/v1","kind":"StorageClass","metadata":{"annotations":{},"name":"ebs-sc"},"provisioner":"ebs.csi.aws.com","volumeBindingMode":"WaitForFirstConsumer"} Provisioner: ebs.csi.aws.com Parameters: <none> AllowVolumeExpansion: <unset> MountOptions: <none> ReclaimPolicy: Delete VolumeBindingMode: WaitForFirstConsumer Events: <none>

    このストレージクラスは WaitForFirstConsumer ボリュームバインドモードを使用していることに注意してください。つまり、ポッドが永続的ボリュームのクレームを行うまで、ボリュームは動的にプロビジョニングされません。詳細については、Kubernetes ドキュメントの「ボリュームバインドモード」を参照してください。

  5. デフォルトの名前空間のポッドを監視し、app ポッドが準備されるまで待ちます。

    kubectl get pods --watch
  6. デフォルトの名前空間の永続的ボリュームを一覧表示します。default/ebs-claim クレームがある永続的なボリュームを探します。

    kubectl get pv

    出力:

    NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-37717cd6-d0dc-11e9-b17f-06fad4858a5a 4Gi RWO Delete Bound default/ebs-claim ebs-sc 30s
  7. 永続的ボリュームの詳細を表示します。

    kubectl describe pv <pvc-37717cd6-d0dc-11e9-b17f-06fad4858a5a>

    出力:

    Name: pvc-37717cd6-d0dc-11e9-b17f-06fad4858a5a Labels: <none> Annotations: pv.kubernetes.io/provisioned-by: ebs.csi.aws.com Finalizers: [kubernetes.io/pv-protection external-attacher/ebs-csi-aws-com] StorageClass: ebs-sc Status: Bound Claim: default/ebs-claim Reclaim Policy: Delete Access Modes: RWO VolumeMode: Filesystem Capacity: 4Gi Node Affinity: Required Terms: Term 0: topology.ebs.csi.aws.com/zone in [<regiona>] Message: Source: Type: CSI (a Container Storage Interface (CSI) volume source) Driver: ebs.csi.aws.com VolumeHandle: <vol-0d651e157c6d93445> ReadOnly: false VolumeAttributes: storage.kubernetes.io/csiProvisionerIdentity=1567792483192-8081-ebs.csi.aws.com Events: <none>

    Amazon EBS ボリューム ID は VolumeHandle として表示されます。

  8. ポッドがボリュームにデータを正常に書き込んでいることを確認します。

    kubectl exec -it app cat /data/out.txt

    出力:

    Wed Jul 8 13:52:09 UTC 2020 Wed Jul 8 13:52:14 UTC 2020 Wed Jul 8 13:52:19 UTC 2020 Wed Jul 8 13:52:24 UTC 2020 Wed Jul 8 13:52:29 UTC 2020 Wed Jul 8 13:52:34 UTC 2020
  9. 実験が終了したら、このサンプルアプリケーションのリソースを削除してクリーンアップします。

    kubectl delete -f specs/