You need to enable JavaScript to run this app.
文档中心
容器服务

容器服务

复制全文
下载 pdf
FSX 访问方式
通过 FSX 客户端使用 NAS 静态存储卷
复制全文
下载 pdf
通过 FSX 客户端使用 NAS 静态存储卷
FSX 支持对接 NAS 文件系统,提供统一的接入、鉴权、管理等策略,本文为您介绍如何通过 FSX 客户端使用 NAS 静态存储卷。​
前提条件​
  • 已安装 csi-fsx 和 fsxset-controller 组件,并升级至最新版本。详情请参见 csi-fsx、fsxset-controller。​
  • 已在指定命名空间下创建密钥,创建密钥所需的账号 AK/SK 获取方法参见:如何获取 API 访问密钥。若使用临时 Token 鉴权,需要自主实现刷新 Token 的逻辑。​
  • 已在本地安装 kubectl 工具,并通过 kubectl 连接目标集群。详细说明参见:连接集群。​
使用限制​
  • 当前仅缓存型 NAS 支持接入点,且处于邀测阶段,如需使用,请联系客户经理获取试用权限。​
  • 若使用临时 Token 鉴权,需要自主实现刷新 Token 的逻辑。​
  • 有状态负载需要独占一个卷,暂不支持使用手动创建的存储卷声明。​
  • 暂不支持 Kubernetes v1.20 及以下版本的集群使用。​
操作步骤​
步骤一:(可选)创建策略​
说明​
  • 若使用主账号 AK/SK,可跳过此步骤。​
  • 如需实现动态刷新临时 Token 的逻辑,参考 AssumeRole 接口。​
创建策略的操作步骤参见 新建自定义策略,创建 NAS 策略的配置示例如下。​
​
只读权限配置示例
读写权限配置示例
​
针对某个接入点只读权限的配置示例,如下所示。​
​
{​
"Statement": [​
{​
"Effect": "Allow",​
"Action": [​
"filenas:ClientMount"​
],​
"Resource": ["trn:filenas:cn-beijing:2100xxxxxx:filesystem/anas-sw07xxxxxx9caxxx"],​
"Condition": {​
"StringEquals": {​
"volc:RequestTag/accesspoint": "ap-8dcxxxxx"​
}​
}​
},​
{​
"Effect": "Allow",​
"Action": [​
"filenas:VerifyAccessPoint",​
"filenas:DescribeAccessPoints",​
"filenas:CreateAccessPoint",​
"filenas:ModifyAccessPoint",​
"filenas:DeleteAccessPoint"​
],​
"Resource": [​
"*"​
]​
}​
]​
}​
​
​
步骤二:创建保密字典(Secret)​
  1. 创建 Secret 的 Yaml 文件 vke-nas-fsx-secret.yaml,示例代码如下:​
  • ​
    apiVersion: v1​
    kind: Secret​
    metadata:​
    name: nas-fsx-key # 保密字典名称。若使用 1.26.x 版本集群,名称中禁止使用符号.,其他版本不受影响​
    namespace: default # 保密字典所属命名空间​
    type: Opaque # 保密字典类型,本例中选择通用类型,存储任意键值对​
    data:​
    akId: ${AK} # Base 64 编码后的账号 AK,需要替换为真实信息​
    akSecret: ${AK} # Base 64 编码后的账号 SK,与上述 AK 匹配,需要替换为真实信息​
    ExpiredTime: ${Temporary Token expiration time} # Base64 编码后的临时 Token 过期时间,如果使用账号 AK/SK,不需要指定​
    SessionToken: ${Temporary Token content} # Base64 编码后的临时 Token 内容,如果使用账号 AK/SK,不需要指定​
    ​
说明​
您可以使用echo -n "${ak}" | base64命令对 AK、SK 等进行 Base64 编码,请将${ak}替换为您自己的实际值。例如当${ak}取值为demo时,编码命令为echo -n "demo" | base64,编码后的值为ZGVtbw==。​
  1. 执行以下命令,创建 Secret。​
  • ​
    kubectl create -f vke-nas-fsx-secret.yaml​
    ​
步骤三:创建存储卷(PV)​
  1. 创建 PV 的 Yaml 文件文件 vke-nas-fsx-static-pv.yaml,示例代码如下:​
  • ​
    apiVersion: v1​
    kind: PersistentVolume​
    metadata:​
    name: vke-nas-fsx-static-pv # 存储卷名称​
    spec:​
    capacity:​
    storage: 100Gi # 存储卷声明容量​
    accessModes: # 存储卷访问方式,仅支持 ReadWriteMany,表示多点读写​
    - ReadWriteMany​
    csi:​
    driver: fsx.csi.volcengine.com # 存储挂载依赖的驱动​
    volumeAttributes:​
    type: nas # 存储卷类型,需配置为 nas​
    server: ap-69xxxxxx.swxxxxxxb9ceaxxx.xxxxxx8013xxx2dxxxxxx19ew.cn-beijing.nas.ivolces.com # 文件系统接入点 ID + 接入点域名​
    path: / # 挂载文件系统的根目录,请确保该目录存在,否则挂载会失败​
    secretName: nas-fsx-key # # 已创建的 Secret,使用 AK/SK 鉴权时必填​
    secretNamespace: default # 已创建的 Secret 所在的命名空间,使用 AK/SK 鉴权时必填​
    volumeHandle: vke-nas-fsx-static-pv # PV 的唯一标识符,与存储卷(PV)名称保持一致​
    persistentVolumeReclaimPolicy: Delete # 存储卷回收策略。取值:Retain(保留策略),Delete(删除策略)​
    volumeMode: Filesystem # 存储卷类型,取值:Filesystem(将存储卷作为文件系统使用)、Block(将存储卷作为块设备使用)​
    ​
说明​
NAS 使用 FSX 客户端时支持配置挂载参数,目前仅支持配置基本参数,更多详细说明参见:FSX 挂载参数说明。​
  • 关键参数说明,如下表所示。​
  • ​
    参数​
    说明​
    accessModes​
    存储卷访问方式,仅支持 ReadWriteMany,表示多点读写,即存储卷仅能被多个 Pod 以读写方式挂载。​
    storage​
    存储卷声明容量,单位为 Gi。该字段为 Kubernetes 必填字段,取值无实际意义,仅用于校验。实际容量仅跟已创建的存储容量有关。​
    driver​
    存储卷挂载依赖的驱动,本文中需要配置为 fsx.csi.volcengine.com,表示 csi-fsx 插件。​
    type​
    存储类型,本文中配置为nas,表示使用 NAS 存储。​
    server​
    已创建的 NFS 文件系统接入点 ID + 接入点域名。拼接格式为 接入点 ID.接入点域名。例如ap-69xxxxxx.swxxxxxxb9ceaxxx.xxxxxx8013xxx2dxxxxxx19ew.cn-beijing.nas.ivolces.com。​
    说明​
    您可以在文件存储控制台,查看已创建的文件系统接入点 ID 和域名信息。详情请参见 管理接入点。​
    path​
    指定 NFS 存储的根目录,请确保该目录存在,否则挂载会失败。​
    secretName​
    使用 AK/SK 鉴权时,已创建的 Secret 名称。​
    secretNamespace​
    使用 AK/SK 鉴权时,已创建的 Secret 所属命名空间。​
    volumeHandle​
    存储卷唯一标识符,与存储卷(PV)的名称保持一致即可。​
    persistentVolumeReclaimPolicy​
    存储卷回收策略。包括:​
    • Retain:保留策略,即当绑定该 PV 的 PVC 被删除时,保留该 PV。​
    • Delete:删除策略,即当绑定该 PV 的 PVC 被删除时,同步删除该 PV。​
    volumeMode​
    存储卷类型,包括:​
    • Filesystem:(默认值)将存储卷作为文件系统使用。存储卷会被格式化并挂载一个文件系统(如 ext4、xfs),再将该文件系统挂载到容器指定路径。您可以在容器中使用ls命令(例如ls /data)能查看挂载的目录或文件,并可以直接读写文件。​
    • Block:将存储卷作为块设备使用。直接暴露给容器,不格式化、不挂载文件系统。您可以通过/dev/block/xxx 类似的路径操作块设备,应用需支持裸块设备读写。​
    ​
  1. 执行以下命令,创建 PV。​
  • ​
    kubectl create -f vke-nas-fsx-static-pv.yaml​
    ​
步骤四:创建存储卷声明(PVC)​
  1. 创建 PVC 的 Yaml 文件文件 vke-nas-fsx-static-pvc.yaml,示例代码如下:​
  • ​
    apiVersion: v1​
    kind: PersistentVolumeClaim​
    metadata:​
    name: vke-nas-fsx-static-pvc # 存储卷声明名称​
    namespace: default # 存储卷声明所属命名空间​
    spec:​
    accessModes: # 存储卷声明访问模式。目前仅支持 ReadWriteMany,表示多点读写​
    - ReadWriteMany​
    resources:​
    requests:​
    storage: 20Gi # 声明的存储使用量,单位为 Gi,需要与已创建的存储卷容量一致​
    volumeMode: Filesystem # 存储卷类型,取值:Filesystem(将存储卷作为文件系统使用)、Block(将存储卷作为块设备使用),必须与 PV 中配置的类型一致​
    volumeName: vke-nas-fsx-static-pv # 已创建的存储卷名称​
    ​
  • 关键参数说明,如下表所示。​
  • ​
    参数​
    说明​
    accessModes​
    存储卷声明的访问方式,仅支持 ReadWriteMany,表示多点读写。​
    storage​
    声明的存储容量,单位为 Gi。需要与已创建的存储卷容量一致。​
    volumeMode​
    存储卷类型,必须与 PV 中配置的类型一致。包括:​
    • Filesystem:(默认值)将存储卷作为文件系统使用。存储卷会被格式化并挂载一个文件系统(如 ext4、xfs),再将该文件系统挂载到容器指定路径。您可以在容器中使用ls命令(例如ls /data)能查看挂载的目录或文件,并可以直接读写文件。​
    • Block:将卷作为块设备使用。直接暴露给容器,不格式化、不挂载文件系统。您可以通过/dev/block/xxx类似的路径操作块设备,应用需支持裸块设备读写。​
    volumeName​
    存储卷名称,必须与 PV 中配置的名称一致。​
    ​
  1. 执行以下命令,创建 PVC。​
  • ​
    kubectl create -f vke-nas-fsx-static-pvc.yaml​
    ​
  1. 执行以下命令,查看 PVC 与 PV 的静态绑定结果。​
  • ​
    kubectl get pvc​
    ​
  • 预期输出结果如下,表示 PVC 与 PV 静态绑定成功。​
  • ​
    NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE​
    vke-nas-fsx-static-pvc Bound vke-nas-fsx-static-pv 20Gi RWX 2m36s​
    ​
步骤五:创建应用并挂载存储卷​
  1. 创建 Deployment 的 Yaml 文件文件 vke-nas-fsx-static-deployment.yaml,示例代码如下:​
  • ​
    apiVersion: apps/v1​
    kind: Deployment​
    metadata:​
    name: vke-static-nas-fsx-deploy​
    spec:​
    replicas: 1​
    selector:​
    matchLabels:​
    app: vke-static-nas-fsx-deploy​
    template:​
    metadata:​
    labels:​
    app: vke-static-nas-fsx-deploy​
    spec:​
    containers:​
    - image: nginx​
    name: doc-cn-beijing.cr.volces.com/vke/nginx-demo:v1.0​
    volumeMounts:​
    - mountPath: /tmp # 存储卷在容器中挂载的位置​
    name: nas-fsx-pv # 存储卷名称,需与 volumes.name 字段的配置一致​
    volumes:​
    - name: nas-fsx-pv # 存储卷名称,支持自定义​
    persistentVolumeClaim:​
    claimName: vke-nas-fsx-static-pvc # 已创建的存储卷声明名称​
    ​
  1. 执行以下命令创建 Deployment。​
  • ​
    kubectl create -f vke-nas-fsx-static-deployment.yaml​
    ​
结果验证​
按照上文示例创建工作负载并挂载存储卷后,您可以通过以下方式验证存储卷的挂载和持久化存储。​
  1. 执行以下命令,查看存储卷是否正确挂载到 Pod 的指定路径。​
  • ​
    kubectl exec vke-static-nas-fsx-deploy-xxx -- df | grep tmp​
    ​
  • 预期返回结果如下。​
  • ​
    cnshbb5***.3qda7du***.nas.ivolces.com:/temp 10995116277760 0 10995116277760 0% /tmp​
    ​
  1. 查看 Pod 中的挂载路径,即查看存储卷中的数据。​
  • ​
    kubectl exec vke-static-nas-fsx-deploy-xxx -- ls /tmp​
    ​
  • 预期返回结果如下。​
  • ​
    lost+found​
    ​
  1. 在存储卷中写入文件。​
  • ​
    kubectl exec vke-static-nas-fsx-deploy-xxx -- touch /tmp/test​
    ​
  1. 删除 Pod。​
  • ​
    kubectl delete pod vke-static-nas-fsx-deploy-xxx​
    ​
  1. 查看新创建 Pod 下的存储卷挂载路径。​
  • ​
    kubectl exec vke-static-nas-fsx-deploy-xxx -- ls /tmp​
    ​
  • 预期返回如下,可以看到存储卷中写入的文件依然存在,未随着 Pod 的删除而被删除,实现了数据的持久化存储。​
  • ​
    lost+found ​
    test​
    ​
相关文档​
最近更新时间:2026.07.03 17:17:09
这个页面对您有帮助吗?
有用
有用
无用
无用