Amazon Web Services ブログ

Amazon EKS アドオンで Amazon EBS CSI ドライバーが一般利用可能になりました

この記事は Amazon EBS CSI driver is now generally available in Amazon EKS add-ons (記事公開日: 2022 年 3 月 31 日) を翻訳したものです。

イントロダクション

ワークロードにオプションの永続ストレージを提供するために、Kubernetes はボリュームのライフサイクルオペレーションを実装し、これらのオペレーションで使用するさまざまなタイプのストレージをサポートしています。現在、ストレージプロバイダー固有のコードは、in-tree と呼ばれる Kubernetes プロジェクトのソースコードに保持されています。このコードはメンテナンスとリリースが複雑であり、in-tree のコードの一部として Kubernetes のリリースサイクルに関連付けられています。

ストレージ実装のライフサイクルを Kubernetes プロジェクト自体から切り離すために、Container Storage Interface (CSI) が作成されました。これは、コンテナベースのアプリケーションにストレージ固有のソリューションを実装するための標準仕様であり、さまざまなブロックストレージやファイルストレージシステムを Kubernetes などのコンテナオーケストレーションシステム上のワークロードに公開します。Kubernetes は、当初の in-tree ストレージプラグインシステムから、CSI モデルへの移行を進めています。この移行に備え、Kubernetes 1.14 では CSI Migration 機能が導入されました。

Amazon Elastic Kubernetes Service (EKS)Amazon Elastic Block Store (EBS) CSI ドライバーのサポートは、2019 年 9 月に発表され、それ以来広く採用されています。 この CSI ドライバーを使用すると、コンテナオーケストレーター (Kubernetes など) が Amazon EBS ボリュームのライフサイクルを管理できます。Amazon EKS で使用する場合、このドライバーをクラスターにインストールすることで、ストレージリソースを指定することができます。Amazon EBS の in-tree プラグインの利用から Amazon EBS CSI ドライバーへの移行を容易にするために、AWS 固有の機能である CSIMigrationAWS が導入されました。アップストリームの Kubernetes v1.23 では、この機能がデフォルトで有効になりました。これには、Amazon EBS CSI ドライバーが Kubernetes クラスターにインストールされていることが必要です。

Amazon EKS アドオンは、Amazon EKS クラスター向けの厳選されたアドオンセットのインストールと管理を提供します。2021 年 12 月、AWS は CSIMigrationAWS の準備のため、Amazon EBS CSI EKS アドオンのプレビューを導入しました。このアドオンは、Amazon EBS CSI ドライバーのインストール、管理、およびパッチ適用を簡単にします。本日、Amazon EBS CSI EKS アドオンの一般提供開始をお知らせします。このリリースには、Linux でのボリュームサイズ変更とスナップショット、サイズ変更なしでのスナップショットを含む Windows のサポート、ARM64 のサポート、AWS 管理 IAM ポリシーなどの追加機能が含まれています。

Amazon EBS CSI ドライバーは、Amazon EKS コンソール、AWS コマンドラインインターフェース (CLI)、Amazon EKS API によって、直接インストール、管理、更新ができるようになりました。Amazon EKS API で利用可能なアドオンと互換性のあるバージョンを確認し、クラスターで実行したいアドオンのバージョンを選択し、アドオンが実行時に使用する IAM ロールなどの主要な設定を構成することができます。

詳細と開始方法については、Amazon EKS アドオンのドキュメントを参照してください。

このブログ記事の残りの部分では、CSI と Kubernetes で進行中の CSI Migration プロジェクトの背景について説明します。次に、Amazon EBS CSI EKS アドオンを作成し、Kubernetes ワークロードのコンテキストでアドオンを使用する方法を示します。

Container Storage Interface と Kubernetes

Kubernetes は現在、Amazon Elastic Block Store (EBS) を in-tree の kubernetes.io/aws-ebs プラグインでサポートしていますが、このプラグインは Kubernetes 1.17 からは非推奨となっています。ebs.csi.aws.com プロビジョナーを使用して、Amazon EBS CSI ドライバーに移行することをお勧めします。AWS は、Kubernetes のボリュームオペレーションとそれぞれのストレージサービスをシームレスに統合するために、Amazon EBS および Amazon Elastic File System (EFS) や FSx for Lustre 用のオープンソース CSI ドライバーをメンテナンスしています。これらの CSI ドライバーは、CSI インタフェースを実装することにより、アップストリームプロジェクトとは別にメンテナンスされ、独立したメンテナンスや機能開発が可能となっています。

Kubernetes の CSI Migration

多くのワークロードはすでに in-tree ストレージプロバイダーを使用するように指定されており、新しい CSI モデルへの移行はこれらのワークロードに変更を必要とします。そのため in-tree プラグインから新しい CSI モデルへの移行では、API の互換性という問題が最初に発生しました。これを解決するために、CSI Migration の取り組みが導入されました。これは、in-tree の API を CSI API に 変換する Kubernetes の機能で、これらの API を時間の経過とともに CSI ドライバーに委譲できるようにするものです。CSIMigration フィーチャーゲートは、Kubernetes 1.17 からベータとして提供されており、デフォルトで有効になっています。これにより、CSIMigrationAWS などのプロバイダ固有のマイグレーションフィーチャーゲートを使用して、Kubernetes のすべての in-tree ボリュームプラグインをソリューション固有の CSI ドライバーに置き換えることができます。CSIMigrationAWS フィーチャーゲートは、アップストリーム Kubernetes および Amazon EKS Kubernetes バージョン 1.23 でデフォルトで有効化される予定です。

実際には、CSI Migration は、アプリケーションワークロードが in-tree の kubernetes.io/aws-ebs プロビジョナーを使用している場合でも、引き続きそれを指定することができ、そのオペレーションが自動的に Amazon EBS CSI ドライバーにルーティングされることを意味します。このマイグレーション機能は、ワークロードを移行して CSI ドライバーをネイティブに指定する前の一時的な対応として使用するのが最適です。なぜなら、CSI に実装された新機能が in-tree スタイルの仕様では利用できないためです。例えば、in-tree プラグインから CSI ドライバーに移行された PersistentVolume (PV) では、CSI ドライバーソリューションの新機能や属性を指定できません。そのため、ブログ記事 “Migrating Amazon EKS clusters from gp2 to gp3 EBS volumes” (日本語訳: “Amazon EKS クラスターの EBS ボリュームを gp2 から gp3 に移行する“) で説明したように、新しい CSI ベースの StorageClass (SC) を定義し、ワークロードを明示的に移行することをお勧めします。

Amazon EKS アドオンの作成

Amazon EKS アドオンの使用を開始するには、サポートされているクラスターで 1 つ以上のアドオンを作成することでオプトインする必要があります。この実装は特定の Kubernetes の機能と結びついているため、Kubernetes 1.18 以降でサポートされます。これは、Kubernetes 1.18 の Server-side Apply の機能を使用して、アドオンの更新機能を実装しているためです。この Kubernetes 機能は、Kubernetes api-server のコンテキストで、設定フィールドの所有権の追跡と、新しい設定マージアルゴリズムを組み合わせたものです。

Amazon EKS アドオンのすべての操作は、Amazon EKS でサポートされているインターフェイスでサポートされます。これには、AWS コンソール、AWS CLI、および eksctl ユーティリティが含まれます。また、eksctl での設定ファイルの利用、AWS CloudFormation、Terraform の AWS プロバイダー、AWS Cloud Development Kit (CDK) など、サポートされている Infrastructure as Code ツールを使用することもできます。これは、既存の EKS クラスターに対して、または新しいクラスターを作成するときに実行できます。

Amazon EBS CSI ドライバー EKS アドオンの操作

ここからは、Amazon EBS CSI ドライバー EKS アドオンの操作に入ります。アドオンの作成と管理は、お好みのインターフェースで行うことができます。後ほど紹介するワークフローの例では、eksctl、AWS CLI、Terraform を使用します。このウォークスルーには、Amazon EKS クラスターが必要です。まだプロビジョニングしていない場合は、eksctl を使用してクラスターを作成してください。

eksctl の最新リリースをインストールする手順については、Amazon EKS ユーザーガイドの eksctl のインストールを参照してください。

Amazon EBS CSI アドオンは、aws-ebs-csi-driver と呼ばれます。次のコマンドは、アドオンが利用可能なすべての Amazon EKS クラスターバージョンとプラットフォームバージョンを一覧表示します。

$ aws eks describe-addon-versions --addon-name aws-ebs-csi-driver

--kubernetes-version オプションを使用して、特定の Kubernetes バージョンに対応したアドオンのバージョンを確認することができます。例えば、次のコマンドは、Kubernetes バージョン 1.21 を実行している Amazon EKS クラスターと互換性のあるバージョンを返します。

$ aws eks describe-addon-versions --addon-name aws-ebs-csi-driver --kubernetes-version 1.21
{
    "addons": [
        {
            "addonName": "aws-ebs-csi-driver",
            "type": "storage",
            "addonVersions": [
                {
                    "addonVersion": "v1.5.2-eksbuild.1",
                    "architecture": [
                        "amd64",
                        "arm64" 
                    ],
                    "compatibilities": [
                        {
                            "clusterVersion": "1.21",
                            "platformVersions": [
                                "eks.5+"
                            ],
                            "defaultVersion": true
                        }
                    ]
                },
                {
                    "addonVersion": "v1.4.0-eksbuild.preview",
                    "architecture": [
                        "amd64"
                    ],
                    "compatibilities": [
                        {
                            "clusterVersion": "1.21",
                            "platformVersions": [
                                "eks.3+"
                            ],
                            "defaultVersion": false
                        }
                    ]
                }               
            ]
        }
    ]
}

: この出力では、EKS バージョン 1.21 用の aws-ebs-csi-driver アドオンのバージョン v1.5.2-eksbuild.1 を使用するには EKS プラットフォームバージョン eks.5 以降が必要であるのに対し、バージョン v1.4.0-eksbuild.preview では EKS プラットフォームバージョン eks.3 以降を必要とすることが示されています。

Amazon EBS CSI ドライバーのスナップショット機能を使用するには、アドオンをインストールする前に external-snapshotter をインストールする必要があります。external-snapshotter は Kubernetes CSI Special Interest Group (SIG) により提供されており、以下のコンポーネントを順にインストールする必要があります。

EBS CSI ドライバーには、external-snapshotter と対話するための csi-snapshotter サイドカーコンテナが含まれています。詳細については、アップストリームの GitHub リポジトリを参照してください。

EBS CSI アドオンには、Amazon EBS ボリューム関連の IAM アクセス許可が必要です。アドオンで最小限の IAM 権限を使用するために、IAM Roles for Service Accounts (IRSA) を使用します。詳細については、Amazon EKS ユーザーガイドの “Configuring the Amazon EBS CSI plugin to use IAM roles for service accounts” を参照してください。

: IRSA は EBS CSI アドオンにのみ使用され、external-snapshotter には使用されません。

サンプルの IAM ポリシードキュメントをダウンロードするか、このブログ記事でも使用している AWS 管理 IAM ポリシー AmazonEBSCSIDriverPolicy を使用できます。

以下の eksctl の設定 YAML を使用して、AWS 管理 IAM ポリシーの ARN を使用してアドオン付きの新しいクラスターを作成します。IRSA をサポートするために withOIDCtrue に設定されていることに注意してください。アドオンはデータプレーンにインストールされるため、マネージド型ノードグループも作成します。今回のデモクラスターでは、デフォルトの Amazon Linux 2 ノードを使用しています。

以下の例では、eu-west-1 リージョンにクラスターを作成します。今後の CLI コマンドを短縮するために、以下の環境変数を設定します。

$ export AWS_REGION=eu-west-1; export AWS_DEFAULT_REGION=eu-west-1
$ cat config.yaml
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
  name: ebs-demo-cluster
  region: eu-west-1
  version: "1.21"
 
iam:
  withOIDC: true
 
addons:
- name: aws-ebs-csi-driver
  version: v1.5.2-eksbuild.1
  attachPolicyARNs:
  - arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy
 
managedNodeGroups:
  - name: managed-ng-1
    instanceType: t2.large
    privateNetworking: true
    minSize: 2
    maxSize: 3
$ eksctl create cluster -f config.yaml
$ eksctl get cluster
2021-12-14 18:00:59 [ℹ]  eksctl version 0.76.0
2021-12-14 18:00:59 [ℹ]  using region eu-west-1
NAME                    REGION          EKSCTL CREATED
ebs-demo-cluster        eu-west-1       True

eksctl を使用してアドオンが ACTIVE 状態であることを確認できます。

$ eksctl get addon --name aws-ebs-csi-driver --cluster ebs-demo-cluster
…
NAME                    VERSION                 STATUS  ISSUES  IAMROLE
                                UPDATE AVAILABLE
aws-ebs-csi-driver      v1.5.2-eksbuild.1 ACTIVE  0       arn:aws:iam::<accountId>:role/eksctl-ebs-demo-cluster-addon-aws-ebs-csi-dr-Role1-TX3SPPGLTRLZ

あるいは、Amazon EKS API を使用してアドオンが ACTIVE 状態であるかを確認することもできます。

$ aws eks describe-addon --cluster-name ebs-demo-cluster --addon-name aws-ebs-csi-driver
{
    "addon": {
        "addonName": "aws-ebs-csi-driver",
        "clusterName": "ebs-demo-cluster",
        "status": "ACTIVE",
        "addonVersion": "v1.5.2-eksbuild.1",
        "health": {
            "issues": []
        },
        "addonArn": "arn:aws:eks:eu-west-1:<accountId>:addon/ebs-demo-cluster/aws-ebs-csi-driver/18bedd09-c3e8-8a5f-fffa-a6a32fbd108c",
        "createdAt": 1639504382.132,
        "modifiedAt": 1639504449.617,
        "serviceAccountRoleArn": "arn:aws:iam::<accountId>:role/eksctl-ebs-demo-cluster-addon-aws-ebs-csi-dr-Role1-TX3SPPGLTRLZ",
        "tags": {}
    }

eksctl は、現在の Kubernetes コンテキストを新しく作成されたクラスターに設定します。

$ kubectl config current-context
juw@ebs-demo-cluster.eu-west-1.eksctl.io

EBS CSI アドオンの前提条件のプラットフォームバージョン eks.5+ に一致する既存のクラスターについては、eksctl create addon コマンドを使用して、AWS 管理 IAM ポリシーを指定して、アドオンを作成できます。対応する IRSA のセットアップと ServiceAccount のアノテーションが自動的に追加されます。

OIDC をまだ有効にしていない場合は、有効にする必要があります。

$ eksctl utils associate-iam-oidc-provider --cluster <existing cluster> --approve

そして、アドオンを作成します。

$ eksctl create addon --name aws-ebs-csi-driver --version v1.5.2-eksbuild.1 --attach-policy-arn arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy --cluster <existing cluster>

多くのお客様が Terraform を利用してインフラストラクチャーを構築しています。Terraform の AWS プロバイダーには aws_eks_addon リソースが含まれており、EKS アドオンも作成することができます。以下はコードスニペットです。

$ cat eks-add-on-ebs-csi.tf
...
data "aws_eks_cluster" "eks" {
  name = local.name
}

data "aws_iam_policy" "ebs_csi_policy" {
  arn = "arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy"
}

module "irsa-ebs-csi" {
  source  = "terraform-aws-modules/iam/aws//modules/iam-assumable-role-with-oidc"
  version = "4.7.0"

  create_role                   = true
  role_name                     = "AmazonEKSTFEBSCSIRole-${local.name}"
  provider_url                  = replace(data.aws_eks_cluster.eks.identity.0.oidc.0.issuer, "https://", "")
  role_policy_arns              = [data.aws_iam_policy.ebs_csi_policy.arn]
  oidc_fully_qualified_subjects = ["system:serviceaccount:kube-system:ebs-csi-controller-sa"]
}

resource "aws_eks_addon" "ebs-csi" {
  cluster_name             = local.name
  addon_name               = "aws-ebs-csi-driver"
  addon_version            = "v1.5.2-eksbuild.1"
  service_account_role_arn = module.irsa-ebs-csi.iam_role_arn
  tags = {
    "eks_addon" = "ebs-csi"
    "terraform" = "true"
  }
}

Amazon EBS CSI ドライバーは kube-system Namespace で実行され、2 つのコンポーネントで構成されています。ebs-csi-controller は Deployment としてデプロイされ、ebs-csi-node は DaemonSet としてロールアウトされます。コンポーネントは、以下の kubectl コマンドの出力に表示されています。なお、デモクラスターには Windows ノードはありませんが、DaemonSet がインストールされており、後から Windows ノードが追加された場合に対応できるようになっています。詳細な説明については、EBS CSI の公式ドキュメントを参照してください。

$ kubectl get deploy,ds -l=app.kubernetes.io/name=aws-ebs-csi-driver -n kube-system
NAME                                 READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/ebs-csi-controller   2/2     2            2           5m30s
 
NAME                                  DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR            AGE
daemonset.apps/ebs-csi-node           2         2         2       2            2           kubernetes.io/os=linux   5m31s
daemonset.apps/ebs-csi-node-windows   0         0         0       0            0           kubernetes.io/os=windows 5m31s
$ kubectl get po -n kube-system -l 'app in (ebs-csi-controller,ebs-csi-node)'
NAME                                  READY   STATUS    RESTARTS   AGE
ebs-csi-controller-67c885fcc7-n6ll6   6/6     Running   0          6m2s
ebs-csi-controller-67c885fcc7-zvcct   6/6     Running   0          6m32s
ebs-csi-node-7b7b9                    3/3     Running   0          6m32s
ebs-csi-node-nszsg                    3/3     Running   0          6m32s

それぞれの ebs-csi-controller の Pod には、ここでリストされているように 6 つのサイドカーコンテナが含まれています (実際の Pod 名は、環境によって異なります) 。

$ kubectl get -n kube-system pod/ebs-csi-controller-67c885fcc7-n6ll6 -o jsonpath='{.spec.containers[*].name}'
ebs-plugin csi-provisioner csi-attacher csi-snapshotter csi-resizer liveness-probe

: csi-snapshotter および csi-resizer サイドカーとそれぞれの機能は、Amazon EBS CSI アドオンのプレビューの一部としてはサポートされていませんでしたが、一般提供 (GA) バージョンでは導入されました。

デフォルトでは、すべてのノードで CSI ベースの Amazon EBS ボリュームを使用することが可能です。

$ kubectl get csinodes
NAME                                            DRIVERS   AGE
ip-192-168-115-162.eu-west-1.compute.internal   1         41m
ip-192-168-137-52.eu-west-1.compute.internal    1         41m

IRSA は、ServiceAccount (SA) ebs-csi-controller-sa を使用し、CSI コントローラーコンポーネントによってのみ使用されます。SA は、eksctl または Terraform のいずれかで作成された IAM ロールが自動的にアノテーションされます。ロール名は自動生成されるため、クラスターによって異なります。

$ kubectl get sa -n kube-system ebs-csi-controller-sa -o yaml | head -5
apiVersion: v1
kind: ServiceAccount
metadata:
  annotations:
    eks.amazonaws.com/role-arn: arn:aws:iam::<accountId>:role/eksctl-ebs-demo-cluster-addon-aws-ebs-csi-dr-Role1-Q269IPNF9XDB

現在、すべての Amazon EKS クラスターには、in-tree プラグインベースの StorageClass (SC) が付属しています。

$ kubectl get sc
NAME            PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
gp2 (default)   kubernetes.io/aws-ebs   Delete          WaitForFirstConsumer   false                  62m

外部 EBS CSI ドライバーを使用するには、それに基づいた新しい StorageClass を作成する必要があります。

$ cat gp3-sc.yaml
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: gp3
allowVolumeExpansion: true
provisioner: ebs.csi.aws.com
volumeBindingMode: WaitForFirstConsumer
parameters:
  type: gp3

: GA 版ではボリュームサイズ変更機能をサポートしているため、allowVolumeExpansion プロパティを true に設定しています。

$ kubectl apply -f gp3-sc.yaml
storageclass.storage.k8s.io/gp3 created

プロビジョナーの列は、この StorageClass が Amazon EBS CSI アドオンドライバーに基づいていることを示しています。

$ kubectl get sc gp3
NAME   PROVISIONER       RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
gp3    ebs.csi.aws.com   Delete          WaitForFirstConsumer   true                   6s

: in-tree プロビジョナーベースの StorageClass gp2 は引き続き使用可能であり、EBS CSI ベースの StorageClass gp3 と共存可能です。Amazon EKS アドオン Amazon EBS CSI を使用する場合、in-tree から外部 CSI プロビジョナーへの移行は発生しません。

続いて、PersistentVolumeClaim (PVC) を作成します。この PVC は、gp3 ベースの StorageClass の動的プロビジョニング機能を示すために、Pod によって使用されます。

$ cat pvc-csi.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-csi
spec:
  accessModes:
  - ReadWriteOnce
  storageClassName: gp3
  resources:
    requests:
      storage: 1Gi
$ kubectl apply -f pvc-csi.yaml
persistentvolumeclaim/pvc-csi created
$ kubectl get pvc pvc-csi
NAME      STATUS    VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
pvc-csi   Pending                                      gp3            6s

StorageClass gp3 では VolumeBindingModeWaitForFirstConsumer のため、PVC はまだ Pending 状態です。この属性により、PV と Pod が同じ AWS アベイラビリティゾーン (AZ) にプロビジョニングされるようになります。PV を作成しバインドするためにはアプリケーション (Pod) を作成する必要があります。

$ cat pod-csi.yaml
apiVersion: v1
kind: Pod
metadata:
  name: app-gp3
spec:
  containers:
  - name: app
    image: centos
    command: ["/bin/sh"]
    args: ["-c", "while true; do echo $(date -u) >> /data/out.txt; sleep 5; done"]
    volumeMounts:
    - name: persistent-storage
      mountPath: /data
  volumes:
  - name: persistent-storage
    persistentVolumeClaim:
      claimName: pvc-csi

Pod が実行されると (数秒かかることもあります) 、PVC は Bound ステータスになり、PV がプロビジョニングされます。

$ kubectl apply -f pod-csi.yaml
pod/app-gp3 created
$ kubectl get pod
NAME      READY   STATUS    RESTARTS   AGE
app-gp3   1/1     Running   0          45s
$ kubectl get pvc
NAME      STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
pvc-csi   Bound    pvc-19b44f3a-b4f8-4376-8089-60e9eada0d24   1Gi        RWO            gp3            11m
$ kubectl get pv pvc-19b44f3a-b4f8-4376-8089-60e9eada0d24
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM             STORAGECLASS   REASON   AGE
pvc-19b44f3a-b4f8-4376-8089-60e9eada0d24   1Gi        RWO            Delete           Bound    default/pvc-csi   gp3                     52s

PV の EBS ボリュームは、AZ にバインドされていることに注意してください。後で Pod を停止して再起動する場合は、必ず YAML 仕様に nodeSelector または nodeAffinity を追加して、EBS ボリュームと同じ AZ に属するノードで Pod が実行されるようにしてください。

サイズ変更、スナップショット取得などのその他の例は、Amazon EBS CSI ドライバーの GitHub リポジトリで確認することができます。

クリーンアップ

Pod と PVC を削除します。これを行うと PV も削除されます。

$ kubectl delete pod app-gp3
pod "app-gp3" deleted
$ kubectl delete pvc pvc-csi
persistentvolumeclaim "pvc-csi" deleted
$ kubectl get pv
No resources found

続いて、Amazon EBS CSI アドオンを削除します。

$ eksctl delete addon --name aws-ebs-csi-driver --cluster ebs-demo-cluster

最後に、ebs-demo-cluster クラスターを削除します。

$ eksctl delete cluster ebs-demo-cluster

まとめ

このブログ記事では、Amazon EKS アドオンによって、Amazon EBS CSI ドライバーを使用して、Kubernetes での永続ストレージのニーズに合わせてボリュームをプロビジョニングおよび管理する方法を簡素化できることを説明しました。Amazon EBS CSI ドライバーの使用に関する詳細については、オープンソースプロジェクトAmazon EKS ユーザーガイドを参照してください。

これまで説明してきたように、今すぐ Amazon EBS CSI ドライバーに移行し、ストレージの仕様に ebs.csi.aws.com プロビジョナーを指定することをお勧めします。Amazon EKS Kubernetes 1.23 では、CSI Migration がデフォルトで有効になり、指定方法にかかわらずクラスターには EBS CSI ドライバーをインストールする必要があります。新しい CSI ベースの StorageClass (SC) の定義とワークロードの明示的な移行の詳細については、ブログ記事 “Migrating Amazon EKS clusters from gp2 to gp3 EBS volumes” (日本語訳: “Amazon EKS クラスターの EBS ボリュームを gp2 から gp3 に移行する“) を参照してください。

Amazon EKS は、マネージドコントロールプレーン、マネージド型ノードグループによるデータプレーン管理のオプション、Amazon VPC Container Network Interface (CNI) 、CoreDNS、kube-proxy、そして今回の Amazon EBS CSI ドライバーといった重要なコンポーネントのクラスターアドオンを提供します。今後数ヶ月以内に、追加の運用ソフトウェアによって Amazon EKS クラスターの運用を簡単にするために、さらに多くのアドオンをリリースする予定です。

今後の機能を確認したり、機能を提案したりするには、GitHub の AWS Containers Roadmap を参照してください。質問や提案がある場合は、コメントを残してください。

翻訳はプロフェッショナルサービスの杉田が担当しました。原文はこちらです。