平台与 AWS EKS 的集成及存储初始化配置。
默认的 efs-sc 文件存储类在挂载后可能不支持权限修改,可能导致 PostgreSQL、Jenkins 等部分应用无法正常运行。
AL2023 AMI 不支持 A1 系列实例,导致 EBS 块存储插件(Amazon EBS CSI Driver)无法正常部署。EBS CSI 驱动已支持 GA 多架构/ARM,因此限制在于 AMI/实例支持,而非驱动本身。如果需要使用 EBS 块存储类,请避免使用以下实例类型,建议使用 Graviton2/3 替代方案:
推荐替代方案:使用 Graviton2/3 实例系列,如 m6g、c6g、r6g、t4g 等,提供更优性能及完整的 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 卷,但创建 IOPS 超过 64000 的卷无法挂载到不支持 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 卷类型。 |