Todos os produtos
Search
Central de documentação

Container Compute Service:Use a static OSS volume

Última atualização: Aug 29, 2026

Os volumes do Object Storage Service (OSS) oferecem armazenamento compartilhado e persistente para dados não estruturados, como imagens, áudio e vídeo. Os dados gravados em um bucket do OSS permanecem disponíveis para todos os pods que montam o volume e persistem após reinicializações dos pods.

Contexto

O OSS é uma solução de armazenamento em cloud segura, econômica, de alta capacidade e altamente confiável. É ideal para armazenar dados raramente modificados após a gravação, além de dados não estruturados, como imagens, áudio e vídeo. Para mais informações, consulte Storage overview.

Clientes de volume do OSS

Um volume do OSS utiliza um cliente Filesystem in Userspace (FUSE) para montar o armazenamento de objetos como um sistema de arquivos local (FS). Em comparação com o armazenamento local tradicional e o armazenamento em bloco, os volumes do OSS apresentam algumas limitações de compatibilidade POSIX. O Alibaba Cloud Container Compute Service (ACS) suporta os seguintes clientes de volume do OSS.

Casos de uso

Cliente

Tipo

Descrição

A maioria dos cenários, incluindo operações de leitura/gravação e configuração de permissões de usuário.

ossfs 1.0

FUSE

Suporta a maioria das operações POSIX, incluindo escrita por adição (append write), escrita aleatória e definição de permissões de usuário.

Cenários somente leitura ou cargas de trabalho que envolvem apenas escritas sequenciais por adição. Exemplos incluem treinamento e inferência de modelos de IA, processamento de big data e direção autônoma.

ossfs 2.0

FUSE

Suporta leituras completas e escritas sequenciais por adição. Ideal para cenários com muita leitura, como treinamento e inferência de modelos de IA, processamento de big data e direção autônoma. Este cliente melhora significativamente o desempenho de leitura de dados.

Antes de escolher um cliente, considere o seguinte:

  • Padrão de leitura/gravação desconhecido — Se não tiver certeza sobre o modelo de leitura/gravação da sua carga de trabalho, use o ossfs 1.0. Ele oferece melhor compatibilidade POSIX e garante maior estabilidade operacional.

  • Caminhos de leitura e gravação separáveis — Para cenários onde as operações de leitura e gravação podem ser separadas, como quando não ocorrem simultaneamente ou têm como alvo arquivos diferentes (por exemplo, salvamento de checkpoints ou logs persistentes), use volumes separados. Por exemplo, monte um caminho somente leitura usando um volume ossfs 2.0 e um caminho de gravação usando um volume ossfs 1.0.

  • Poder de computação exigido pelo ossfs 2.0 — O ossfs 2.0 suporta apenas poder de computação GPU. Para usar poder de computação CPU, abra um ticket para solicitar acesso.

  • Método de montagem suportado pelo ossfs 2.0 — O ACS suporta a montagem de volumes estáticos ossfs 2.0 apenas via kubectl.

Suporte à API POSIX

A tabela a seguir compara o suporte à API POSIX entre ossfs 1.0 e ossfs 2.0.

Categoria de recurso

Operação

ossfs 1.0

ossfs 2.0

Operações básicas de objeto

open

Suportado

Suportado

Operações básicas de objeto

flush

Suportado

Suportado

Operações básicas de objeto

close

Suportado

Suportado

Leitura e gravação de arquivos

read

Suportado

Suportado

Leitura e gravação de arquivos

write

Suporta escritas aleatórias (requer cache de disco)

Suporta apenas escritas sequenciais (não requer cache de disco)

Leitura e gravação de arquivos

truncate

Suportado (pode ser truncado para qualquer tamanho)

Suporta apenas truncar um objeto para comprimento zero

Operações de metadados de arquivo

create

Suportado

Suportado

Operações de metadados de arquivo

unlink

Suportado

Suportado

Operações de metadados de arquivo

rename

Suportado

Suportado

Operações de diretório

mkdir

Suportado

Suportado

Operações de diretório

readdir

Suportado

Suportado

Operações de diretório

rmdir

Suportado

Suportado

Permissões e atributos

getattr

Suportado

Suportado

Permissões e atributos

chmod

Suportado

Não suportado

Permissões e atributos

chown

Suportado

Não suportado

Permissões e atributos

utimes

Suportado

Suportado

Recursos estendidos

setxattr

Suportado

Não suportado

Recursos estendidos

symlink

Suportado

Não suportado

Recursos estendidos

lock

Não suportado

Não suportado

Benchmark de desempenho

O ossfs 2.0 oferece melhorias significativas de desempenho em relação ao ossfs 1.0 em operações de leitura/gravação sequencial e leituras de arquivos pequenos com alta concorrência.

  • Desempenho de escrita sequencial: Em cenários de escrita sequencial de objetos grandes com thread única, o ossfs 2.0 fornece quase 18 vezes a largura de banda do ossfs 1.0.

  • Desempenho de leitura sequencial: Em cenários de leitura sequencial de objetos grandes com thread única ou múltiplas threads (4 threads), o ossfs 2.0 fornece mais de 3 vezes a largura de banda do ossfs 1.0.

  • Desempenho de leitura concorrente de objetos pequenos: Em cenários de leitura de objetos pequenos com alta concorrência (128 threads), o ossfs 2.0 fornece mais de 20 vezes a largura de banda do ossfs 1.0.

    Se o desempenho de leitura/gravação, como latência ou throughput, não atender às suas expectativas, consulte Best practices for tuning the performance of OSS volumes.

Pré-requisitos

O add-on managed-csiprovisioner deve estar instalado no cluster ACS.

Nota

Acesse a página de gerenciamento de clusters ACS no console ACS. No painel de navegação à esquerda da página de gerenciamento do cluster, escolha Operations > Add-ons. Na aba Storage, verifique se o managed-csiprovisioner está instalado.

Observações

As observações a seguir aplicam-se principalmente a cenários gerais de leitura/gravação que utilizam o cliente ossfs 1.0. O cliente ossfs 2.0 é focado em leitura e suporta apenas um subconjunto de operações POSIX.

  • O ACS suporta apenas volumes estáticos do OSS, não volumes dinâmicos.

  • Hard links não são suportados.

  • Não é possível montar buckets cuja classe de armazenamento seja Archive, Cold Archive ou Deep Cold Archive.

  • Escritas aleatórias ou por adição em um arquivo criam um novo arquivo localmente e depois o reenviam para o servidor OSS. Devido à natureza do armazenamento de objetos, observe o seguinte:

    • Operações de renomeação para arquivos e diretórios não são atômicas.

    • Evite escritas concorrentes ou operações como compactação e descompactação diretamente no diretório de montagem. Coordene as escritas concorrentes no lado do cliente, por exemplo, serializando as escritas que têm como alvo o mesmo objeto. Caso contrário, escritas concorrentes, compactação e descompactação no diretório de montagem podem deixar dados ou metadados inconsistentes, e o ACS não protege contra tais inconsistências.

  • Por padrão, a operação readdir em volumes ossfs 1.0 envia numerosas requisições HeadObject para recuperar informações estendidas de todos os objetos em um diretório, o que pode degradar o desempenho geral do ossfs em diretórios com muitos arquivos. Se sua carga de trabalho não for sensível a atributos de arquivo, como permissões, ative o parâmetro -o readdir_optimize para melhorar o desempenho. Para mais informações, consulte readdir optimization.

Criar um bucket do OSS e obter detalhes

  1. Crie um bucket do OSS.

    1. Faça login no console do OSS. No painel de navegação à esquerda, clique em Buckets.

    2. Clique em Create Bucket.

    3. No painel Create Bucket, configure os parâmetros necessários e clique em Create.

      A tabela a seguir descreve os principais parâmetros. Para mais informações, consulte Create buckets.

      Parâmetro

      Descrição

      Bucket Name

      Insira um nome personalizado. O nome do bucket deve ser globalmente único no OSS e não pode ser alterado após a criação. Siga os requisitos de formatação exibidos na interface.

      Region

      Selecione Specific Region e escolha a mesma região do seu cluster ACS. Isso permite que os pods no cluster acessem o bucket pela rede interna.

  2. (Opcional) Para montar um subdiretório de um bucket do OSS, crie o subdiretório primeiro.

    1. Na página Buckets, clique no nome do bucket desejado.

    2. Na página de detalhes do bucket, no painel de navegação à esquerda, escolha Object Management > Objects.

    3. Clique em Create Directory para criar diretórios no bucket conforme necessário.

  3. Obtenha o endpoint do bucket do OSS.

    1. Na página Buckets, clique no nome do bucket desejado.

    2. Na página de detalhes do bucket, clique na aba Overview. Na seção Port, copie o endpoint correspondente à sua implantação:

      • Se o bucket do OSS e o cluster ACS estiverem na mesma região, copie o endpoint interno.

      • Se o bucket do OSS for agnóstico em relação à região ou estiver em uma região diferente do cluster ACS, copie o endpoint público.

  4. Obtenha um AccessKey ID e um AccessKey Secret para acessar o OSS. Para mais informações, consulte Obtain an AccessKey pair.

    Se precisar montar um bucket do OSS pertencente a outra conta Alibaba Cloud, obtenha o par de AccessKey dessa conta.

Montar um volume do OSS

Selecione a aba correspondente ao cliente escolhido. Cada procedimento cria um Persistent Volume (PV) e um Persistent Volume Claim (PVC) e, em seguida, monta o volume em uma aplicação.

Volume ossfs 1.0

kubectl

Etapa 1: Criar um PV
  1. Salve o conteúdo YAML a seguir como 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 umask=022 -o allow_other"
    Nota

    Este YAML cria um Secret e um PV. O Secret armazena seu par de AccessKey, usado pelo PV para acesso seguro. Substitua os valores de akId e akSecret pelo seu AccessKey ID e AccessKey Secret reais.

    A tabela a seguir descreve os parâmetros do PV:

    Parâmetro

    Descrição

    alicloud-pvname

    Rótulo do PV, usado para vinculá-lo a um PVC.

    storageClassName

    Este valor serve apenas para vinculação do PVC e não precisa corresponder a um objeto StorageClass existente.

    storage

    Capacidade do volume do OSS. A capacidade especificada para um volume estático do OSS tem fins apenas declarativos. A capacidade real não é limitada, e a capacidade disponível baseia-se no uso exibido no console do OSS.

    accessModes

    Modo de acesso. Valores válidos: ReadOnlyMany, que permite a vários pods montar o volume como somente leitura, e ReadWriteMany, que permite a vários pods montar o volume como leitura e gravação.

    persistentVolumeReclaimPolicy

    Política de recuperação do PV.

    driver

    Tipo de driver. Defina como ossplugin.csi.alibabacloud.com para usar o plugin Container Storage Interface (CSI) do Alibaba Cloud OSS.

    volumeHandle

    UID (identificador único) do PV. Deve ser igual a metadata.name.

    nodePublishSecretRef

    Referencia o Secret que contém o par de AccessKey para autorização.

    bucket

    Nome do bucket do OSS. Substitua o valor de bucket pelo nome real do seu bucket do OSS.

    url

    Endpoint do bucket do OSS. Substitua o valor de url pelo endpoint real do seu bucket do OSS.

    • Se o bucket do OSS e o cluster ACS estiverem na mesma região, use o endpoint interno. Por exemplo, oss-cn-shanghai-internal.aliyuncs.com.

    • Se o bucket do OSS for agnóstico em relação à região ou estiver em uma região diferente do cluster ACS, use o endpoint público. Por exemplo, oss-cn-shanghai.aliyuncs.com.

    otherOpts

    Especifica opções personalizadas de montagem para o volume do OSS no formato -o -o . Por exemplo, -o umask=022 -o max_stat_cache_size=100000 -o allow_other.

    Expandir para ver detalhes

    • umask: altera as permissões que o ossfs usa para ler arquivos. Por exemplo, umask=022 altera as permissões dos arquivos do ossfs para 755. Isso resolve permissões insuficientes dentro do ponto de montagem para objetos carregados por outros meios, como um SDK ou o console do OSS, que possuem permissões padrão de 640. (Recomendado) Defina esta opção para separação de leitura/gravação ou acesso multiusuário.

    • max_stat_cache_size: define o número máximo de entradas no cache de metadados, como 100000. Armazenar metadados de objetos em memória melhora o desempenho de operações como ls e stat. No entanto, esse cache não detecta imediatamente alterações feitas pelo console do OSS, um SDK ou ossutil, então sua aplicação pode ler dados inconsistentes. Se você tiver requisitos rigorosos de consistência de dados, defina como 0 para desativar o cache ou use o parâmetro stat_cache_expire para reduzir o tempo de expiração do cache. Ambas as configurações reduzem o desempenho de leitura.

    • allow_other: permite que usuários diferentes do usuário que realizou a montagem acessem os arquivos e diretórios no ponto de montagem. Use esta opção em ambientes compartilhados multiusuário onde outros usuários também precisam acessar os dados.

    Para mais configurações, consulte Mount options e Best practices.

  2. Crie o Secret e o PV.

    kubectl create -f oss-pv.yaml
  3. Visualize o PV.

    kubectl get pv

    Saída esperada:

    NAME     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   VOLUMEATTRIBUTESCLASS   REASON   AGE
    oss-pv   20Gi       RWX            Retain           Available           test           <unset>                          9s
Etapa 2: Criar um PVC
  • Salve o conteúdo YAML a seguir como 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

A tabela a seguir descreve os parâmetros:

Parâmetro

Descrição

storageClassName

Este valor serve apenas para vinculação do PVC e não precisa corresponder a um objeto StorageClass existente. Deve ser igual ao spec.storageClassName do PV.

accessModes

Modo de acesso.

storage

Quantidade de armazenamento a ser solicitada. Este valor não deve ser maior que a capacidade do PV.

alicloud-pvname

Rótulo do PV a ser vinculado. Deve ser igual a metadata.labels.alicloud-pvname do PV.

  • Crie o PVC.

kubectl create -f oss-pvc.yaml
  • Visualize o PVC.

kubectl get pvc

A saída esperada mostra que o PVC está vinculado ao PV criado na Etapa 1.

NAME      STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   VOLUMEATTRIBUTESCLASS   AGE
oss-pvc   Bound    oss-pv   20Gi       RWX            test           <unset>                 6s
Etapa 3: Criar uma aplicação e montar o volume
  • Crie um arquivo chamado oss-test.yaml com o seguinte conteúdo.

    O exemplo YAML a seguir cria um Deployment com dois pods. Ambos os pods solicitam armazenamento usando o PVC chamado oss-pvc, e o caminho de montagem para ambos é /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
  • Crie o Deployment e monte o volume do OSS.

kubectl create -f oss-test.yaml
  • Verifique o status dos pods no Deployment.

kubectl get pod | grep oss-test

A saída de exemplo indica que dois pods foram criados.

oss-test-****-***a   1/1     Running   0          28s
oss-test-****-***b   1/1     Running   0          28s
  • Verifique o caminho de montagem.

    O comando a seguir lista os dados no ponto de montagem do bucket do OSS. Por padrão, a saída é vazia.

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

Console

Etapa 1: Criar um PV
  1. Faça login no console do ACS.

  2. Na página Clusters, clique no nome do cluster para acessar a página de gerenciamento do cluster.

  3. No painel de navegação à esquerda da página de gerenciamento do cluster, escolha Volumes > Persistent Volumes.

  4. Na página Persistent Volumes, clique em Create.

  5. Na caixa de diálogo Create, configure os parâmetros e clique no botão Create.

    Parâmetro

    Descrição

    Exemplo

    PV Type

    Tipo de volume. Selecione OSS.

    OSS

    Volume Name:

    Nome do PV. Especifique um nome personalizado de acordo com os requisitos de formatação exibidos na interface.

    oss-pv

    Capacity

    Capacidade do volume do OSS. A capacidade especificada para um volume estático do OSS tem fins apenas declarativos. A capacidade real não é limitada, e a capacidade disponível baseia-se no uso exibido no console do OSS.

    20Gi

    Access Mode

    Modo de acesso. Selecione uma opção conforme suas necessidades:

    • ReadOnlyMany: O volume pode ser montado como somente leitura por vários pods.

    • ReadWriteMany: O volume pode ser montado como leitura e gravação por vários pods.

    ReadWriteMany

    Access Certificate

    Para segurança, armazene as informações do AccessKey em um Secret. Este exemplo usa a opção Create Secret.

    • Create Secret

    • namespace: default

    • Name: oss-secret

    • AccessKey ID: ****

    • AccessKey Secret: ****

    Bucket ID:

    Selecione um bucket do OSS.

    oss-acs-***

    OSS Path

    Diretório a ser montado. O padrão é o diretório raiz (/). Se você especificar um subdiretório, como /dir, certifique-se de que ele exista.

    /

    Endpoint:

    Endpoint do bucket do OSS.

    • Se o bucket do OSS e o cluster ACS estiverem na mesma região, selecione a opção Internal Endpoint.

    • Se o bucket do OSS for agnóstico em relação à região ou estiver em uma região diferente do cluster ACS, selecione a opção Public Endpoint.

    Private Endpoint

    Após a criação do PV, visualize suas informações na página Persistent Volumes. O PV ainda não está vinculado a um PVC.

Etapa 2: Criar um PVC
  1. No painel de navegação à esquerda da página de gerenciamento do cluster, escolha Volumes > Persistent Volume Claims.

  2. Na página Persistent Volume Claims, clique em Create.

  3. Na caixa de diálogo exibida, configure os parâmetros e clique no botão Create.

    Parâmetro

    Descrição

    Exemplo

    PVC Type

    Tipo de volume. Selecione OSS.

    OSS

    Name

    Nome do PVC. Especifique um nome personalizado de acordo com os requisitos de formatação exibidos na interface.

    oss-pvc

    Allocation Mode

    Modo de alocação. Selecione a opção Existing Volumes.

    Existing PV

    Existing Volumes

    Selecione o PV que você criou.

    oss-pv

    Capacity

    Quantidade de armazenamento a ser solicitada. Este valor não pode exceder a capacidade do PV.

    20Gi

    Após a criação do PVC, visualize-o na página Persistent Volume Claims. O PVC agora está vinculado ao PV (o volume do OSS).

Etapa 3: Criar uma aplicação e montar o volume
  1. No painel de navegação à esquerda da página de gerenciamento do cluster, escolha Workloads > Deployments.

  2. Na página Deployments, clique no botão Create from Image.

  3. Configure os parâmetros do Deployment e clique no botão Create.

    A tabela a seguir descreve os principais parâmetros. Mantenha os valores padrão para os demais parâmetros. Para mais informações, consulte Create a Deployment.

    Seção

    Parâmetro

    Descrição

    Exemplo

    Basic Information

    Application Name

    Nome do Deployment. Especifique um nome personalizado de acordo com os requisitos de formatação exibidos na interface.

    oss-test

    Basic Information

    Replicas:

    Número de réplicas (pods) para o Deployment.

    2

    Container

    Image Name

    Endereço da imagem usada para implantar a aplicação.

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

    Container

    Required Resources

    Defina os recursos necessários de vCPU e memória.

    0,25 vCPU, 0,5 GiB

    Volume

    Add PVC

    Clique no botão e configure os parâmetros:

    • Mount Source: Selecione o PVC que você criou.

    • Container Path: Insira o caminho do contêiner onde deseja montar o bucket do OSS.

    • Mount source: oss-pvc

    • Container path: /data

  4. Verifique o status do Deployment da aplicação.

    1. Na página Deployments, clique no nome da aplicação.

    2. Na aba Pods, certifique-se de que os pods estejam no estado Running.

Volume ossfs 2.0

O ACS suporta a montagem de volumes estáticos ossfs 2.0 apenas via kubectl.

Etapa 1: Criar um PV

  1. Salve o conteúdo YAML a seguir como 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:
          fuseType: ossfs2 # Explicitly specifies the ossfs 2.0 client
          bucket: "<your OSS Bucket Name>"
          url: "<your OSS Bucket Endpoint>"
          otherOpts: "-o close_to_open=false" # Note: Supported mount options are not compatible with the ossfs 1.0 client.
    Nota

    Este YAML cria um Secret e um PV. O Secret armazena seu par de AccessKey, usado pelo PV para acesso seguro. Substitua os valores de akId e akSecret pelo seu AccessKey ID e AccessKey Secret reais.

    A tabela a seguir descreve os parâmetros do PV:

    Parâmetro

    Descrição

    alicloud-pvname

    Rótulo do PV, usado para vinculá-lo a um PVC.

    storageClassName

    Este valor serve apenas para vinculação do PVC e não precisa corresponder a um objeto StorageClass existente.

    storage

    Capacidade do volume do OSS. A capacidade especificada para um volume estático do OSS tem fins apenas declarativos. A capacidade real não é limitada, e a capacidade disponível baseia-se no uso exibido no console do OSS.

    accessModes

    Modo de acesso. Valores válidos: ReadOnlyMany, que permite a vários pods montar o volume como somente leitura, e ReadWriteMany, que permite a vários pods montar o volume como leitura e gravação.

    persistentVolumeReclaimPolicy

    Política de recuperação do PV.

    driver

    Tipo de driver. Defina como ossplugin.csi.alibabacloud.com para usar o plugin Container Storage Interface (CSI) do Alibaba Cloud OSS.

    volumeHandle

    UID (identificador único) do PV. Deve ser igual a metadata.name.

    nodePublishSecretRef

    Referencia o Secret que contém o par de AccessKey para autorização.

    fuseType

    Deve ser ossfs2 para o cliente ossfs 2.0.

    bucket

    Nome do bucket do OSS. Substitua o valor de bucket pelo nome do seu bucket do OSS.

    url

    Endpoint do bucket do OSS. Substitua o valor de url pelo endpoint real do seu bucket do OSS.

    • Se o bucket do OSS e o cluster ACS estiverem na mesma região, use o endpoint interno. Por exemplo, oss-cn-shanghai-internal.aliyuncs.com.

    • Se o bucket do OSS for agnóstico em relação à região ou estiver em uma região diferente do cluster ACS, use o endpoint público. Por exemplo, oss-cn-shanghai.aliyuncs.com.

    otherOpts

    Especifica opções personalizadas de montagem para o volume do OSS no formato -o -o . Por exemplo, -o close_to_open=false.

    close_to_open: Desativado por padrão. Se ativado, o sistema envia uma requisição GetObjectMeta ao OSS sempre que um arquivo é aberto. Isso recupera os metadados mais recentes e os mantém atualizados. No entanto, em cenários que envolvem a leitura de um grande número de arquivos pequenos, consultas frequentes de metadados podem aumentar significativamente a latência.

    Para mais informações sobre parâmetros opcionais, consulte ossfs 2.0 mount options.

  2. Crie o Secret e o PV.

    kubectl create -f oss-pv.yaml
  3. Visualize o PV.

    kubectl get pv

    Saída esperada:

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

Etapa 2: Criar um PVC

  1. Salve o conteúdo YAML a seguir como 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

    A tabela a seguir descreve os parâmetros:

    Parâmetro

    Descrição

    storageClassName

    Este valor serve apenas para vinculação do PVC e não precisa corresponder a um objeto StorageClass existente. Deve ser igual ao spec.storageClassName do PV.

    accessModes

    Modo de acesso.

    storage

    Quantidade de armazenamento a ser solicitada. Este valor não deve ser maior que a capacidade do PV.

    alicloud-pvname

    Rótulo do PV a ser vinculado. Deve ser igual a metadata.labels.alicloud-pvname do PV.

  2. Crie o PVC.

    kubectl create -f oss-pvc.yaml
  3. Visualize o PVC.

    kubectl get pvc

    A saída esperada mostra que o PVC está vinculado ao PV criado na Etapa 1.

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

Etapa 3: Criar uma aplicação e montar o volume

  1. Crie um arquivo chamado oss-test.yaml com o seguinte conteúdo.

    O exemplo YAML a seguir cria um Deployment com dois pods. Ambos os pods solicitam armazenamento usando o PVC chamado oss-pvc, e o caminho de montagem para ambos é /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. Crie o Deployment e monte o volume do OSS.

    kubectl create -f oss-test.yaml
  3. Verifique o status dos pods no Deployment.

    kubectl get pod | grep oss-test

    A saída de exemplo indica que dois pods foram criados.

    oss-test-****-***a   1/1     Running   0          28s
    oss-test-****-***b   1/1     Running   0          28s
  4. Verifique o caminho de montagem.

    O comando a seguir lista os dados no ponto de montagem do bucket do OSS. Por padrão, a saída é vazia.

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

Verificar armazenamento compartilhado e persistente do OSS

O Deployment criado no exemplo anterior contém dois pods. Ambos os pods montam o mesmo bucket do OSS. Você pode verificar o armazenamento compartilhado e persistente da seguinte forma:

  • Para verificar o armazenamento compartilhado, crie um arquivo em um pod e verifique se ele está visível no outro pod.

  • Para verificar o armazenamento persistente, reinicie o Deployment e verifique se os dados originais ainda estão acessíveis a partir de um novo pod.

  1. Obtenha as informações dos pods.

    kubectl get pod | grep oss-test

    Saída de exemplo:

    oss-test-****-***a   1/1     Running   0          40s
    oss-test-****-***b   1/1     Running   0          40s
  2. Verifique o armazenamento compartilhado.

    1. Crie um arquivo em um dos pods.

      Este exemplo usa o pod chamado oss-test-****-***a.

      kubectl exec oss-test-****-***a -- touch /data/test.txt
    2. Verifique a existência do arquivo no outro pod.

      Este exemplo usa o pod chamado oss-test-****-***b.

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

    Esta saída confirma que o arquivo test.txt é compartilhado.

    test.txt
  3. Verifique o armazenamento persistente.

    1. Reinicie o Deployment.

      kubectl rollout restart deploy oss-test
    2. Verifique o status dos pods e aguarde até que os novos pods entrem no estado Running.

      kubectl get pod | grep oss-test

      Saída de exemplo:

      oss-test-****-***c   1/1     Running   0          67s
      oss-test-****-***d   1/1     Running   0          49s
    3. Em um dos novos pods, verifique se os dados no sistema de arquivos ainda existem.

      Este exemplo usa o pod chamado oss-test-****-***c.

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

      Esta saída confirma que os dados no bucket do OSS persistem e estão acessíveis no diretório de montagem do novo pod.

      test.txt