日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

靜態掛載OSS存儲卷

如果應用需要存儲圖片、音視頻等非結構化數據,可以使用OSS作為持久化存儲卷。本文介紹如何為應用靜態掛載OSS存儲卷,并驗證OSS的共享存儲和持久化存儲。

背景信息

OSS是一個海量、安全、低成本、高可靠的存儲空間,適合存儲寫入后較少修改的數據,以及非結構化數據(如圖片、音視頻等)。更多信息,請參見存儲概述

說明

ACS僅支持靜態掛載OSS存儲卷,暫不支持動態掛載OSS存儲卷。

前提條件

ACS集群中已安裝managed-csiprovisioner組件。

說明

您可以在ACS集群管理頁的左側導航欄選擇運維管理 > 組件管理,在存儲頁簽下查看managed-csiprovisioner組件的安裝情況。

注意事項

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

  • 掛載目錄中建議存放的文件數不要超過1000個。

    通過ossfs進行ls等操作時,將發起HTTP請求到OSS獲取文件的Meta信息,如果ls的目標目錄下文件較多,ossfs將消耗大量系統內存,可能會導致Pod發生OOM(Out Of Memory)事件。您可以通過掛載OSS Bucket的子目錄,或對文件較多的目錄進行目錄分級來避免此問題。

創建并獲取OSS Bucket信息

  1. 創建OSS Bucket。

    1. 登錄OSS管理控制臺,在左側導航欄單擊Bucket列表

    2. 單擊創建Bucket

    3. 在彈出面板完成OSS Bucket相關參數配置,然后單擊完成創建,并完成后續操作。

      需要注意的參數如下。更多信息,請參見創建存儲空間

      參數

      說明

      Bucket 名稱

      自定義輸入,在OSS范圍內全局唯一,創建成功后不允許修改。格式要求請參考界面提示。

      地域

      建議選擇有地域屬性,并選擇ACS集群所屬地域,使得后續ACS集群中的Pod可以通過內網訪問OSS Bucket。

  2. (可選)如果需要掛載OSS Bucket的子目錄,按需創建子目錄。

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

    2. 在Bucket詳情頁面的左側導航欄,選擇文件管理 > 文件列表

    3. 根據需要單擊新建目錄,對OSS Bucket進行目錄分級。

  3. 獲取OSS Bucket的Endpoint。

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

    2. 在Bucket詳情頁面,單擊概覽頁簽,然后在訪問端口區域,復制目標Endpoint。

      • OSS Bucket和ACS集群屬于相同地域時,請復制VPC內網的Endpoint。

      • OSS Bucket沒有地域屬性,或者和ACS集群屬于不同地域時,請復制外網的Endpoint。

  4. 獲取AccessKey ID和AccessKey Secret,用于OSS授權訪問。具體操作,請參見獲取AccessKey

    說明

    如果需要跨賬號掛載OSS Bucket,請獲取OSS Bucket所屬賬號的AccessKey。

靜態掛載OSS存儲卷

通過kubectl命令

步驟一:創建PV

  1. 連接集群。具體操作,請參見獲取集群KubeConfig并通過kubectl工具連接集群在CloudShell上通過kubectl管理Kubernetes集群

  2. 將以下YAML內容保存為oss-pv.yaml。

    apiVersion: v1
    kind: Secret
    metadata:
      name: oss-secret
      namespace: default
    stringData:
      akId: <your AccessKey ID>
      akSecret: <your AccessKey Secret>
    ---
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: oss-pv
      labels:
        alicloud-pvname: oss-pv
    spec:
      storageClassName: test 
      capacity:
        storage: 20Gi
      accessModes:
        - ReadWriteMany
      persistentVolumeReclaimPolicy: Retain
      csi:
        driver: ossplugin.csi.alibabacloud.com
        volumeHandle: oss-pv
        nodePublishSecretRef:
          name: oss-secret
          namespace: default
        volumeAttributes:
          bucket: "<your OSS Bucket Name>"
          url: "<your OSS Bucket Endpoint>"
          otherOpts: "-o max_stat_cache_size=0 -o allow_other"
    說明

    以上YAML可以創建一個Secret和一個PV。Secret用于保存AccessKey,以便在PV中可以安全使用。請使用實際的AccessKey ID和AccessKey Secret替換akIdakSecret的取值。

    PV的相關參數說明如下:

    參數

    說明

    alicloud-pvname

    PV的標簽。用于綁定PVC。

    storageClassName

    該配置僅用于綁定PVC,無需關聯實際的StorageClass。

    storage

    OSS存儲卷的容量大小。

    說明

    OSS靜態卷的容量僅起聲明效果,實際容量不受限制,可使用量以OSS控制臺顯示為準。

    accessModes

    訪問模式。

    persistentVolumeReclaimPolicy

    回收策略。

    driver

    驅動類型。此處配置為ossplugin.csi.alibabacloud.com,表示使用阿里云OSS CSI插件。

    volumeHandle

    PV的唯一標識符,與metadata.name保持一致。

    nodePublishSecretRef

    從指定的Secret中獲取AccessKey,用于授權認證。

    bucket

    OSS Bucket的名稱。請使用實際的OSS Bucket名稱替換bucket的取值。

    url

    OSS Bucket的接入域名(Endpoint)。請使用實際的OSS Bucket的Endpoint替換url的取值。

    • OSS Bucket和ACS集群屬于相同地域時,使用VPC內網的Endpoint。例如oss-cn-shanghai-internal.aliyuncs.com

    • OSS Bucket沒有地域屬性,或者和ACS集群屬于不同地域時,使用外網的Endpoint。例如oss-cn-shanghai.aliyuncs.com

    otherOpts

    掛載參數。格式為-o *** -o ***,例如:-o max_stat_cache_size=0 -o allow_other

  3. 創建Secret和PV。

    kubectl create -f oss-pv.yaml
  4. 查看PV。

    kubectl get pv

    預期返回:

    NAME     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   VOLUMEATTRIBUTESCLASS   REASON   AGE
    oss-pv   20Gi       RWX            Retain           Available           test           <unset>                          9s

步驟二:創建PVC

  1. 將以下YAML內容保存為oss-pvc.yaml。

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: oss-pvc
    spec:
      storageClassName: test
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 20Gi
      selector:
        matchLabels:
          alicloud-pvname: oss-pv

    相關參數說明如下:

    參數

    說明

    storageClassName

    該配置僅用于綁定PV,無需關聯實際的StorageClass。與PV的spec.storageClassName保持一致。

    accessModes

    訪問模式。

    storage

    分配給Pod的存儲容量。不能高于OSS存儲卷的容量。

    alicloud-pvname

    要綁定的PV的標簽。與PV的metadata.labels.alicloud-pvname保持一致。

  2. 創建PVC。

    kubectl create -f oss-pvc.yaml
  3. 查看PVC。

    kubectl get pvc

    預期返回如下,此時PVC已綁定步驟一創建的PV。

    NAME      STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   VOLUMEATTRIBUTESCLASS   AGE
    oss-pvc   Bound    oss-pv   20Gi       RWX            test           <unset>                 6s

步驟三:創建應用并掛載OSS

  1. 使用以下YAML內容,創建oss-test.yaml文件。

    以下YAML示例可以創建包含2個Pod的Deployment,2個Pod均通過名為oss-pvc的PVC申請存儲資源,掛載路徑均為/data

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: oss-test
      labels:
        app: nginx
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest
            ports:
            - containerPort: 80
            volumeMounts:
              - name: pvc-oss
                mountPath: /data
          volumes:
            - name: pvc-oss
              persistentVolumeClaim:
                claimName: oss-pvc
  2. 創建Deployment并掛載OSS。

    kubectl create -f oss-test.yaml
  3. 查看Deployment中Pod的部署情況。

    kubectl get pod | grep oss-test

    返回示例如下,已創建2個Pod。

    oss-test-****-***a   1/1     Running   0          28s
    oss-test-****-***b   1/1     Running   0          28s
  4. 查看掛載路徑。

    命令示例如下,預期會返回OSS Bucket掛載目錄下的數據,默認為空。

    kubectl exec oss-test-****-***a -- ls /data

通過控制臺

步驟一:創建PV

  1. 登錄容器計算服務控制臺

  2. 集群頁面,單擊目標集群ID,進入該集群的管理頁面。

  3. 在集群管理頁面的左側導航欄,選擇存儲 > 存儲卷

  4. 存儲卷頁面,單擊創建

  5. 在彈出的對話框中,完成參數配置,然后單擊創建

    參數

    說明

    示例

    存儲卷類型

    選擇OSS

    OSS

    名稱

    PV名稱,自定義輸入。格式要求請參考界面提示。

    oss-pv

    總量

    OSS存儲卷的容量大小。

    說明

    OSS靜態卷的容量僅起聲明效果,實際容量不受限制,可使用量以OSS控制臺顯示為準。

    20Gi

    訪問模式

    按需選擇以下配置:

    • ReadOnlyMany:卷可以被多個Pod以只讀方式掛載。

    • ReadWriteMany:卷可以被多個Pod以讀寫方式掛載。

    ReadWriteMany

    訪問證書

    為保證安全性,將AccessKey信息保存到Secret中。本文以新建保密字典為例。

    • 新建保密字典

    • 命名空間:default

    • 名稱:oss-secret

    • AccessKey ID:********

    • AccessKey Secret:********

    Bucket ID

    選擇OSS Bucket。

    oss-acs-***

    OSS Path

    要掛載的目錄。默認掛載根目錄(/),可按需掛載子目錄(如/dir),需確保該子目錄已存在。

    /

    訪問域名

    OSS Bucket的接入域名(Endpoint)。

    • OSS Bucket和ACS集群屬于相同地域時,選擇私網域名

    • OSS Bucket沒有地域屬性,或者和ACS集群屬于不同地域時,選擇公網域名

    私網域名

    創建完成后,在存儲卷頁面可以看到新創建的PV信息,當前PV還沒綁定PVC。

步驟二:創建PVC

  1. 在集群管理頁面的左側導航欄,選擇存儲 > 存儲聲明

  2. 存儲聲明頁面,單擊創建

  3. 在彈出的對話框中,完成參數配置,然后單擊創建

    參數

    說明

    示例

    存儲聲明類型

    選擇OSS

    OSS

    名稱

    PVC名稱,自定義輸入。格式要求請參考界面提示。

    oss-pvc

    分配模式

    選擇已有存儲卷

    已有存儲卷

    已有存儲卷

    選擇之前創建的PV。

    oss-pv

    總量

    分配給Pod的存儲容量。不能高于OSS存儲卷的容量。

    20Gi

    創建完成后,在存儲聲明頁面可以看到新創建的PVC,該PVC已綁定PV(即OSS存儲卷)。

步驟三:創建應用并掛載OSS

  1. 在集群管理頁面的左側導航欄,選擇工作負載 > 無狀態

  2. 無狀態頁面,單擊使用鏡像創建

  3. 完成Deployment的參數配置,單擊創建

    需要注意的參數如下,其他參數保持默認即可。更多信息,請參見創建無狀態工作負載Deployment

    配置頁

    參數

    說明

    示例

    應用基本信息

    應用名稱

    Deployment名稱,自定義輸入。格式要求請參考界面提示。

    oss-test

    副本數量

    配置Deployment的副本數量。

    2

    容器配置

    鏡像名稱

    輸入用于部署應用的鏡像地址。

    registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest

    所需資源

    設置所需的vCPU和內存資源。

    0.25 vCPU,0.5 GiB

    數據卷

    單擊增加云存儲聲明,然后完成參數配置。

    • 掛載源:選擇之前創建的PVC。

    • 容器路徑:輸入OSS Bucket要掛載到的容器路徑。

    • 掛載源:oss-pvc

    • 容器路徑:/data

  4. 查看應用部署情況。

    1. 無狀態頁面,單擊應用名稱。

    2. 容器組頁簽下,確認Pod已正常運行(狀態為Running)。

驗證OSS的共享存儲和持久化存儲

按照上文示例創建的Deployment中含有2個Pod,2個Pod同時掛載了同一OSS Bucket。您可以通過以下方式進行驗證:

  • 在一個Pod中創建文件,然后另一個Pod中查看文件,以此來驗證共享存儲。

  • 重建Deployment,然后在新創建的Pod中查看OSS Bucket中的數據是否存在,以此來驗證持久化存儲。

  1. 查看Pod信息。

    kubectl get pod | grep oss-test

    返回示例如下:

    oss-test-****-***a   1/1     Running   0          40s
    oss-test-****-***b   1/1     Running   0          40s
  2. 驗證共享存儲。

    1. 在一個Pod中創建文件。

      以名為oss-test-****-***a的Pod作為示例:

      kubectl exec oss-test-****-***a -- touch /data/test.txt
    2. 在另一個Pod中查看文件。

      以名為oss-test-****-***b的Pod作為示例:

      kubectl exec oss-test-****-***b -- ls /data

      預期返回如下,可以看到已共享新建的文件test.txt

      test.txt
  3. 驗證持久化存儲。

    1. 重建Deployment。

      kubectl rollout restart deploy oss-test
    2. 查看Pod,等待新Pod創建成功。

      kubectl get pod | grep oss-test

      返回示例如下:

      oss-test-****-***c   1/1     Running   0          67s
      oss-test-****-***d   1/1     Running   0          49s
    3. 在新Pod中查看文件系統中的數據是否存在。

      以名為oss-test-c***的Pod作為示例:

      kubectl exec oss-test-****-***c -- ls /data

      預期返回如下,可以看到OSS Bucket中的數據依然存在,在新Pod的掛載目錄下可以重新獲取。

      test.txt