AWS EKS 集群存储初始化配置
平台对接 AWS EKS 及存储初始化配置。
约束与限制
-
默认提供的 efs-sc 文件存储类在挂载后可能不支持权限修改,这可能导致某些应用程序如 PostgreSQL 和 Jenkins 无法正常运行。
-
A1 系列实例不支持部署 EBS 块存储插件(Amazon EBS CSI Driver),若需使用 EBS 块存储类型存储类,请避免使用如下机型:
- a1.medium
- a1.large
- a1.xlarge
- a1.2xlarge
- a1.4xlarge
前提条件
-
请确保 Kubectl 及 AWS CLI 工具可用。
-
若已创建 EKS 集群,请 接入 Amazon EKS 集群 ;若未创建 EKS 集群,请 创建 AWS EKS 集群 。
-
请在 EKS 集群中部署 EFS 文件存储插件 Amazon EFS CSI Driver 及 EBS 块存储插件 Amazon EBS CSI Driver。
注意:若使用 EFS 文件存储,请在 EKS 所在区域创建文件存储,创建完成后记录并保存 文件系统 中的 文件系统 ID。
操作步骤
创建存储类
-
进入 平台管理,在左侧导航栏中,单击 存储管理 > 存储类。
-
单击 创建存储类 右侧
> YAML 创建。 -
在 YAML 文件中增加如下内容,按需创建默认存储类。其中, 文件存储 的默认存储类名称为 efs-sc, 块存储 的默认存储类名称为 ebs-sc。
-
EFS 文件存储
注意:请使用 文件系统 ID 替换
<文件系统 ID>,例如:fileSystemId: fs-05aef9e1edd309f2b。kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: efs-sc provisioner: efs.csi.aws.com parameters: provisioningMode: efs-ap fileSystemId: <文件系统 ID> directoryPerms: "755" -
EBS 块存储
allowVolumeExpansion: true apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: ebs-sc provisioner: ebs.csi.aws.com reclaimPolicy: Delete volumeBindingMode: WaitForFirstConsumer
-
-
单击 创建。
注意:若默认存储类不能满足要求,可按照上述步骤新建存储类并按需修改相应参数,具体请参考 存储类可用参数 。
修改存储类的项目分配
-
在左侧导航栏中,单击 存储管理 > 存储类。
-
单击列表中名称为 efs-sc 或 ebs-sc 的存储类右侧
> 更新项目。 -
按需选择 分配项目 的方式,单击 更新,将存储类分配给项目使用。
相关操作
配置存储类可用参数
-
EFS 文件存储可用参数
参数 可选值 默认值 非必选项 描述 az "" true 用于跨账户挂载。若指定此参数,将使用与 az 关联的挂载目标进行跨账户挂载;若未指定此参数,将随机选择一个挂载目标用于跨账户挂载。 basePath true 用于创建动态配置访问点的路径。若未指定此参数,访问点将在文件系统根目录下创建。 directoryPerms false 用于创建 Access Point 根目录 的目录权限。 uid true 用于创建 Access Point 根目录 的 POSIX 用户 ID。 gid true 用于创建 Access Point 根目录 的 POSIX 组 ID。 gidRangeStart 50000 true 创建 访问点根目录 时要应用的 POSIX 组 ID 的起始范围。若设置了 uid/gid,则无需配置此参数。 gidRangeEnd 7000000 true POSIX 组 Id 的结束范围。若设置了 uid/gid,则无需配置此参数。 subPathPattern /${.PV.name} true 用于构建子路径的模板,每个在动态供应下创建的接入点都在该模板下。可由固定字符串和有限变量组成,类似于 nfs-subdir-external-provisioner 图表中的 “subPathPattern” 变量,可选参数为 .PVC.name、.PVC.namespace 和 .PV.name。 ensureUniqueDirectory true true 在启用动态配置时使用,此参数设置为 true 时,会将 UID 附加到 subPathPattern 中指定的模式,以确保访问点不会意外指向同一目录。
注意:只有在确定这是您想要的行为时才可将此参数设置为 false。provisioningMode efs-ap false EFS 提供的卷类型,目前支持接入点。 fileSystemId false 已创建的接入点的文件系统 ID。 -
EBS 块存储可用参数
提示:不同卷类型性能参数可参考 Amazon EBS 卷类型 。
参数 可选值 默认值 描述 “allowAutoIOPSPerGBIncrease” true, false false 此参数设置为 “true” 时,CSI 驱动程序会在 iopsPerGB * <卷大小> 太低不符合 AWS 支持的 IOPS 范围时增加卷的 IOPS,这确保了即使用户指定的 PVC 容量或 iopsPerGB 值过小,动态配置也总能成功,但同时可能会带来额外成本,因为此类卷的 IOPS 要高于 iopsPerGB 中的要求。 “blockExpress” true, false false 通过将 io2 卷的 IOPS 限制提高到 256000,可以创建 io2 Block Express 卷,但是在不支持 io2 Block Express 的实例上,创建的 IOPS 超过 64000 的卷将无法挂载。 “blockSize” 用于指定在格式化底层文件系统时所使用的块大小。这个参数仅适用于运行在 Linux 节点上,且文件系统类型为 ext2、ext3、ext4 或 xfs 的情况。 “bytesPerINode” 用于指定在格式化底层文件系统时所使用的每个节点的字节数。这个参数仅适用于运行在 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” 用于格式化底层文件系统时指定的节点数,这个参数仅适用于运行在 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 卷类型。