FSXSet 是容器服务提供的自定义资源(CRD),用于实现 FSX 客户端的精细化调度与解耦管理。本文介绍如何使用 FSXSet 实现客户端的差异化配置。
在容器服务集群中,节点池通常由不同规格、用途的 ECS 实例组成,例如:高并发读写需求的智算/GPU 节点、读写频率较低的通用计算节点等。不同规格节点由于承载的业务不同,对 FSX 客户端的资源配额、清理策略及特定能力的诉求也并不一致。因此,如果集群中的所有节点都使用同一套 FSX 客户端配置,会带来以下问题:
- 为满足高负载场景的资源需求时,支持将 FSX 客户端的资源(CPU、内存等)调高。但这会同时导致普通节点的资源被额外占用,从而挤占业务的调度容量,造成节点资源浪费。
- 需要节省集群整体资源时,可以将 FSX 客户端的资源(CPU、内存等)调低。但这会导致在高并发节点上出现性能瓶颈,为业务带来稳定性风险。
为了解决上述问题,容器服务集群支持通过“节点标签 + FSXSet 分组”的方式实现节点差异化管理能力,允许基于节点标签将节点划分为不同分组,并为每个分组配置独立的 FSXSet,从而实现不同实例规格使用不同配置的目的。例如:您可以为某类节点(智算、GPU 节点)配置专属标签,将其固定到对应分组,再在该分组的 FSXSet 中调高 FSX 客户端的资源配额或关键参数。同时,其他未配置专属标签的节点会自动归属于系统默认分组,继续使用更轻量的默认配置。
- 已安装 csi-fsx 组件,并升级至 v1.0.0 及以上版本。详情请参见 csi-fsx。
- (可选)已通过 kubectl 连接目标集群。具体操作说明,请参见 连接集群。
说明
本文以面向集群中的 GPU 节点配置专属 FSXSet 为例,介绍如何使用 FSXSet 实现不同节点的 FSX 客户端差异化管理。
当您在集群中安装 fsxset-controller 组件后,系统会自动同步安装 FSXSet 自定义资源,并生成默认配置。详情请参见 FSXSet 资源介绍。因此,需要为 GPU 节点创建 FSXSet 专属配置,并针对性地调高资源配置。 - 在左侧导航栏中,选择 集群,单击目标集群名称,进入集群管理页面。
- 在左侧导航栏中,选择 组件管理,并选择 存储 页签。
- 单击 csi-fsx 组件卡片右下角的... > 客户端配置。完成 GPU 节点专属客户端配置。包括:
- FSXSet 标签值:指定节点的标签值为,本例中为 gpu,表示 GPU 节点的专属配置。
- 资源配置:根据节点的性能需求,配置 FSX 客户端容器的 CPU 和内存的请求值和上限值。
说明
- 本例中的 FSX 客户端资源配置仅为示例,实际配置时请根据节点规格和您的业务合理选择。
-
说明
通过 kubectl 命令行创建无状态负载前请确保:
- 已通过 kubectl 连接目标集群。具体操作说明,请参见 连接集群。
- 创建 FSXSet 的 YAML 文件。示例文件fsxset-demo.yaml代码如下:
注意
- 更新节点池上的节点标签,仅对后续扩容出的新节点生效,存量节点的标签不受影响。如有存量节点更新需求,请手工为存量节点添加对应的标签。
- 待添加标签的节点上,需要保证无存量的 FSX 客户端 Pod 存在。
- 在节点池列表中选择目标节点池,单击 操作 栏中的 编辑。
- 在 高级 配置中,单击 添加标签,在弹出的标签编辑框中,新增如下标签键值对:
- 键:固定键名为fsx.csi.volcengine.com/group。
- 值:输入 FSXSet 配置中的自定义标签值,本例中为gpu。
-
- 在节点列表中选择目标节点,单击 操作 栏中的 标签管理。
- 单击 添加标签,在弹出的标签编辑框中,新增如下标签键值对:
- 键:固定键名为fsx.csi.volcengine.com/group。
- 值:输入 FSXSet 配置中的自定义标签值,本例中为gpu。
-
配置完成后,您可以在集群使用 FSX 挂载存储卷,验证不同节点中 FSX 客户端的配置是否符合预期。
- 预期结果如下,DESIRED和READY等于目标节点数,表示对应 GPU 节点中的 FSX 客户端已创建。
- 执行以下命令,确认 FSX 客户端已在目标节点上运行。其中,fsxset-gpu为 FSXSet 资源名称。
当集群进入稳定运行后,运维团队往往仍然需要持续验证并更新 FSX 客户端的新版本(例如:引入新特性或修复问题),并在真实业务负载下观察挂载/卸载以及读写表现。实践中通常需要在版本稳定性与功能演进之间取得平衡。一方面,生产环境需要优先保障存储挂载链路的稳定,避免因客户端版本变化引入兼容性、性能或可用性风险;另一方面,业务也需要及时验证新版本带来的功能增强、问题修复或性能优化,避免长期停留在旧版本导致能力演进受限。
为了解决稳定运行与新特性验证之间的矛盾,容器服务集群支持通过“节点标签 + FSXSet 分组”的方式在同一集群内实现物理层面的环境隔离。即将少量节点指定为 POC 环境,仅在这些节点上运行新版本的 FSX 客户端;生产环境其余节点继续运行稳定版本,两套环境并行但相互隔离。在 POC 环境中完成业务负载下的挂载/卸载与读写验证后,再逐步扩大 POC 范围或推进分批升级。若 POC 结果不符合预期,只需将 POC 节点恢复到原分组即可回退到旧版本,生产环境不受影响。
- 已安装 csi-fsx 组件,并升级至 v1.0.0 及以上版本。详情请参见 csi-fsx。
- (可选)已通过 kubectl 连接目标集群。具体操作说明,请参见 连接集群。
当您在集群中安装 fsxset-controller 组件后,系统会自动同步安装 FSXSet 自定义资源,并生成默认配置。详情请参见 FSXSet 资源介绍。因此,需要为 POC 节点创建 FSXSet 专属配置,并指定需要验证的版本。 - 在左侧导航栏中,选择 集群,单击目标集群名称,进入集群管理页面。
- 在左侧导航栏中,选择 组件管理,并选择 存储 页签。
- 单击 csi-fsx 组件卡片右下角的... > 客户端配置。在 客户端镜像 中选择需要进行 POC 验证的版本。
-
说明
通过 kubectl 命令行创建无状态负载前请确保:
- 已通过 kubectl 连接目标集群。具体操作说明,请参见 连接集群。
- 创建 FSXSet 的 YAML 文件。示例文件fsxset-demo.yaml代码如下:
注意
- 更新节点池上的 ECS 实例标签,仅对后续扩容出的新节点生效,存量节点的标签不受影响。如有需求,请手工为存量节点添加标签。
- 待添加标签的节点上,需要无存量的 FSX 客户端 Pod 存在。
- 在节点池列表中选择目标节点池,单击 操作 栏中的 编辑。
- 在 高级 配置中,单击 添加标签,在弹出的标签编辑框中,新增如下标签键值对:
- 键:固定键名为fsx.csi.volcengine.com/group。
- 值:输入 FSXSet 配置中的自定义标签值,本例中为gpu。
-
- 在节点列表中选择目标节点,单击 操作 栏中的 标签管理。
- 单击 添加标签,在弹出的标签编辑框中,新增如下标签键值对:
- 键:固定键名为fsx.csi.volcengine.com/group。
- 值:输入 FSXSet 配置中的自定义标签值,本例中为gpu。
-
配置完成后,您可以在集群使用 FSX 挂载存储卷,验证不同节点中 FSX 客户端的配置是否符合预期。
- 预期结果如下,DESIRED和READY 等于目标节点数,表示对应 POC 节点中的 FSX 客户端已创建。
- 执行以下命令,确认 FSX 客户端已在目标节点上运行。其中,fsxset-gpu为 FSXSet 资源名称。
完成配置后,建议在 POC 节点上运行真实业务负载,重点观察新版本 FSX 客户端在实际业务场景中的表现。验证时,建议重点关注以下内容:
- 业务读写链路是否稳定,是否出现明显的延迟抖动、吞吐下降或错误率升高。
- 与生产环境稳定版本相比,是否存在行为差异或兼容性问题。
如果有条件,建议在 POC 环境中覆盖典型高峰流量、批量挂载和异常恢复等关键场景,以提高验证结论的可靠性。
说明
您可以在集群中开启云原生观测和 CSI 存储观测功能,确认相关指标是否正常。详情请参见 CSI 存储观测。 如果 POC 验证结果符合预期,建议将生产环境和 POC 环境分别对应到两个范围相对固定的 FSXSet 分组中,并长期维护这两个分组的版本配置。
在这种模式下,生产环境分组用于承载线上稳定业务,默认使用已验证的稳定版本;POC 分组用于承载新版本验证,默认使用待验证版本。完成验证后,您可以将生产环境分组对应的 FSXSet 版本更新为已通过验证的版本,从而完成线上升级。升级过程中,建议持续观察 FSXSet 状态、客户端 Pod 状态以及业务侧挂载、读写和监控指标,确认生产环境运行稳定。
如果 POC 验证未通过,建议直接将 POC 分组对应的 FSXSet 版本恢复为原稳定版本,而不是通过持续扩大 POC 分组的节点范围来推进升级。这样可以保持生产环境与 POC 环境的边界稳定,降低版本验证失败时的回退复杂度,并减少对线上业务的影响。