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

使用OSS靜態存儲卷

對象存儲OSS(Object Storage Service)是阿里云提供的海量、安全、低成本、高持久的云存儲服務,支持同時被多個Pod掛載,適用于讀文件且對磁盤I/O要求不高的場景,例如讀配置文件、視頻、圖片文件等。您可以通過RRSA鑒權或者RAM用戶AccessKey鑒權任一方式進行權限配置并掛載使用OSS靜態存儲卷,如需定期輪轉AccessKey,在1.26及以上版本的集群中建議您通過RRSA鑒權方式掛載,避免由于AccessKey輪轉導致的ossfs重掛載和業務重啟問題。

前提條件

注意事項

  • OSS不建議跨賬號使用。

  • 建議在使用OSS的Pod的YAML文件中增加健康檢查配置,當容器內OSS目錄不可用時,可自動重啟Pod重新掛載OSS。

    說明

    ACK集群升級時會重啟kubelet,導致ossfs驅動隨之重啟,繼而造成OSS目錄不可用。v1.18.8.45及以上版本的csi-plugin和csi-provisioner組件已修復此問題。請及時升級csi-plugin和csi-provisioner

  • 若您在應用模板中配置了securityContext.fsgroup參數,kubelet在存儲卷掛載完成后會執行chmodchown操作,導致掛載時間延長。若您已配置securityContext.fsgroup參數,且需要減少掛載時間,請參見OSS存儲卷掛載時間延長

  • 通過ossfs進行ls等操作時,將發起HTTP請求到OSS獲取文件的meta信息,如果ls的目標目錄下文件較多(例如超過100,000個,該數值與機器內存大小相關),ossfs將消耗大量系統內存,可能導致Pod發生OOM(Out Of Memory)事件。您可以通過掛載OSS Bucket的子目錄,或對文件較多的目錄進行目錄分級解決此問題。

  • ossfs適用于并發讀場景,配置PVC和PV的訪問模式為ReadOnlyMany。若需寫入數據,建議您通過OSS SDK、ossutil工具等方式實現數據讀寫分離,同時配置OSS存儲卷的訪問模式為ReadWriteMany。具體操作,請參見OSS存儲讀寫分離最佳實踐

    重要
    • 在并發寫場景中,ossfs無法保證數據寫入的一致性。

    • 掛載狀態下,登錄應用Pod或宿主機,在掛載路徑下刪除或變更文件,都會直接刪除或變更OSS Bucket中對應的源文件。您可以開啟OSS Bucket的版本控制,避免誤刪除重要數據,請參見版本控制

  • 當傳輸的文件大于10 MB時,可以將文件切成碎片,分片上傳。分片上傳過程中斷后,如您不再需要這些碎片,可以手動刪除碎片通過生命周期規則刪除碎片

通過RRSA鑒權方式掛載

基于適用于服務賬戶的RAM角色(RAM Roles for Service Accounts,簡稱RRSA)功能,您可以在集群內實現PV維度的OpenAPI權限隔離,從而實現云資源訪問權限的細粒度隔離,降低安全風險。更多信息,請參見通過RRSA配置ServiceAccount的RAM權限實現Pod權限隔離

重要

RRSA鑒權方式掛載僅支持1.26及以上版本的集群,即ACK托管集群ACK Serverless集群,且集群使用的CSI組件為1.30.4及以上版本。若您在1.30.4之前的版本中使用了RRSA功能,請及時參見【產品變更】CSI ossfs版本升級與掛載流程優化增加RAM角色授權配置。

步驟一:創建RAM角色

如果您在集群中首次使用RRSA功能,需要按照以下步驟操作,如果您已經在集群中使用過RRSA鑒權方式掛載OSS存儲卷,則可以跳過本步驟。

  1. 容器服務管理控制臺啟用RRSA功能。請參見啟用RRSA功能

  2. 為OSS存儲卷RRSA鑒權新建RAM角色,即使用RRSA功能扮演的指定角色。

    創建可信實體類型為身份供應商的RAM角色,以demo-role-for-rrsa為例。

    1. 使用阿里云賬號登錄RAM控制臺

    2. 在左側導航欄,選擇身份管理 > 角色,然后在角色頁面,單擊創建角色

    3. 創建角色面板,選擇可信實體類型為身份提供商,然后單擊下一步

    4. 配置角色頁面,配置如下角色信息后,單擊完成

      本示例配置如下。

      配置項

      描述

      角色名稱

      demo-role-for-rrsa。

      備注

      選填有關該角色的備注信息。

      身份提供商類型

      OIDC

      選擇身份提供商

      ack-rrsa-<cluster_id>。其中,<cluster_id>為您的集群ID。

      限制條件

      • oidc:iss:保持默認。

      • oidc:aud:選擇sts.aliyuncs.com

      • oidc:sub:條件判定方式選擇StringEquals,此處需要填入system:serviceaccount:ack-csi-fuse:csi-fuse-ossfs

步驟二:為demo-role-for-rrsa角色授權

  1. 創建如下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"
      }
  2. (可選)若您使用KMS托管的指定CMK ID加密OSS Object,還需要為該RAM用戶配置KMS權限。具體操作,請參見為OSS存儲卷加密

  3. 為demo-role-for-rrsa角色授權。具體操作,請參見為RAM角色授權

    說明

    您也可以通過修改RAM角色信任策略的方式使用已有的授權了OSS權限的RAM角色。具體操作,請參見使用已存在的RAM角色并授權

步驟三:創建PV和PVC

  1. 配置PV使用RRSA鑒權。

    1. 使用以下內容,創建配置RRSA權限認證的pv-rrsa.yaml示例文件。

      apiVersion: v1
      kind: PersistentVolume
      metadata:
        name: pv-oss
        labels:    
          alicloud-pvname: pv-oss
      spec:
        capacity:
          storage: 5Gi
        accessModes:
          - ReadOnlyMany
        persistentVolumeReclaimPolicy: Retain
        csi:
          driver: ossplugin.csi.alibabacloud.com
          volumeHandle: pv-oss # 需要和PV名字一致。
          volumeAttributes:
            bucket: "oss" # 替換為實際Bucket名稱。
            path: /
            url: "oss-cn-hangzhou.aliyuncs.com"
            otherOpts: "-o umask=022 -o max_stat_cache_size=0 -o allow_other"
            authType: "rrsa"
            roleName: "demo-role-for-rrsa"

      參數

      描述

      name

      PV的名稱。

      labels

      配置PV的標簽。

      storage

      OSS的可使用量。

      accessModes

      配置訪問模式,支持ReadOnlyMany和ReadWriteMany。

      選擇ReadOnlyMany時,ossfs將以只讀模式掛載OSS Bucket。

      persistentVolumeReclaimPolicy

      PV回收策略,當前OSS存儲卷僅支持Retain,即刪除PVC時,PV和OSS Bucket中的數據不會被刪除。

      driver

      定義驅動類型。取值為ossplugin.csi.alibabacloud.com,表示使用阿里云OSS CSI插件。

      volumeHandle

      配置PV的名稱。

      bucket

      需要掛載的OSS Bucket。

      path

      表示掛載時相對Bucket根文件的目錄結構,默認為/(v1.14.8.32-c77e277b-aliyun及之后版本的CSI組件支持)。

      ossfs 1.91版本前,該路徑需在OSS側預先創建,詳情請參見ossfs 1.91及以上版本新功能介紹及性能壓測

      url

      掛載OSS的Endpoint,Endpoint以OSS控制臺Bucket概覽頁為準。

      • 掛載節點和Bucket相同地域,或已打通VPC網絡時,請使用內網地址。

      • 掛載節點和Bucket不同地域時,請使用外網地址。

      不同訪問端口的常見填寫格式如下:

      • 內網格式:http://oss-{{regionName}}-internal.aliyuncs.comhttps://oss-{{regionName}}-internal.aliyuncs.com

      • 外網格式:http://oss-{{regionName}}.aliyuncs.comhttps://oss-{{regionName}}.aliyuncs.com

      重要

      vpc100-oss-{{regionName}}.aliyuncs.com的內網訪問端口格式已廢棄,請及時切換。

      otherOpts

      您可以為OSS存儲卷輸入定制化參數,格式為-o *** -o ***,例如-o umask=022 -o max_stat_cache_size=0 -o allow_other

      umask:用于更改ossfs讀文件的權限。例如,設置umask=022后,ossfs文件的權限都會變更為755。通過SDK、OSS控制臺等其他方式上傳的文件在ossfs中默認權限均為640。因此,建議您在讀寫分離場景中配置umask權限。

      max_stat_cache_size:用于指定文件元數據的緩存空間,可緩存多少個文件的元數據。元數據緩存可加快ls操作速度。但若通過OSS、SDK、控制臺、ossutil等方式修改文件,可能會導致元數據未被及時更新。

      allow_other:賦予計算機上其他用戶訪問掛載目錄的權限,但不包含目錄內的文件。

      更多可選參數,請參見ossfs掛載選項說明

      authType

      配置為rrsa,聲明使用RRSA方式鑒權。

      roleName

      配置為以上步驟一:創建RAM角色中已創建或修改的RAM角色名稱。若您需要為不同的PV配置不同的權限,可以創建不同的RAM角色,在PV中配置不同的roleName。

      說明

      如果您需要在RRSA鑒權方式中使用指定的ARNs或ServiceAccount,相關操作,請參見如何在RRSA鑒權方式中使用指定的ARNs或ServiceAccount?

    2. 執行以下命令,在PV中配置RRSA進行權限認證。

      kubectl create -f pv-rrsa.yaml
  2. 執行以下命令創建靜態卷PVC。

    kubectl create -f pvc-oss.yaml

    以下為創建靜態卷PVC的pvc-oss.yaml示例文件。

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-oss
    spec:
      accessModes:
        - ReadOnlyMany
      resources:
        requests:
          storage: 5Gi
      selector:
        matchLabels:
          alicloud-pvname: pv-oss

    參數

    說明

    name

    PVC的名稱。

    accessModes

    配置訪問模式,支持ReadOnlyMany和ReadWriteMany。

    選擇ReadOnlyMany時,ossfs將以只讀模式掛載OSS Bucket。

    storage

    聲明應用使用量,不能大于存儲卷的總量。

    alicloud-pvname

    通過標簽關聯PV,與PV標簽保持一致。

    在集群管理頁左側導航欄選擇存儲 > 存儲聲明,在存儲聲明頁面可以看到創建的PVC。

步驟四:創建應用

創建一個名為oss-static的應用并掛載PVC。

執行以下命令創建oss-static.yaml

kubectl create -f oss-static.yaml

以下為創建應用oss-static.yaml示例文件。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: oss-static
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
        ports:
        - containerPort: 80
        volumeMounts:
          - name: pvc-oss
            mountPath: "/data"
          - name: pvc-oss
            mountPath: "/data1"
        livenessProbe:
          exec:
            command:
            - sh
            - -c
            - cd /data
          initialDelaySeconds: 30
          periodSeconds: 30
      volumes:
        - name: pvc-oss
          persistentVolumeClaim:
            claimName: pvc-oss
  • livenessProbe:配置健康檢查。更多信息,請參見OSS存儲卷

  • mountPath:OSS在容器中掛載的位置。

  • claimName:PVC的名稱,用于綁定PVC。

通過RAM用戶AccessKey鑒權方式掛載

重要
  • 使用該方式掛載時,如果OSS存儲卷引用的AccessKey被撤銷或取消授權,已經掛載了存儲卷的應用將無權訪問OSS并報權限錯誤。您需要修改Secret中的AccessKey信息并重新掛載,此操作將導致應用重啟。AccessKey吊銷后ossfs重掛載流程,請參見OSS存儲掛載權限問題中場景4的解決方案。

  • 如果有定期輪轉AccessKey的需求建議您通過RRSA鑒權方式掛載

步驟一:創建具有OSS訪問權限的RAM用戶并獲取AccessKey

您需要首先獲取RAM用戶的AccessKey信息,以使其擁有OSS Bucket的操作權限。

  1. 創建RAM用戶,如已創建可跳過。具體操作,請參見創建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. (可選)若您使用KMS托管的指定CMK ID加密OSS Object,還需要為該RAM用戶配置KMS權限。具體操作,請參見為OSS存儲卷加密

  4. 為RAM用戶添加OSS權限。具體操作,請參見為RAM用戶授權

  5. 為RAM用戶創建AccessKey。具體操作,請參見獲取AccessKey

步驟二:創建PV和PVC并掛載

您可以通過控制臺和kubectl兩種方式創建存儲卷、存儲聲明并掛載至應用中。

控制臺

1、創建PV

  1. 登錄容器服務管理控制臺,在左側導航欄選擇集群

  2. 集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇存儲 > 存儲卷

  3. 存儲卷頁面,單擊右上角的創建

  4. 創建存儲卷對話框中配置參數。

    配置項

    說明

    示例值

    存儲卷類型

    選擇OSS

    OSS

    名稱

    創建的數據卷的名稱。數據卷名在集群內必須唯一。

    pv-oss

    總量

    所創建存儲卷的容量。

    20GiB

    訪問模式

    支持ReadOnlyMany和ReadWriteMany,默認為ReadOnlyMany。

    選擇ReadOnlyMany時,ossfs將以只讀模式掛載OSS Bucket。

    ReadOnlyMany

    訪問證書

    選擇訪問OSS所需的保密字典,即步驟一獲取的AccessKey ID和AccessKey Secret。

    • 選擇已有保密字典:選擇命名空間保密字典

    • 新建保密字典:配置命名空間名稱AccessKey IDAccessKey Secret

    選擇已有保密字典

    可選參數

    您可以為OSS存儲卷輸入定制化參數,格式為-o *** -o ***,例如-o umask=022 -o max_stat_cache_size=0 -o allow_other

    umask:用于更改ossfs讀文件的權限。例如,設置umask=022后,ossfs文件的權限都會變更為755。通過SDK、OSS控制臺等其他方式上傳的文件在ossfs中默認權限均為640。因此,建議您在讀寫分離場景中配置umask權限。

    max_stat_cache_size:用于指定文件元數據的緩存空間,可緩存多少個文件的元數據。元數據緩存可加快ls操作速度。但若通過OSS、SDK、控制臺、ossutil等方式修改文件,可能會導致元數據未被及時更新。

    allow_other:賦予計算機上其他用戶訪問掛載目錄的權限,但不包含目錄內的文件。

    更多可選參數,請參見ossfs掛載選項說明

    -o umask=022 -o max_stat_cache_size=0 -o allow_other

    Bucket ID

    您要使用的OSS Bucket的名稱。單擊選擇Bucket,在彈出的對話框中選擇所需的Bucket并單擊選擇

    說明

    此處顯示為已配置的AccessKey可獲取到的Bucket列表。

    選擇Bucket

    OSS Path

    表示掛載時相對Bucket根文件的目錄結構,默認為/(v1.14.8.32-c77e277b-aliyun及之后版本的CSI組件支持)。

    ossfs 1.91版本前,該路徑需在OSS側預先創建,詳情請參見ossfs 1.91及以上版本新功能介紹及性能壓測

    /

    訪問域名

    您可以參考以下情況選擇需要的訪問域名。

    • 如果Bucket和ECS實例位于不同地域(Region),請選擇公網域名

    • 如果Bucket和ECS實例位于相同地域,請選擇私網域名

      說明

      通過私網訪問時,默認使用HTTP協議。若您需要指定網絡傳輸協議為HTTPS,可使用kubectl命令行方式創建靜態PV。

    公網域名

    標簽

    為該存儲卷添加標簽。

    pv-oss

  5. 參數配置完成后,單擊創建

2、創建PVC

  1. 集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇存儲 > 存儲聲明

  2. 存儲聲明頁面,單擊右上角的創建

  3. 創建存儲聲明頁面中,填寫界面參數。

    配置項

    說明

    示例值

    存儲聲明類型

    選擇OSS

    OSS

    名稱

    創建的數據卷的名稱,在集群內必須唯一。

    pvc-oss

    分配模式

    選擇已有存儲卷。

    說明

    若未創建存儲卷,您可以設置分配模式創建存儲卷,配置創建存儲卷參數。

    pv-oss

    已有存儲卷

    單擊選擇已有存儲類,在目標存儲卷右側操作列,單擊選擇,選擇存儲卷。

    總量

    所創建存儲卷的容量。

    說明

    所創建的存儲卷容量不能超過存儲空間容量。

    20GiB

  4. 單擊創建

    創建成功后可以在列表中看到csi-oss-pvc,并且已綁定相應的存儲卷。

3、創建應用

  1. 集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇工作負載 > 無狀態

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

  3. 配置創建應用的參數信息,配置完成后,單擊創建

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

    配置頁

    參數

    說明

    示例

    應用基本信息

    應用名稱

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

    test-oss

    副本數量

    Deployment的副本數量。

    2

    容器配置

    鏡像名稱

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

    anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6

    所需資源

    所需的vCPU和內存資源。

    0.25 vCPU,0.5 GiB

    數據卷

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

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

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

    • 掛載源:pvc-oss

    • 容器路徑:/data

    image.png

  4. 查看應用部署狀態。

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

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

kubectl

1、創建PV和PVC

您可以通過以下方式創建PV和PVC。

  • 方式一:使用Secret創建PV及PVC

    通過Secret為CSI組件提供AccessKey信息。

    重要
    • 使用該方式掛載時,如果OSS存儲卷引用的AccessKey被撤銷或取消授權,已經掛載了存儲卷的應用將無權訪問OSS并報權限錯誤。您需要修改Secret中的AccessKey信息并重新掛載,此操作將導致應用重啟。AccessKey吊銷后ossfs重掛載流程,請參見OSS存儲掛載權限問題中場景4的解決方案。

    • 如果有定期輪轉AccessKey的需求建議您通過RRSA鑒權方式掛載

  • 方式二:直接在PV中配置AccessKey

    重要
    • 使用該方式掛載時,如果OSS存儲卷引用的AccessKey被撤銷或取消授權,已經掛載了存儲卷的應用將無權訪問OSS并報權限錯誤。您需要重建PV中的AccessKey信息并重新部署應用。

    • 如果有定期輪轉AccessKey的需求建議您通過RRSA鑒權方式掛載

使用Secret創建

  1. 創建Secret。

    以下為通過Secret配置AccessKey信息的YAML示例文件。

    apiVersion: v1
    kind: Secret
    metadata:
      name: oss-secret
      namespace: default
    stringData:
      akId: <yourAccessKey ID>
      akSecret: <yourAccessKey Secret>
    說明

    創建Secret選擇的Namespace需要和應用所在的Namespace一致。

    本示例中,akIdakSecret需要替換為步驟一獲取的AccessKey ID和AccessKey Secret。

  2. 執行以下命令創建靜態卷PV。

    kubectl create -f pv-oss.yaml

    以下為創建靜態卷PV的pv-oss.yaml示例文件。

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: pv-oss
      labels:
        alicloud-pvname: pv-oss
    spec:
      capacity:
        storage: 5Gi
      accessModes:
        - ReadOnlyMany
      persistentVolumeReclaimPolicy: Retain
      csi:
        driver: ossplugin.csi.alibabacloud.com
        volumeHandle: pv-oss # 需要和PV名字一致。
        nodePublishSecretRef:
          name: oss-secret
          namespace: default
        volumeAttributes:
          bucket: "oss" #替換為實際Bucket名稱。
          url: "oss-cn-hangzhou.aliyuncs.com"
          otherOpts: "-o umask=022 -o max_stat_cache_size=0 -o allow_other"
          path: "/"

    參數

    描述

    name

    PV的名稱。

    labels

    配置PV的標簽。

    storage

    OSS的可使用量。

    accessModes

    配置訪問模式,支持ReadOnlyMany和ReadWriteMany。

    選擇ReadOnlyMany時,ossfs將以只讀模式掛載OSS Bucket。

    persistentVolumeReclaimPolicy

    PV回收策略,當前OSS存儲卷僅支持Retain,即刪除PVC時,PV和OSS Bucket中的數據不會被刪除。

    driver

    定義驅動類型。取值為ossplugin.csi.alibabacloud.com,表示使用阿里云OSS CSI插件。

    nodePublishSecretRef

    定義掛載PV時通過Secret對象來獲取AccessKey信息。

    volumeHandle

    配置PV的名稱。

    bucket

    需要掛載的OSS Bucket。

    url

    掛載OSS的Endpoint,Endpoint以OSS控制臺Bucket概覽頁為準。

    • 掛載節點和Bucket相同地域,或已打通VPC網絡時,請使用內網地址。

    • 掛載節點和Bucket不同地域時,請使用外網地址。

    不同訪問端口的常見填寫格式如下:

    • 內網格式:http://oss-{{regionName}}-internal.aliyuncs.comhttps://oss-{{regionName}}-internal.aliyuncs.com

    • 外網格式:http://oss-{{regionName}}.aliyuncs.comhttps://oss-{{regionName}}.aliyuncs.com

    重要

    vpc100-oss-{{regionName}}.aliyuncs.com的內網訪問端口格式已廢棄,請及時切換。

    otherOpts

    您可以為OSS存儲卷輸入定制化參數,格式為-o *** -o ***,例如-o umask=022 -o max_stat_cache_size=0 -o allow_other

    umask:用于更改ossfs讀文件的權限。例如,設置umask=022后,ossfs文件的權限都會變更為755。通過SDK、OSS控制臺等其他方式上傳的文件在ossfs中默認權限均為640。因此,建議您在讀寫分離場景中配置umask權限。

    max_stat_cache_size:用于指定文件元數據的緩存空間,可緩存多少個文件的元數據。元數據緩存可加快ls操作速度。但若通過OSS、SDK、控制臺、ossutil等方式修改文件,可能會導致元數據未被及時更新。

    allow_other:賦予計算機上其他用戶訪問掛載目錄的權限,但不包含目錄內的文件。

    更多可選參數,請參見ossfs掛載選項說明

    path

    表示掛載時相對Bucket根文件的目錄結構,默認為/(v1.14.8.32-c77e277b-aliyun及之后版本的CSI組件支持)。

    ossfs 1.91版本前,該路徑需在OSS側預先創建,詳情請參見ossfs 1.91及以上版本新功能介紹及性能壓測

    1. 登錄容器服務管理控制臺,在左側導航欄選擇集群

    2. 集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇存儲 > 存儲卷

      存儲卷頁面,可查看已創建的PV。

  3. 執行以下命令創建靜態卷PVC。

    kubectl create -f pvc-oss.yaml

    以下為創建靜態卷PVC的pvc-oss.yaml示例文件。

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-oss
    spec:
      accessModes:
        - ReadOnlyMany
      resources:
        requests:
          storage: 5Gi
      selector:
        matchLabels:
          alicloud-pvname: pv-oss

    參數

    說明

    name

    PVC的名稱。

    accessModes

    配置訪問模式,支持ReadOnlyMany和ReadWriteMany。

    選擇ReadOnlyMany時,ossfs將以只讀模式掛載OSS Bucket。

    storage

    聲明應用使用量,不能大于存儲卷的總量。

    alicloud-pvname

    通過標簽關聯PV,與PV標簽保持一致。

    在集群管理頁左側導航欄選擇存儲 > 存儲聲明,在存儲聲明頁面可以看到創建的PVC。

直接在PV中配置AccessKey

  1. 執行以下命令,直接在PV中配置AccessKey信息。

    kubectl create -f pv-accesskey.yaml

    以下為配置AccessKey信息的pv-accesskey.yaml示例文件。

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: pv-oss
      labels:
        alicloud-pvname: pv-oss
    spec:
      capacity:
        storage: 5Gi
      accessModes:
        - ReadOnlyMany
      persistentVolumeReclaimPolicy: Retain
      csi:
        driver: ossplugin.csi.alibabacloud.com
        volumeHandle: pv-oss # 需要和PV名字一致。
        volumeAttributes:
          bucket: "oss" #替換為實際Bucket名稱。
          url: "oss-cn-hangzhou.aliyuncs.com"
          otherOpts: "-o umask=022 -o max_stat_cache_size=0 -o allow_other"
          akId: "***"
          akSecret: "***"

    參數

    描述

    name

    PV的名稱。

    labels

    配置PV的標簽。

    storage

    OSS的可使用量。

    accessModes

    配置訪問模式,支持ReadOnlyMany和ReadWriteMany。

    選擇ReadOnlyMany時,ossfs將以只讀模式掛載OSS Bucket。

    persistentVolumeReclaimPolicy

    PV回收策略,當前OSS存儲卷僅支持Retain,即刪除PVC時,PV和OSS Bucket中的數據不會被刪除。

    driver

    定義驅動類型。取值為ossplugin.csi.alibabacloud.com,表示使用阿里云OSS CSI插件。

    volumeHandle

    配置PV的名稱。

    bucket

    需要掛載的OSS Bucket。

    url

    掛載OSS的Endpoint,Endpoint以OSS控制臺Bucket概覽頁為準。

    • 掛載節點和Bucket相同地域,或已打通VPC網絡時,請使用內網地址。

    • 掛載節點和Bucket不同地域時,請使用外網地址。

    不同訪問端口的常見填寫格式如下:

    • 內網格式:http://oss-{{regionName}}-internal.aliyuncs.comhttps://oss-{{regionName}}-internal.aliyuncs.com

    • 外網格式:http://oss-{{regionName}}.aliyuncs.comhttps://oss-{{regionName}}.aliyuncs.com

    重要

    vpc100-oss-{{regionName}}.aliyuncs.com的內網訪問端口格式已廢棄,請及時切換。

    otherOpts

    您可以為OSS存儲卷輸入定制化參數,格式為-o *** -o ***,例如-o umask=022 -o max_stat_cache_size=0 -o allow_other

    umask:用于更改ossfs讀文件的權限。例如,設置umask=022后,ossfs文件的權限都會變更為755。通過SDK、OSS控制臺等其他方式上傳的文件在ossfs中默認權限均為640。因此,建議您在讀寫分離場景中配置umask權限。

    max_stat_cache_size:用于指定文件元數據的緩存空間,可緩存多少個文件的元數據。元數據緩存可加快ls操作速度。但若通過OSS、SDK、控制臺、ossutil等方式修改文件,可能會導致元數據未被及時更新。

    allow_other:賦予計算機上其他用戶訪問掛載目錄的權限,但不包含目錄內的文件。

    更多可選參數,請參見ossfs掛載選項說明

    path

    表示掛載時相對Bucket根文件的目錄結構,默認為/(v1.14.8.32-c77e277b-aliyun及之后版本的CSI組件支持)。

    ossfs 1.91版本前,該路徑需在OSS側預先創建,詳情請參見ossfs 1.91及以上版本新功能介紹及性能壓測

    akId

    配置為上一步獲取的AccessKey ID。

    akSecret

    配置為上一步獲取的AccessKey Secret。

  2. 執行以下命令創建靜態卷PVC。

    kubectl create -f pvc-oss.yaml

    以下為創建靜態卷PVC的pvc-oss.yaml示例文件。

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-oss
    spec:
      accessModes:
        - ReadOnlyMany
      resources:
        requests:
          storage: 5Gi
      selector:
        matchLabels:
          alicloud-pvname: pv-oss

    參數

    說明

    name

    PVC的名稱。

    accessModes

    配置訪問模式,支持ReadOnlyMany和ReadWriteMany。

    選擇ReadOnlyMany時,ossfs將以只讀模式掛載OSS Bucket。

    storage

    聲明應用使用量,不能大于存儲卷的總量。

    alicloud-pvname

    通過標簽關聯PV,與PV標簽保持一致。

    在集群管理頁左側導航欄選擇存儲 > 存儲聲明,在存儲聲明頁面可以看到創建的PVC。

2、創建應用

創建一個名為oss-static的應用并掛載PVC。

執行以下命令創建oss-static.yaml

kubectl create -f oss-static.yaml

以下為創建應用oss-static.yaml示例文件。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: oss-static
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
        ports:
        - containerPort: 80
        volumeMounts:
          - name: pvc-oss
            mountPath: "/data"
          - name: pvc-oss
            mountPath: "/data1"
        livenessProbe:
          exec:
            command:
            - sh
            - -c
            - cd /data
          initialDelaySeconds: 30
          periodSeconds: 30
      volumes:
        - name: pvc-oss
          persistentVolumeClaim:
            claimName: pvc-oss
  • livenessProbe:配置健康檢查。更多信息,請參見OSS存儲卷

  • mountPath:OSS在容器中掛載的位置。

  • claimName:PVC的名稱,用于綁定PVC。

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

  1. 查看部署oss-static應用所在的Pod。

    kubectl get pod

    預期輸出:

    NAME                             READY   STATUS    RESTARTS   AGE
    oss-static-66fbb85b67-d****      1/1     Running   0          1h
    oss-static-66fbb85b67-l****      1/1     Running   0          1h
  2. 在任意Pod下創建tmpfile文件。以名為oss-static-66fbb85b67-d****的Pod為例。

    • 若以ReadWriteMany方式掛載,執行以下命令,在/data路徑下創建tmpfile文件。

      kubectl exec oss-static-66fbb85b67-d**** -- touch /data/tmpfile
    • 若以ReadOnlyMany方式掛載,可通過OSS控制臺cp(上傳文件)等方式上傳tmpfile文件至OSS Bucket對應的路徑。

  3. 在兩個Pod掛載路徑下查看文件。

    以名oss-static-66fbb85b67-d****的Pod掛載路徑為data,名為oss-static-66fbb85b67-l****的掛載路徑為data1為例。

    kubectl exec oss-static-66fbb85b67-d**** -- ls /data | grep tmpfile
    kubectl exec oss-static-66fbb85b67-l**** -- ls /data1 | grep tmpfile

    預期輸出:

    tmpfile

    預期輸出表明,兩個Pod的掛載路徑下均存在此文件,說明兩個Pod共享數據。

    說明

    若您無法看到預期輸出,請確認CSI組件版本為v1.20.7及以上版本。更多信息,請參見csi-plugin

  4. 重建Pod。

    kubectl delete pod oss-static-66fbb85b67-d****

    預期輸出:

    pod "oss-static-66fbb85b67-d****" deleted
  5. 驗證Pod刪除后,存儲空間里創建的文件是否還存在。

    1. 執行以下命令,查看重建的Pod名稱。

      kubectl get pod

      預期輸出:

      NAME                             READY   STATUS    RESTARTS   AGE
      oss-static-66fbb85b67-l****      1/1     Running   0          1h
      oss-static-66fbb85b67-z****      1/1     Running   0          40s
    2. 執行以下命令,查看/data路徑下的文件。

      kubectl exec oss-static-66fbb85b67-z**** -- ls /data | grep tmpfile

      預期輸出:

      tmpfile

      預期輸出表明,temfile文件仍然存在,說明OSS的數據可持久化保存。

相關文檔