平台与 AWS EKS 的集成及存储初始化配置。
默认的 efs-sc 文件存储类在挂载后可能不支持权限修改,可能导致 PostgreSQL、Jenkins 等部分应用无法正常运行。
AL2023 AMI 不支持 A1 系列实例,导致 EBS 块存储插件(Amazon EBS CSI Driver)无法正常部署。EBS CSI 驱动已支持 GA 多架构/ARM,因此限制在于 AMI/实例支持,而非驱动本身。如果需要使用 EBS 块存储类,请避免使用以下实例类型,建议使用 Graviton2/3 替代方案:
推荐替代方案:使用 m6g、c6g、r6g、t4g 等 Graviton2/3 实例系列,提供更佳性能及完整的 EBS CSI 驱动支持。
确保已安装并可用 kubectl 和 AWS CLI 工具。
若已创建 EKS 集群,则导入 Amazon EKS 集群;若未创建,则创建 AWS EKS 集群。
在 EKS 集群中部署 EFS 文件存储插件 Amazon EFS CSI Driver 和 EBS 块存储插件 Amazon EBS CSI Driver。
注意:使用 EFS 文件存储时,请在 EKS 所在地域创建文件存储,并记录 文件系统 ID。
进入 平台管理,点击左侧导航的 存储管理 > 存储类。
点击 创建存储类 旁的下拉菜单 > 从 YAML 创建。
在 YAML 文件中添加以下内容,根据需要创建默认存储类。默认文件存储类名称为 efs-sc,默认块存储类名称为 ebs-sc。
EFS 文件存储
注意:将 <File System ID> 替换为实际的 文件系统 ID,例如 fileSystemId: fs-05aef9e1edd309f2b。
EBS 块存储
点击 创建。
注意:若默认存储类不满足需求,可按上述步骤创建新的存储类并根据需要修改参数。详见 可用存储类参数配置。
在左侧导航点击 存储管理 > 存储类。
点击存储类名称为 efs-sc 或 ebs-sc 旁的三点按钮 > 更新项目。
根据需要选择 项目分配 方式,点击 更新,将存储类分配给项目。
EFS 文件存储可用参数
| 参数 | 可选值 | 默认值 | 可选 | 描述 |
|---|---|---|---|---|
| az | "" | 是 | 用于跨账户挂载。指定时,使用与 az 关联的挂载目标进行跨账户挂载;未指定时,随机选择挂载目标进行跨账户挂载。 | |
| basePath | 是 | 动态创建访问点时的路径。未指定时,访问点创建在文件系统根目录下。 | ||
| directoryPerms | 否 | 创建 访问点根目录 的目录权限。 | ||
| uid | 是 | 创建 访问点根目录 的 POSIX 用户 ID。 | ||
| gid | 是 | 创建 访问点根目录 的 POSIX 组 ID。 | ||
| gidRangeStart | 50000 | 是 | 创建 访问点根目录 时应用的 POSIX 组 ID 起始范围。若设置了 uid/gid,则不需要此参数。 | |
| gidRangeEnd | 7000000 | 是 | POSIX 组 ID 结束范围。若设置了 uid/gid,则不需要此参数。 | |
| subPathPattern | 是 | 构造动态创建访问点所在子路径的模板。可由固定字符串和有限变量组成,类似于 nfs-subdir-external-provisioner chart 中的 "subPathPattern" 变量。可选参数包括 .PVC.name、.PVC.namespace 和 .PV.name。 | ||
| ensureUniqueDirectory | true | 是 | 动态创建时使用。设置为 true 时,会在 subPathPattern 指定的模式后追加 UID,确保访问点不会意外指向同一目录。注意:仅当确定需要此行为时才设置为 false。 | |
| provisioningMode | efs-ap | 否 | EFS 卷类型,目前支持访问点。 | |
| fileSystemId | 否 | 创建访问点的文件系统 ID。 |
EBS 块存储可用参数
注意:不同卷类型的性能参数详见 Amazon EBS 卷类型。
| 参数 | 可选值 | 默认值 | 描述 |
|---|---|---|---|
| "allowAutoIOPSPerGBIncrease" | true, false | false | 设置为 "true" 时,当 iopsPerGB * <卷大小> 过低,无法满足 AWS 支持的 IOPS 范围时,CSI 驱动会自动增加卷的 IOPS,确保动态创建总是成功,即使用户指定的 PVC 容量或 iopsPerGB 过小,但可能导致卷的 IOPS 高于 iopsPerGB 所需,产生额外费用。 |
| "blockExpress" | true, false | false | 通过将 io2 卷的 IOPS 限制提升至 256000,创建 io2 Block Express 卷,但超过 64000 IOPS 的卷无法挂载到不支持 io2 Block Express 的实例。 |
| "blockSize" | 格式化底层文件系统时使用的块大小。仅适用于 Linux 节点且文件系统类型为 ext2、ext3、ext4 或 xfs。 | ||
| "bytesPerINode" | 格式化底层文件系统时每个 inode 的字节数。仅适用于 Linux 节点且文件系统类型为 ext2、ext3 或 ext4。 | ||
| "csi.storage.k8s.io/fstype" | xfs, ext2, ext3, ext4 | ext4 | 创建卷时格式化的文件系统类型,区分大小写。 |
| "encrypted" | true, false | false | 是否需要加密卷。 |
| "inodeSize" | 格式化底层文件系统时使用的 inode 大小。仅适用于 Linux 节点且文件系统类型为 ext2、ext3、ext4 或 xfs。inode 是文件系统中存储文件和目录元数据的数据结构。 | ||
| "iops" | 每秒 I/O 操作次数,适用于 IO1、IO2 和 GP3 卷。 | ||
| "iopsPerGB" | 每 GiB 每秒 I/O 操作次数,适用于 IO1、IO2 和 GP3 卷。 | ||
| "kmsKeyId" | 用于加密卷的密钥完整 ARN。未指定时,AWS 使用卷所在区域的默认 KMS 密钥,自动生成名为 /aws/ebs 的密钥。 | ||
| "numberOfINodes" | 格式化底层文件系统时指定的 inode 数量。仅适用于 Linux 节点且文件系统类型为 ext2、ext3 或 ext4。 | ||
| "throughput" | 125 | 吞吐量,单位 MiB/s。仅在指定 gp3 卷类型时有效。为空时默认为 125 MiB/s。详见 Amazon EBS 卷类型。 | |
| "type" | io1, io2, gp2, gp3, sc1, st1, standard, sbp1, sbg1 | gp3 | EBS 卷类型。 |