选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

将示例有状态工作负载部署到 EKS 自动模式

聚焦模式
将示例有状态工作负载部署到 EKS 自动模式 - Amazon EKS

帮助改进此页面

要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。

帮助改进此页面

要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。

本教程将演示向 EKS 自动模式集群部署示例有状态应用程序的过程。该应用程序会将时间戳写入持久性卷,并演示 EKS 自动模式的自动 EBS 卷预置和持久性功能。

先决条件

  • 一个 EKS 自动模式集群

  • 以恰当的权限配置了 AWS CLI

  • 安装并配置了 kubectl

第 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 定义了 EKS 自动模式将如何预置 EBS 卷。

EKS 自动模式不会为您创建 StorageClass。您必须创建引用 ebs---csi---eks.amazonaws.com.rproxy.goskope.comStorageClass,才能使用 EKS 自动模式的存储功能。

  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 自动模式

  • 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. 应用 PVC:

    kubectl apply -f pvc.yaml

关键组件:

  • accessModes: ReadWriteOnce – 一次只能由一个节点挂载卷

  • storage: 8Gi – 请求一个 8 GiB 卷

  • storageClassName: auto-ebs-sc – 引用我们创建的 StorageClass

第 4 步:部署应用程序

部署会运行一个将时间戳写入持久性卷的容器。

  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 自动模式会预置一个 EBS 卷

    2. 创建一个持久性卷

    3. 将该卷挂载到节点

  3. 容器组会挂载该卷并开始写入时间戳

快照控制器

EKS 自动模式与 Kubernetes CSI Snapshotter(也称为快照控制器)兼容。但是,Amazon EKS 自动模式不包括快照控制器。您负责安装和配置快照控制器。有关更多信息,请参阅 为 CSI 卷启用快照功能

检查以下引用 EKS 自动模式存储功能的 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. 或其附属公司。保留所有权利。