O Object Storage Service (OSS) oferece armazenamento seguro, econômico e altamente confiável em grande escala para dados não estruturados, como imagens, arquivos de áudio e vídeo. Este tópico descreve como montar um volume do OSS em uma instância de contêiner elástica.
Observações de uso
O faturamento do OSS baseia-se no uso e aceita métodos como pagamento conforme o uso, planos de recursos e unidades de capacidade de armazenamento (SCUs). Para mais informações, consulte Visão geral do faturamento do OSS.
O OSS fornece armazenamento compartilhado. É possível montar um único bucket do OSS em várias instâncias.
-
Armazene no máximo 1.000 arquivos em um único diretório de montagem.
O excesso de arquivos pode levar o cliente OSS a consumir muita memória e causar um evento OOM (out-of-memory) na instância.
Pré-requisitos
-
Crie um bucket do OSS.
Faça login no console do OSS.
-
Crie um bucket do OSS.
Para mais informações, consulte Criar buckets.
-
Escolha um método de autorização.
-
Use uma função do RAM para autorização (Recomendado).
Crie uma função do RAM e conceda permissões a ela. Para mais informações, consulte Criar uma função do RAM e Conceder permissões a uma função do RAM.
Ao criar a função, defina Trusted Entity Type como Alibaba Cloud Service, Role Type como Normal Service Role e Trusted Service como Elastic Compute Service (ECS). Anexe a política AliyunOSSFullAccess à função.
-
Use um par de AccessKey para autorização (Não recomendado).
Obtenha um AccessKey ID e um AccessKey Secret. Para mais informações, consulte Obter um par de AccessKey.
-
Configuração (API)
Ao chamar a operação da API CreateContainerGroup para criar uma instância de contêiner elástica, use os parâmetros relacionados a Volume para especificar volumes e os parâmetros relacionados a Container.VolumeMount para montá-los nos contêineres. Os parâmetros relevantes estão descritos abaixo. Para mais informações, consulte CreateContainerGroup.
Declarar um volume
Para especificar volumes com parâmetros relacionados a Volume, primeiro defina os tipos e nomes dos volumes. Em seguida, configure os demais parâmetros de Volume conforme o valor do parâmetro Volume.N.Type.
|
Parâmetro |
Tipo |
Exemplo |
Descrição |
|
Volume.N.Name |
String |
oss-demo |
Nome do volume. |
|
Volume.N.Type |
String |
FlexVolume |
Defina como FlexVolume para criar um volume montado por meio de um plug-in FlexVolume. |
|
Volume.N.FlexVolume.Driver |
String |
alicloud/oss |
Driver do plug-in FlexVolume. Defina como |
|
Volume.N.FlexVolume.Options |
String |
{"bucket":"test-","url":"oss-cn-hangzhou.aliyuncs.com","ramRole":"ram-"} |
String JSON com opções para o objeto FlexVolume. Ao usar o FlexVolume para montar um volume do OSS, o parâmetro
|
Montar volumes
Após especificar os volumes, use os parâmetros relacionados a VolumeMount para montá-los nos contêineres.
Parâmetro | Tipo | Exemplo | Descrição |
Container.N.VolumeMount.N.Name | String | test-volume | Nome do volume N a ser montado no contêiner N. Este valor corresponde a Volume.N.Name. |
Container.N.VolumeMount.N.MountPath | String | /usr/share | Caminho dentro do contêiner onde o volume será montado. Os dados neste diretório ficam ocultos pelos dados do volume. |
Container.N.VolumeMount.N.SubPath | String | /usr/sub | Subdiretório do volume. Este parâmetro permite especificar subdiretórios diferentes do mesmo volume para montagem em subdiretórios distintos dos contêineres. |
Container.N.VolumeMount.N.ReadOnly | Boolean | false | Define se o diretório de montagem é somente leitura. Valor padrão: false. |
Container.N.VolumeMount.N.MountPropagation | String | None | Configuração de propagação de montagem do volume N. A propagação de montagem permite compartilhar volumes montados em um contêiner com outros contêineres na mesma instância de contêiner elástica ou até mesmo com outras instâncias no mesmo host. Valores válidos:
Valor padrão: None. |
Também é possível montar volumes em contêineres init. Os parâmetros necessários são semelhantes aos da tabela anterior. Basta alterar Container para InitContainer.
Configuração (Console)
Ao criar uma instância de contêiner elástica na página de compra do Elastic Container Instance, especifique os volumes na seção Container Group Configurations e monte-os nos contêineres na seção Container Configurations.
Declarar um volume
Na seção Container Group Configurations, expanda Advanced Settings.
Na seção Storage, na aba OSS Persistence, clique em Add.
-
Configure os parâmetros do volume do OSS.
Name: Nome do volume do OSS.
Bucket: Nome do bucket do OSS.
RAM Role: Função do RAM com permissões para acessar o OSS.
Montar um volume
Na seção Container Configurations, selecione um contêiner e expanda suas configurações avançadas.
-
Ative a opção Storage e clique em Add.
Os volumes disponíveis são aqueles declarados na configuração do grupo de contêineres.
Na linha de configuração de armazenamento, defina Volume como um volume declarado, como
oss-demo, selecione um tipo de armazenamento, como OSS Persistence, e insira um Mount Path in Container, como/data. Opcionalmente, especifique um Sub Path, comotest, e marque a caixa de seleção Read-only.
Para montar volumes em vários contêineres, selecione mais contêineres e repita as operações anteriores.
Exemplo de configuração
-
Crie uma instância de contêiner elástica, Instância A, e monte um volume do OSS nela.
O exemplo a seguir mostra os parâmetros usados para chamar a operação CreateContainerGroup e criar a Instância A. Para mais informações, consulte CreateContainerGroup.
ContainerGroupName=test-oss-a # Declare the volume Volume.1.Name=oss-demo Volume.1.Type=FlexVolume Volume.1.FlexVolume.Driver=alicloud/oss Volume.1.FlexVolume.Options={"bucket":"test-***","url":"oss-cn-hangzhou-internal.aliyuncs.com","ramRole":"ram-***"} # Mount the volume to the container Container.1.Name=nginx Container.1.Image=registry-vpc.cn-hangzhou.aliyuncs.com/eci_open/nginx:1.14.2 Container.1.VolumeMount.1.Name=oss-demo Container.1.VolumeMount.1.MountPath=/data-a -
Conecte-se à Instância A e crie um arquivo no diretório de montagem.
Para saber como se conectar a uma instância de contêiner elástica, consulte Conectar-se a uma instância ECI usando o Workbench.
root@test-oss-a:/# cd data-a root@test-oss-a:/data-a# ls root@test-oss-a:/data-a# echo "hello" >test root@test-oss-a:/data-a# ls test root@test-oss-a:/data-a# cat test hello Exclua a Instância A.
-
Crie outra instância de contêiner elástica, Instância B, e monte o mesmo volume do OSS nela.
ContainerGroupName=test-oss-b # Declare the volume Volume.1.Name=oss-demo Volume.1.Type=FlexVolume Volume.1.FlexVolume.Driver=alicloud/oss Volume.1.FlexVolume.Options={"bucket":"test-***","url":"oss-cn-hangzhou-internal.aliyuncs.com","ramRole":"ram-***"} # Mount the volume to the container Container.1.Name=nginx Container.1.Image=registry-vpc.cn-hangzhou.aliyuncs.com/eci_open/nginx:1.14.2 Container.1.VolumeMount.1.Name=oss-demo Container.1.VolumeMount.1.MountPath=/data-b -
Conecte-se à Instância B e verifique o arquivo no diretório de montagem.
Como o OSS fornece armazenamento persistente, você ainda pode acessar o arquivo gravado pela Instância A a partir da Instância B, mesmo após a exclusão da Instância A.
root@test-oss-b:/# cd data-b root@test-oss-b:/data-b# ls test root@test-oss-b:/data-b# cat test hello