全部產品
Search
文件中心

Container Service for Kubernetes:使用OSS儲存卷

更新時間:Jun 21, 2025

OSS是阿里雲提供的一個海量、安全、低成本、高可靠的儲存空間,適合儲存非結構化資料(例如圖片、音視頻等)。本文介紹如何在ACK Serverless叢集中通過PVC的方式掛載OSS到ECI Pod上。

前提條件

已建立ACK Serverless叢集。具體操作,請參見建立叢集

注意事項

  • OSS為共用儲存,一個OSS可以掛載到多個Pod上。

  • 掛載目錄中建議存放的檔案數不要超過1000個。檔案數量過多時,OSSFS會佔用大量記憶體,可能會導致Pod發生OOM(Out Of Memory)事件。

操作步驟

  1. 擷取OSS Bucket資訊。

    如果您沒有建立OSS Bucket,請先在OSS管理主控台建立OSS Bucket。具體操作,請參見建立儲存空間

    1. 登入OSS管理主控台,在左側導覽列單擊Bucket列表

    2. Bucket列表頁面,單擊目標Bucket名稱。

    3. 在Bucket詳情頁面,單擊概覽頁簽,然後在訪問連接埠地區,複製目標Endpoint。

      • Bucket和叢集屬於相同地區時,請複製內網的Endpoint。

      • Bucket和叢集屬於不同地區時,請複製外網的Endpoint。

  2. 選擇授權方式。

    • 方式一:(推薦)使用RAM角色授權。

      建立RAM角色並為該角色授權。建立時,選擇信任主體類型雲端服務信任主體名稱Elastic Compute Service / ECS;為角色授權時,選擇AliyunOSSFullAccess權限原則。具體操作,請參見建立可信實體為阿里雲服務的RAM角色為RAM角色授權

    • 方式二:使用AccessKey直接授權。

      擷取AccessKey ID和AccessKey Secret。具體操作,請參見擷取AccessKey

  3. 使用以下內容,建立test-ack-oss.yaml

    說明

    本文樣本以VPC內網環境為例,內網訪問需確保執行個體、鏡像倉庫、OSS的Endpoint處於同一region(例如北京)。

    如果您需要跨Region掛載OSS或拉取鏡像,則需要配置公網,同時將image地址或OSS URL更改為相應的公網訪問格式,公網訪問時需要修改如下代碼中的imageurl

    • image:替換為registry.cn-beijing.aliyuncs.com/eci_open/nginx:1.14.2

    • url:替換為外網訪問的Endpoint。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: test-ack-oss
      labels:
        alibabacloud.com/eci: "true"
    spec:
      replicas: 2
      selector:
        matchLabels:
          alibabacloud.com/eci: "true"
      template:
        metadata:
          labels:
            alibabacloud.com/eci: "true"
        spec:
          containers:
          - name: nginx
            image: registry-vpc.cn-beijing.aliyuncs.com/eci_open/nginx:1.14.2
            ports:
            - containerPort: 80
            volumeMounts:
              - name: cache-volume
                mountPath: /cache-test
          volumes:
            - name: cache-volume
              persistentVolumeClaim:
                claimName: oss-pvc
    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: oss-pvc
    spec:
      storageClassName: test
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 5Gi
      selector:
        matchLabels:
          alicloud-pvname: pv-oss
    ---
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: oss-csi-pv
      labels:
        alicloud-pvname: pv-oss
    spec:
      storageClassName: test
      capacity:
        storage: 5Gi
      accessModes:
        - ReadWriteMany
      persistentVolumeReclaimPolicy: Retain
      csi:
        driver: ossplugin.csi.alibabacloud.com
        volumeHandle: oss-csi-pv
        volumeAttributes:
          bucket: "oss-test"
          url: "oss-cn-beijing-internal.aliyuncs.com"
          otherOpts: "-o max_stat_cache_size=0 -o allow_other"
          ramRole: "<your RAM Role Name>"

    上述樣本採用RAM角色來授權。如需使用AccessKey直接授權,請將ramRole: "<your RAM Role Name>"替換為以下YAML:

          akId: "<your AccessKey ID>"
          akSecret: "<your AccessKey Secret>"
    說明

    若您需要跨帳號掛載OSS,請配置跨帳號的AK/SK。

    volumeAttributes中需配置OSS相關參數,參數說明如下:

    參數

    說明

    bucket

    OSS Bucket的名稱。目前只支援掛載Bucket,不支援掛載Bucket下的子目錄或者檔案。

    url

    OSS的接入網域名稱(Endpoint),由步驟1擷取。

    • Bucket和叢集屬於相同地區時,請使用內網地址。

    • Bucket和叢集屬於不同地區時,請使用外網地址。

    otherOpts

    掛載OSS時支援輸入定製化參數,格式為-o *** -o ***,例如:-o max_stat_cache_size=0 -o allow_other

    ramRole

    使用RAM角色授權時,對應的RAM角色。

    akId

    使用AccessKey直接授權時,對應的AccessKey ID。

    akSecret

    使用AccessKey直接授權時,對應的AccessKey Secret。

  4. 執行以下命令,建立ECI Pod並掛載OSS。

    kubectl create -f test-ack-oss.yaml
  5. 執行以下命令,查看Pod。

    kubectl get pods -o wide

    預期輸出:

    NAME                              READY   STATUS    RESTARTS   AGE     IP              NODE                           NOMINATED NODE   READINESS GATES
    test-ack-oss-655db9d64d-5q7d9     1/1     Running   0          46s     172.16.XX.XXX   virtual-kubelet-cn-****-k   <none>           <none>
    test-ack-oss-655db9d64d-m5vct     1/1     Running   0          46s     172.16.XX.XXX   virtual-kubelet-cn-****-k   <none>           <none>

    查看Pod中的檔案目錄,可以看到已產生OSS對應的掛載目錄/cache-test,在第一個Pod中寫入的檔案可以在第二個Pod中查看,即兩個Pod共用使用OSS儲存。查看Pod

相關文檔

如需瞭解OSS儲存卷的更多資訊,請參見OSS儲存卷