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. |
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. |
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 |
|
Suportado |
Suportado |
|
Operações básicas de objeto |
|
Suportado |
Suportado |
|
Operações básicas de objeto |
|
Suportado |
Suportado |
|
Leitura e gravação de arquivos |
|
Suportado |
Suportado |
|
Leitura e gravação de arquivos |
|
Suporta escritas aleatórias (requer cache de disco) |
Suporta apenas escritas sequenciais (não requer cache de disco) |
|
Leitura e gravação de arquivos |
|
Suportado (pode ser truncado para qualquer tamanho) |
Suporta apenas truncar um objeto para comprimento zero |
|
Operações de metadados de arquivo |
|
Suportado |
Suportado |
|
Operações de metadados de arquivo |
|
Suportado |
Suportado |
|
Operações de metadados de arquivo |
|
Suportado |
Suportado |
|
Operações de diretório |
|
Suportado |
Suportado |
|
Operações de diretório |
|
Suportado |
Suportado |
|
Operações de diretório |
|
Suportado |
Suportado |
|
Permissões e atributos |
|
Suportado |
Suportado |
|
Permissões e atributos |
|
Suportado |
Não suportado |
|
Permissões e atributos |
|
Suportado |
Não suportado |
|
Permissões e atributos |
|
Suportado |
Suportado |
|
Recursos estendidos |
|
Suportado |
Não suportado |
|
Recursos estendidos |
|
Suportado |
Não suportado |
|
Recursos estendidos |
|
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.
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
readdirem volumes ossfs 1.0 envia numerosas requisiçõesHeadObjectpara 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_optimizepara melhorar o desempenho. Para mais informações, consulte readdir optimization.
Criar um bucket do OSS e obter detalhes
-
Crie um bucket do OSS.
Faça login no console do OSS. No painel de navegação à esquerda, clique em Buckets.
Clique em Create Bucket.
-
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.
-
(Opcional) Para montar um subdiretório de um bucket do OSS, crie o subdiretório primeiro.
Na página Buckets, clique no nome do bucket desejado.
Na página de detalhes do bucket, no painel de navegação à esquerda, escolha Object Management > Objects.
Clique em Create Directory para criar diretórios no bucket conforme necessário.
-
Obtenha o endpoint do bucket do OSS.
Na página Buckets, clique no nome do bucket desejado.
-
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.
-
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
-
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"NotaEste YAML cria um Secret e um PV. O Secret armazena seu par de AccessKey, usado pelo PV para acesso seguro. Substitua os valores de
akIdeakSecretpelo seu AccessKey ID e AccessKey Secret reais.A tabela a seguir descreve os parâmetros do PV:
Parâmetro
Descrição
alicloud-pvnameRótulo do PV, usado para vinculá-lo a um PVC.
storageClassNameEste valor serve apenas para vinculação do PVC e não precisa corresponder a um objeto StorageClass existente.
storageCapacidade 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.
accessModesModo de acesso. Valores válidos:
ReadOnlyMany, que permite a vários pods montar o volume como somente leitura, eReadWriteMany, que permite a vários pods montar o volume como leitura e gravação.persistentVolumeReclaimPolicyPolítica de recuperação do PV.
driverTipo de driver. Defina como
ossplugin.csi.alibabacloud.compara usar o plugin Container Storage Interface (CSI) do Alibaba Cloud OSS.volumeHandleUID (identificador único) do PV. Deve ser igual a
metadata.name.nodePublishSecretRefReferencia o Secret que contém o par de AccessKey para autorização.
bucketNome do bucket do OSS. Substitua o valor de
bucketpelo nome real do seu bucket do OSS.urlEndpoint do bucket do OSS. Substitua o valor de
urlpelo 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.
otherOptsEspecifica 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. -
Crie o Secret e o PV.
kubectl create -f oss-pv.yaml -
Visualize o PV.
kubectl get pvSaí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 |
|
|
Este valor serve apenas para vinculação do PVC e não precisa corresponder a um objeto StorageClass existente. Deve ser igual ao |
|
|
Modo de acesso. |
|
|
Quantidade de armazenamento a ser solicitada. Este valor não deve ser maior que a capacidade do PV. |
|
|
Rótulo do PV a ser vinculado. Deve ser igual a |
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
Faça login no console do ACS.
Na página Clusters, clique no nome do cluster para acessar a página de gerenciamento do cluster.
No painel de navegação à esquerda da página de gerenciamento do cluster, escolha .
Na página Persistent Volumes, clique em Create.
-
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
No painel de navegação à esquerda da página de gerenciamento do cluster, escolha .
Na página Persistent Volume Claims, clique em Create.
-
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
No painel de navegação à esquerda da página de gerenciamento do cluster, escolha .
Na página Deployments, clique no botão Create from Image.
-
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
-
Verifique o status do Deployment da aplicação.
Na página Deployments, clique no nome da aplicação.
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
-
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.NotaEste YAML cria um Secret e um PV. O Secret armazena seu par de AccessKey, usado pelo PV para acesso seguro. Substitua os valores de
akIdeakSecretpelo seu AccessKey ID e AccessKey Secret reais.A tabela a seguir descreve os parâmetros do PV:
Parâmetro
Descrição
alicloud-pvnameRótulo do PV, usado para vinculá-lo a um PVC.
storageClassNameEste valor serve apenas para vinculação do PVC e não precisa corresponder a um objeto StorageClass existente.
storageCapacidade 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.
accessModesModo de acesso. Valores válidos:
ReadOnlyMany, que permite a vários pods montar o volume como somente leitura, eReadWriteMany, que permite a vários pods montar o volume como leitura e gravação.persistentVolumeReclaimPolicyPolítica de recuperação do PV.
driverTipo de driver. Defina como
ossplugin.csi.alibabacloud.compara usar o plugin Container Storage Interface (CSI) do Alibaba Cloud OSS.volumeHandleUID (identificador único) do PV. Deve ser igual a
metadata.name.nodePublishSecretRefReferencia o Secret que contém o par de AccessKey para autorização.
fuseTypeDeve ser
ossfs2para o cliente ossfs 2.0.bucketNome do bucket do OSS. Substitua o valor de
bucketpelo nome do seu bucket do OSS.urlEndpoint do bucket do OSS. Substitua o valor de
urlpelo 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.
otherOptsEspecifica 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.
-
Crie o Secret e o PV.
kubectl create -f oss-pv.yaml -
Visualize o PV.
kubectl get pvSaí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-pvA tabela a seguir descreve os parâmetros:
Parâmetro
Descrição
storageClassNameEste valor serve apenas para vinculação do PVC e não precisa corresponder a um objeto StorageClass existente. Deve ser igual ao
spec.storageClassNamedo PV.accessModesModo de acesso.
storageQuantidade de armazenamento a ser solicitada. Este valor não deve ser maior que a capacidade do PV.
alicloud-pvnameRótulo do PV a ser vinculado. Deve ser igual a
metadata.labels.alicloud-pvnamedo PV. -
Crie o PVC.
kubectl create -f oss-pvc.yaml -
Visualize o PVC.
kubectl get pvcA 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.yamlcom 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-testA 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
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.
-
Obtenha as informações dos pods.
kubectl get pod | grep oss-testSaída de exemplo:
oss-test-****-***a 1/1 Running 0 40s oss-test-****-***b 1/1 Running 0 40s -
Verifique o armazenamento compartilhado.
-
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 -
Verifique a existência do arquivo no outro pod.
Este exemplo usa o pod chamado
oss-test-****-***b.
kubectl exec oss-test-****-***b -- ls /dataEsta saída confirma que o arquivo
test.txté compartilhado.test.txt -
-
Verifique o armazenamento persistente.
-
Reinicie o Deployment.
kubectl rollout restart deploy oss-test -
Verifique o status dos pods e aguarde até que os novos pods entrem no estado Running.
kubectl get pod | grep oss-testSaída de exemplo:
oss-test-****-***c 1/1 Running 0 67s oss-test-****-***d 1/1 Running 0 49s -
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 /dataEsta 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
-