RDS Custom容器系列节点挂载OSS

本文介绍RDS Custom容器系列AI节点、灵骏节点如何通过kubectl方式创建存储卷、存储声明并挂载至应用中。

注意事项

RDS Custom容器系列AI节点、灵骏节点挂载OSS仅支持明文AccessKey

步骤一:创建具有OSS访问权限的RAM用户并获取AccessKey

您需要首先获取RAM用户的AccessKey信息,以使其拥有OSS Bucket的操作权限。

  1. 创建RAM用户,如已创建可跳过。

  2. 如下OSS访问的自定义权限策略

    以下只读和读写权限策略请根据使用需求选择,并替换mybucket为您实际创建的Bucket名称。

    • OSS只读权限策略

      展开查看OSS只读权限策略内容

      {
          "Statement": [
              {
                  "Action": [
                      "oss:Get*",
                      "oss:List*"
                  ],
                  "Effect": "Allow",
                  "Resource": [
                      "acs:oss:*:*:mybucket",
                      "acs:oss:*:*:mybucket/*"
                  ]
              }
          ],
          "Version": "1"
      }
    • OSS读写权限

      展开查看OSS读写权限策略内容

      {
          "Statement": [
              {
                  "Action": "oss:*",
                  "Effect": "Allow",
                  "Resource": [
                      "acs:oss:*:*:mybucket",
                      "acs:oss:*:*:mybucket/*"
                  ]
              }
          ],
          "Version": "1"
      }
  3. RAM用户添加OSS权限,详见RAM用户授权

  4. RAM用户创建AccessKey,详见获取AccessKey

步骤二:创建静态卷PV

执行以下命令创建静态卷PV。

kubectl create -f pv-oss.yaml

以下为创建静态卷PVoss-csi-model-qwen-inner.yaml示例文件。

apiVersion: v1
kind: PersistentVolume
metadata:
  name: oss-csi-model-qwen-inner  # PV的名称,需唯一
  labels:
    alicloud-pvname: oss-csi-model-qwen-inner  # 自定义标签,用于标识PV
spec:
  accessModes:
    - ReadWriteMany  # 支持多节点读写(OSS的天然特性)
  capacity:
    storage: 63Gi     # 声明PV的存储容量(需与OSS存储空间匹配)
  csi:
    driver: ossplugin.csi.alibabacloud.com  # 阿里云OSS CSI驱动
    volumeAttributes:
      bucket: model-qwen  # 目标OSS Bucket名称
      path: /Qwen3-32B  # Bucket内的挂载路径前缀(如 /Qwen3-32B目录)
      url: oss-cn-beijing-internal.aliyuncs.com  # OSS 内网Endpoint(北京地域)
      otherOpts: "-o allow_other"  # 挂载选项:允许其他用户访问
      akId: ******  # 阿里云AccessKey ID,替换为真实值
      akSecret: *****  # AccessKey Secret,替换为真实值
    volumeHandle: oss-model-qwen-inner  # Volume的唯一标识符(需唯一)
  persistentVolumeReclaimPolicy: Retain  # 删除PV时保留数据(默认行为)
  storageClassName: oss  # 关联StorageClass名称
  volumeMode: Filesystem  # 挂载为文件系统

步骤三:创建存储声明PVC

执行以下命令创建存储声明PVC。

kubectl create -f pvc-oss.yaml

以下为创建存储声明PVCoss-pvc-model-qwen-inner.yaml示例文件。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: oss-pvc-model-qwen-inner  # PVC名称
  namespace: default  # 命名空间
spec:
  accessModes:
    - ReadWriteMany  # 请求与PV相同的访问模式
  resources:
    requests:
      storage: 63Gi  # 请求的存储容量(需≤PV的容量)
  storageClassName: oss  # 关联StorageClass
  volumeMode: Filesystem  # 文件系统模式

步骤四:部署Pod并挂载PVC

执行以下命令,部署Pod并挂载VC。

kubectl apply -f pod.yaml

以下为部署Podsglang-qwen3.yaml示例文件。

apiVersion: v1
kind: Pod
metadata:
  name: sglang-qwen3  # Pod名称
spec:
  containers:
  - command:
    - sh
    - -c
    - echo hello world; sleep infinity;  # 测试命令(替换为实际业务逻辑)
    image: aliclouddb-pub-registry-vpc.cn-beijing.cr.aliyuncs.com/aliclouddb-public/des-ai-nv:25.05-sglang0.4.6.post4-pytorch2.6-cu124-20250513-serverless
    imagePullPolicy: IfNotPresent  # 仅拉取新镜像
    name: sglang  # 容器名称
    ports:
    - containerPort: 8000  # 容器监听端口
      name: restful
      protocol: TCP
    resources:
      requests:
        cpu: "80"  
        memory: "300Gi"  
        nvidia.com/gpu: "8"  
      limits:
        cpu: "80"  
        memory: "300Gi" 
        nvidia.com/gpu: "8"  
    volumeMounts:
      - name: oss-volume  # 挂载名称需与volumes一致
        mountPath: "/data"  # 容器内挂载路径(存放OSS数据)
  volumes:
    - name: oss-volume
      persistentVolumeClaim:
        claimName: oss-pvc-model-qwen-inner  # 关联PVC名称
  restartPolicy: Always  # Pod失败时重启
  nodeSelector:
    alibabacloud.com/virtual-node: "true"  # 调度到虚拟节点(Vnode)
  tolerations:
  - effect: NoSchedule
    key: virtual-kubelet.io/provider
    value: aliclouddb  # 兼容虚拟节点的污点容忍

步骤五:验证Pod

执行以下命令,查看Pod状态。

kubectl get pod sglang-qwen3 -o wide

相关文档

RDS Custom简介