选择您的 Cookie 首选项

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

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

创建存储类

聚焦模式
创建存储类 - Amazon EKS

帮助改进此页面

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

帮助改进此页面

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

Amazon EKS 自动模式中的 StorageClass 定义了应用程序请求持久性存储时如何自动预置 Amazon EBS 卷。本页介绍如何创建和配置可与 Amazon EKS 自动模式配合使用的 StorageClass,从而预置 EBS 卷。

通过配置 StorageClass,您可以指定 EBS 卷的默认设置,包括卷类型、加密、IOPS 和其他存储参数。您还可以将 StorageClass 配置为使用 AWS KMS 密钥进行加密管理。

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

首先创建一个名为 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"

然后将存储类应用于到集群。

kubectl apply -f storage-class.yaml

关键组件:

  • provisioner: ebs.csi.eks.amazonaws.com – 使用 EKS 自动模式

  • volumeBindingMode: WaitForFirstConsumer – 将卷的创建延迟到容器组需要时

  • type: gp3 – 指定 EBS 卷类型

  • encrypted: "true" – EBS 将对使用该 StorageClass 创建的所有卷进行加密。EBS 将使用默认的 aws/ebs 密钥别名。有关更多信息,请参阅《Amazon EBS 用户指南》中的 How Amazon EBS encryption works。该值是可选的,但建议使用。

  • storageclass.kubernetes.io/is-default-class: "true" – 默认情况下 Kubernetes 将使用此存储类,除非您在持久性卷声明中指定了其他卷类。该值为可选项。如果要从其他存储控制器迁移,请谨慎设置此值。

使用自主管理型 KMS 密钥加密 EBS 卷

要使用自主管理型 KMS 密钥加密由 EKS 自动模式自动预置的 EBS 卷,您需要完成以下操作:

  1. 创建自主管理型 KMS 密钥。

  2. 创建一个允许访问该 KMS 密钥的新策略。

  3. 将此策略附加到 EKS 集群角色。

    • 使用 AWS 控制台查找 EKS 集群角色的 ARN。角色信息将在概述部分中显示。有关更多信息,请参阅 Amazon EKS 集群 IAM 角色

  4. 更新 StorageClass 以在 parameters.kmsKeyId 字段中引用该 KMS 密钥 ID。

自主管理型 KMS IAM 策略示例

更新以下策略中的以下值:

  • <account-id> – AWS 账户 ID,例如 111122223333

  • <aws-region> – 集群所在的 AWS 区域,例如 us-west-2

{ "Version": "2012-10-17", "Id": "key-auto-policy-3", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<account-id>:root" }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow access through EBS for all principals in the account that are authorized to use EBS", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:CallerAccount": "<account-id>", "kms:ViaService": "ec2.<aws-region>.amazonaws.com" } } } ] }

自主管理型 KMS StorageClass 示例

parameters: type: gp3 encrypted: "true" kmsKeyId: <custom-key-arn>

StorageClass 参数参考

有关 Kubernetes StorageClass 资源的一般信息,请参阅 Kubernetes 文档中的存储类

StorageClass 资源的 parameters 部分特定于 AWS。请使用下表来查看可用的选项。

参数 默认值 描述

"csi.storage.k8s.io/fstype"

xfs、ext2、ext3、ext4

ext4

将在创建卷时进行格式化的文件系统类型。此参数区分大小写!

"type"

io1、io2、gp2、gp3、sc1、st1、标准、sbp1、sbg1

gp3

EBS 卷类型。

"iopsPerGB"

每 GiB 每秒 I/O 读写操作次数。可以为 IO1、IO2 和 GP3 卷指定。

"allowAutoIOPSPerGBIncrease"

true,false

false

如果为 "true",CSI 驱动程序将在 iopsPerGB * <volume size> 太小而无法达到 AWS 支持的 IOPS 范围时增加卷的 IOPS。这可确保动态预置始终会成功,即使用户指定的 PVC 容量或 iopsPerGB 值太小。不过这可能会带来额外的成本,因为此类卷的 IOPS 高于 iopsPerGB 中请求的值。

"iops"

每秒 I/O 读写操作次数。可以为 IO1、IO2 和 GP3 卷指定。

"throughput"

125

吞吐量以 MiB/s 为单位。仅在指定 gp3 卷类型时有效。

"encrypted"

true,false

false

是否应对卷进行加密。有效值为“true”或“false”。

"blockExpress"

true,false

false

允许创建 io2 Block Express 卷。

"kmsKeyId"

加密卷时要使用的密钥的完整 ARN。如果未指定,AWS 将使用该卷所在区域的默认 KMS 密钥。这将是一个自动生成的密钥,名为 /aws/ebs(如果未更改)。

"blockSize"

格式化底层文件系统时要使用的块大小。仅支持 linux 节点和文件系统类型 ext2ext3ext4xfs

"inodeSize"

格式化底层文件系统时要使用的索引节点大小。仅支持 linux 节点和文件系统类型 ext2ext3ext4xfs

"bytesPerInode"

格式化底层文件系统时要使用的 bytes-per-inode。仅支持 linux 节点和文件系统类型 ext2ext3ext4

"numberOfInodes"

格式化底层文件系统时要使用的 number-of-inodes。仅支持 linux 节点和文件系统类型 ext2ext3ext4

"ext4BigAlloc"

true,false

false

通过启用 bigalloc 格式化选项,将 ext4 文件系统更改为使用集群块分配。警告:对于节点的 Linux 内核,bigalloc 可能并非完全受支持。

"ext4ClusterSize"

启用 bigalloc 功能后格式化 ext4 文件系统时要使用的集群大小。注意:ext4BigAlloc 参数必须设置为 true。

有关更多信息,请参阅 GitHub 上的 AWS EBS CSI Driver

注意事项

EKS 自动模式的块存储功能与 EBS CSI 驱动程序不同。

  • 静态预置

    • 要将外部创建的 EBS 卷与 EKS 自动模式结合使用,需要手动添加键为 eks:eks-cluster-name,值为集群名称的 AWS 标签。

  • 节点启动污点

    • 在存储容量准备就绪之前,不能使用节点启动污点功能来阻止容器组调度

  • 动态预置卷上的自定义标签

    • 不能使用 extra-tag CLI 标志在动态预置 EBS 卷上配置自定义标签

    • 可以使用 StorageClass 标记功能来添加自定义标签。EKS 自动模式将为关联的 AWS 资源添加标签。您需要更新自定义标签的集群 IAM 角色。有关更多信息,请参阅 EKS 自动模式资源的自定义 AWS 标签

  • EBS 详细性能指标

    • 您无法访问 Prometheus 指标来了解 EBS 的详细性能

安装 CSI 快照控制器附加组件

EKS 自动模式与 CSI 快照控制器 Amazon EKS 附加组件兼容。

AWS 建议将此附加组件配置为在内置的 system 节点池上运行。

有关更多信息,请参阅:

在系统节点池中安装快照控制器

  1. 在 AWS 控制台中打开 EKS 集群

  2. 附加组件选项卡中,选择获取更多附加组件

  3. 选择 CSI 快照控制器,然后选择下一步

  4. 配置选定附加组件的设置页面上,选择可选配置设置以查看附加组件配置架构

    1. 插入以下 yaml 以将快照控制器关联到 system 节点池。快照控制器包含对 CriticalAddonsOnly 污点的容忍度。

      { "nodeSelector": { "karpenter.sh/nodepool": "system" } }
    2. 选择下一步

  5. 检查附加组件配置,然后选择创建

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。