Cookie の設定を選択する

当社は、当社のサイトおよびサービスを提供するために必要な必須 Cookie および類似のツールを使用しています。当社は、パフォーマンス Cookie を使用して匿名の統計情報を収集することで、お客様が当社のサイトをどのように利用しているかを把握し、改善に役立てています。必須 Cookie は無効化できませんが、[カスタマイズ] または [拒否] をクリックしてパフォーマンス Cookie を拒否することはできます。

お客様が同意した場合、AWS および承認された第三者は、Cookie を使用して便利なサイト機能を提供したり、お客様の選択を記憶したり、関連する広告を含む関連コンテンツを表示したりします。すべての必須ではない Cookie を受け入れるか拒否するには、[受け入れる] または [拒否] をクリックしてください。より詳細な選択を行うには、[カスタマイズ] をクリックしてください。

ステートフルワークロードのサンプルを EKS Auto Mode にデプロイする

フォーカスモード
ステートフルワークロードのサンプルを EKS Auto Mode にデプロイする - Amazon EKS

このページの改善にご協力ください

このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。

このページの改善にご協力ください

このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。

このチュートリアルでは、EKS Auto Mode クラスターにステートフルアプリケーションのサンプルをデプロイする方法について説明します。このアプリケーションは永続ボリュームにタイムスタンプを書き込み、EBS Auto Mode の自動 EBS ボリュームプロビジョニングと永続化機能を示します。

前提条件

ステップ 1: 環境を設定する

  1. 環境変数を設定する:

    export CLUSTER_NAME=my-auto-cluster export AWS_REGION="us-west-2"
  2. kubeconfig を更新します:

    aws eks update-kubeconfig --name "${CLUSTER_NAME}"

ステップ 2: ストレージクラスを作成する

StorageClassは、EBS ボリュームを EKS Auto Mode でプロビジョニングする方法を定義します。

EKS Auto Mode では、お客様用の StorageClass は作成されません。EKS Auto Mode のストレージ機能を使用するには、ebs.csi.eks.amazonaws.com を参照する StorageClass を作成する必要があります。

  1. storage-class.yaml という名前のファイルを作成します:

    apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: auto-ebs-sc annotations: storageclass.kubernetes.io/is-default-class: "true" provisioner: ebs.csi.eks.amazonaws.com volumeBindingMode: WaitForFirstConsumer parameters: type: gp3 encrypted: "true"
  2. StorageClass を適用します。

    kubectl apply -f storage-class.yaml

主要コンポーネント:

  • provisioner: ebs.csi.eks.amazonaws.com - EKS Auto Mode を使用する

  • volumeBindingMode: WaitForFirstConsumer - ポッドが必要とするまでボリュームの作成を遅らせる

  • type: gp3 - EBS ボリュームタイプを指定する

  • encrypted: "true" - EBS はデフォルトの aws/ebs キーを使用して、このクラスで作成されたボリュームを暗号化します。これはオプションですが推奨されます。

  • storageclass.kubernetes.io/is-default-class: "true" – 永続ボリュームのクレームで別のボリュームクラスを指定しない限り、Kubernetes はデフォルトでこのストレージクラスを使用します。別のストレージコントローラーから移行する場合は、この値を設定するときに注意してください 。(オプション)

ステップ3: 永続的なボリューム要求を作成する

PVC はStorageClassからのストレージをリクエストします。

  1. pvc.yaml という名前のファイルを作成します:

    apiVersion: v1 kind: PersistentVolumeClaim metadata: name: auto-ebs-claim spec: accessModes: - ReadWriteOnce storageClassName: auto-ebs-sc resources: requests: storage: 8Gi
  2. SCP を適用します:

    kubectl apply -f pvc.yaml

主要コンポーネント:

  • accessModes: ReadWriteOnce - ボリュームは一度に 1 つのノードからマウントすることができます

  • storage: 8Gi - 8 GiB ボリュームをリクエストします

  • storageClassName: auto-ebs-sc - 作成したStorageClassを参照します

ステップ 4: アプリケーションのデプロイ

Deployment は、永続的ボリュームにタイムスタンプを書き込むコンテナを実行します。

  1. deployment.yaml という名前のファイルを作成します:

    apiVersion: apps/v1 kind: Deployment metadata: name: inflate-stateful spec: replicas: 1 selector: matchLabels: app: inflate-stateful template: metadata: labels: app: inflate-stateful spec: terminationGracePeriodSeconds: 0 nodeSelector: eks.amazonaws.com/compute-type: auto containers: - name: bash image: public.ecr.aws/docker/library/bash:4.4 command: ["/usr/local/bin/bash"] args: ["-c", "while true; do echo $(date -u) >> /data/out.txt; sleep 60; done"] resources: requests: cpu: "1" volumeMounts: - name: persistent-storage mountPath: /data volumes: - name: persistent-storage persistentVolumeClaim: claimName: auto-ebs-claim
  2. デプロイを適用します。

    kubectl apply -f deployment.yaml

主要コンポーネント:

  • ファイルにタイムスタンプを書き込むシンプルな bash コンテナ

  • PVC を /data にマウントします

  • 1 CPU コアをリクエストします

  • EKS マネージドノードのノードセレクタを使用します

ステップ 5: セットアップを検証する

  1. ポッドが稼働していることを確認します:

    kubectl get pods -l app=inflate-stateful
  2. PVC がバインドされていることを確認します:

    kubectl get pvc auto-ebs-claim
  3. EBS ボリュームを確認します:

    # Get the PV name PV_NAME=$(kubectl get pvc auto-ebs-claim -o jsonpath='{.spec.volumeName}') # Describe the EBS volume aws ec2 describe-volumes \ --filters Name=tag:CSIVolumeName,Values=${PV_NAME}
  4. データが書き込まれていることを確認します:

    kubectl exec "$(kubectl get pods -l app=inflate-stateful \ -o=jsonpath='{.items[0].metadata.name}')" -- \ cat /data/out.txt

ステップ 6: クリーンアップ

次のコマンドを実行して、このチュートリアルで作成したすべてのリソースを削除します。

# Delete all resources in one command kubectl delete deployment/inflate-stateful pvc/auto-ebs-claim storageclass/auto-ebs-sc

シーンの背後で起こっていること

  1. PVC はStorageClassからのストレージをリクエストします

  2. ポッドがスケジュールされている場合:

    1. EKS Auto Mode が EBS ボリュームをプロビジョニングします

    2. PersistentVolume を作成します

    3. ボリュームをノードにアタッチします。

  3. ポッドはボリュームをマウントし、タイムスタンプの書き込みを開始します

Snapshot Controller

EKS Auto Mode は、スナップショットコントローラーとも呼ばれる Kubernetes CSI Snapshotter と互換性があります。ただし、EKS Auto Mode にはスナップショットコントローラーがありません。スナップショットコントローラーのインストールと設定はお客様の責任となります。詳細については「CSI ボリュームのためにスナップショット機能を有効にする」を参照してください。

EKS Auto Mode のストレージ機能を参照する以下の VolumeSnapshotClass を確認してください。

apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotClass metadata: name: auto-ebs-vsclass driver: ebs.csi.eks.amazonaws.com deletionPolicy: Delete

Kubernetes CSI Snapshotter の詳細をご覧ください。

プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.