本文介绍如何创建对象存储类型存储卷和存储卷声明,以及工作负载如何使用对象存储静态存储卷。
有状态负载需要独占一个卷,暂不支持使用手动创建的存储卷声明。
使用对象存储类型静态存储卷的详细操作步骤和参数配置如下:
在集群管理页面,选择 存储管理 > 存储卷。
单击存储卷列表左上角 创建存储卷。
在弹出的 创建存储卷 页面,完成参数配置。
配置项 | 说明 |
---|---|
创建方式 | 选择存储卷的创建方式,目前支持静态创建。 |
名称 | 根据系统提示,自定义存储卷的名称,需确保存储卷名称在集群内唯一。 |
存储卷类型 | 存储卷类型包括:云盘、文件存储、对象存储。本场景选择 对象存储。 |
访问模式 | 选择存储卷的访问方式,目前支持 ReadWriteMany ,此访问方式支持多点读写。 |
访问密钥 | 选择对象存储的访问密钥,即使用此处指定的访问密钥,授权容器服务访问对象存储。 |
存储桶 | 选择对象存储中已创建的存储桶 Bucket。 |
子目录 | 填写符合要求的存储桶子目录,填写规则如下:
说明 建议填写已经存在的文件目录,否则系统将根据您填写的子目录,自动创建新的文件目录。 |
配置完成后,单击 确定,完成存储卷创建。
配置项 | 说明 |
---|---|
命名空间 | 选择存储卷声明所属的命名空间。建议选择您自定义的命名空间,或系统默认创建的 default 命名空间。命名空间相关介绍,请参见 命名空间概述。 |
名称 | 自定义存储卷声明的名称,需确保存储卷声明名称在集群内唯一。 |
存储类型 | 存储类型包括:云盘、文件存储、对象存储。本场景选择 对象存储。 |
访问模式 | 选择存储卷声明的访问方式,目前支持 ReadWriteMany ,此访问方式支持多点读写。 |
计费类型 | 按需选择资源计费类型,目前仅支持按量计费。 |
存储卷 | 选择本文上方步骤一创建的存储卷进行关联挂载。 |
对象存储类型的静态存储卷创建完成后,可通过添加卷的方式挂载到工作负载使用,包括:无状态负载、有状态负载、任务、定时任务、守护进程。
可通过创建工作负载或更新工作负载操作的容器配置步骤,为工作负载添加卷并挂载卷。详细操作,请参见 工作负载。
vke-tos-secret.yaml
代码如下:apiVersion: v1 data: akId: <火山引擎账号 AK> # Base 64 编码后的火山引擎账号 AK,需要替换为真实信息。 akSecret: <火山引擎账号 SK> # Base 64 编码后的火山引擎账号 SK,与上述 AK 匹配,需要替换为真实信息。 kind: Secret metadata: name: tos-key namespace: default type: Opaque
2.执行以下命令,创建 Secret。
kubectl create -f vke-tos-secret.yaml
vke-tos-static-pv.yaml
代码如下:apiVersion: v1 kind: PersistentVolume metadata: name: vke-tos-static-pv # PV 名称。 spec: capacity: storage: 10Gi # 声明应用存储使用量。Kubernetes 必填字段,但此处设置的容量值不会限制应用实际使用量,实际容量仅跟 TOS 容量有关。 accessModes: # 访问方式,ReadWriteMany:多点读写。 - ReadWriteMany csi: driver: tos.csi.volcengine.com # 驱动类型,本示例为 tos.csi.volcengine.com ,表示火山引擎 csi-tos 插件。 nodePublishSecretRef: name: tos-key # 与步骤一中 Secret 的名称保持一致。 namespace: default nodeStageSecretRef: # 从 csi-tos 组件的 v0.2.2 版本开始,需要配置 NodeStageSecretRef 参数,内容与 nodePublishSecretRef 相同。另外,v0.2.2 版本只能兼容 volumeHandle 和 PV Name 的存量 PV;如果直接升级到 v0.2.3 版本,可以兼容所有存量 PV。 name: tos-key namespace: default volumeAttributes: bucket: vke-tos path: /tmp url: http://tos-s3-cn-beijing.ivolces.com fuse_pod_cpu_request: "100m" # fuse pod 资源 CPU 请求量,若未配置,默认使用 100m。 fuse_pod_cpu_limit: "2" # fuse pod 资源 CPU 限制,若未配置,默认使用 6。 fuse_pod_memory_request: 100Mi # fuse pod 资源内存请求量,若未配置,默认使用 200Mi。 fuse_pod_memory_limit: "2Gi" # fuse pod 资源内存限制,若未配置,默认使用 6Gi。 additional_args: -oparallel_count=20 -oallow_other # s3fs 进程的 options,详细说明可参考 s3fs 帮助文档。从 csi-tos 组件的 v0.2.8 开始会默认添加 -oparallel_count=20。 dbglevel: err # s3fs 进程的日志等级,默认为 err。 volumeHandle: vke-tos-static-pv # PV 的唯一标识符,需要与 PV name 保持一致。volumeHandle 应该唯一对应 <url>:<bucket><path>,避免相同 volumeHandle 对应不同 <url>:<bucket><path>,否则可能导致错误挂载盘。 persistentVolumeReclaimPolicy: Retain volumeMode: Filesystem
2.执行以下命令,创建 PV。
kubectl create -f vke-tos-static-pv.yaml
创建 PVC 的 YAML 文件。示例文件vke-tos-static-pvc.yaml
代码如下:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: vke-tos-static-pvc # PVC 名称。 namespace: default spec: accessModes: # PVC 访问模式。目前仅支持 ReadWriteMany ,表示多点读写。 - ReadWriteMany resources: requests: storage: 20Gi # 声明的存储使用量。 volumeMode: Filesystem # 挂载对象存储的格式,本示例填写 Filesystem,表示文件系统挂载。 volumeName: vke-tos-static-pv # 绑定到该 PVC 的 PV 名称。
执行以下命令,创建 PVC。
kubectl create -f vke-tos-static-pvc.yaml
执行以下命令,查看 PVC 与 PV 的静态绑定结果。
kubectl get pvc
预期输出结果如下,表示 PVC 与 PV 静态绑定成功。
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE vke-tos-static-pvc Bound vke-tos-static-pv 20Gi RWX 2m36s
创建 Deployment 的 YAML 文件。示例文件vke-tos-static-deployment.yaml
代码如下:
说明
如果有使用弹性容器实例 VCI 的需求,需要在spec.template.metadata.annotations中添加
vke.volcengine.com/burst-to-vci: enforce`。VCI 具备全托管免运维、按需付费、沙箱容器安全隔离等优势,详细介绍参见 什么是弹性容器实例。
apiVersion: apps/v1 kind: Deployment metadata: name: vke-static-tos-deploy spec: replicas: 1 selector: matchLabels: app: vke-static-tos-deploy template: metadata: labels: app: vke-static-tos-deploy spec: containers: - image: nginx imagePullPolicy: IfNotPresent name: nginx volumeMounts: - mountPath: /tmp # TOS 在容器中挂载的位置。 name: tos-pv volumes: - name: tos-pv persistentVolumeClaim: claimName: vke-tos-static-pvc # 步骤二中创建的 PVC 名称。
执行以下命令创建 Deployment。
kubectl create -f vke-tos-static-deployment.yaml