O Alibaba Cloud Object Storage Service (OSS) é um serviço massivo, seguro, de baixo custo e altamente confiável para armazenar dados não estruturados, como imagens, áudio e arquivos de vídeo. Este artigo descreve como montar um bucket do OSS em um Pod ECI usando uma PersistentVolumeClaim (PVC) em um cluster ACK Serverless.
Pré-requisitos
É necessário ter um cluster ACK Serverless. Para mais informações, consulte Criar um cluster.
Observações de uso
O OSS oferece armazenamento compartilhado. É possível montar um único bucket do OSS em vários Pods.
Evite armazenar mais de 1.000 arquivos no diretório de montagem. Se a quantidade de arquivos for muito alta, o ossfs pode consumir memória excessiva e causar um erro de Out of Memory (OOM) no Pod.
Procedimento
-
Obtenha as informações do seu bucket do OSS.
Caso ainda não tenha um bucket do OSS, crie um no console do OSS. Para mais informações, consulte Criar um bucket.
Faça login no console do OSS. No painel de navegação à esquerda, clique em Bucket List.
Na página Bucket List, clique em nome do bucket desejado.
-
Na página de detalhes do bucket, clique em aba Overview. Na seção Access Port, copie o endpoint desejado.
Se o bucket e o cluster estiverem na mesma região, copie o endpoint da VPC.
Se o bucket e o cluster estiverem em regiões diferentes, copie o endpoint da Internet.
-
Escolha um método de autorização.
-
Método 1 (Recomendado): Usar uma função do RAM.
Crie uma função do RAM e conceda permissões a ela. Ao criar a função, defina o Principal Type como Cloud Service e o Principal Name como ECS. Em seguida, anexe a política AliyunOSSFullAccess à função. Para mais informações, consulte Criar uma função do RAM para um serviço confiável da Alibaba Cloud e Conceder permissões a uma função do RAM.
-
Método 2: Usar um par de AccessKey.
Obtenha um AccessKey ID e um AccessKey Secret. Para mais informações, consulte Obter um par de AccessKey.
-
-
Crie um arquivo chamado test-ack-oss.yaml com o seguinte conteúdo.
NotaEste exemplo utiliza um ambiente de VPC. Para acesso via VPC, certifique-se de que a instância, o repositório de imagens de contêiner e o endpoint do OSS estejam na mesma região, como China (Pequim).
Se precisar montar o OSS ou baixar imagens entre regiões, configure o acesso à internet e altere o endereço da
imageou aurldo OSS para o formato de acesso à internet correspondente no código abaixo.image: Defina comoregistry.cn-beijing.aliyuncs.com/eci_open/nginx:1.14.2.url: O endpoint público.
apiVersion: apps/v1 kind: Deployment metadata: name: test-ack-oss labels: alibabacloud.com/eci: "true" spec: replicas: 2 selector: matchLabels: alibabacloud.com/eci: "true" template: metadata: labels: alibabacloud.com/eci: "true" spec: containers: - name: nginx image: registry-vpc.cn-beijing.aliyuncs.com/eci_open/nginx:1.14.2 ports: - containerPort: 80 volumeMounts: - name: cache-volume mountPath: /cache-test volumes: - name: cache-volume persistentVolumeClaim: claimName: oss-pvc --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: oss-pvc spec: storageClassName: test accessModes: - ReadWriteMany resources: requests: storage: 5Gi selector: matchLabels: alicloud-pvname: pv-oss --- apiVersion: v1 kind: PersistentVolume metadata: name: oss-csi-pv labels: alicloud-pvname: pv-oss spec: storageClassName: test capacity: storage: 5Gi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain csi: driver: ossplugin.csi.alibabacloud.com volumeHandle: oss-csi-pv volumeAttributes: bucket: "oss-test" url: "oss-cn-beijing-internal.aliyuncs.com" otherOpts: "-o max_stat_cache_size=0 -o allow_other" ramRole: "<your RAM Role Name>"O exemplo anterior usa uma função do RAM para autorização. Se precisar usar um AccessKey para autorização direta, substitua
ramRole: "<your RAM Role Name>"pelo seguinte YAML:akId: "<your AccessKey ID>" akSecret: "<your AccessKey Secret>"NotaPara montar um bucket do OSS de outra conta, configure o AccessKey ID e o AccessKey Secret da conta de destino.
Os seguintes parâmetros relacionados ao OSS devem ser configurados em volumeAttributes:
Parâmetro
Descrição
bucket
Nome do bucket do OSS.
path
Caminho do subdiretório no bucket a ser montado. O padrão é /, que monta o bucket inteiro. Por exemplo, definir isso como /data monta apenas o diretório data no bucket.
url
Endpoint do OSS obtido na Etapa 1.
-
Use o endpoint da VPC se o bucket e o cluster estiverem na mesma região.
-
Use o endpoint da Internet se o bucket e o cluster estiverem em regiões diferentes.
otherOpts
Ao montar o OSS, insira parâmetros personalizados no formato -o -o . Exemplo: -o max_stat_cache_size=0 -o allow_other.
ramRole
Função do RAM usada para autorização.
akId
AccessKey ID usado para autorização.
AccessKeySecret
AccessKey Secret usado para autorização.
-
Execute o comando a seguir para criar os Pods ECI e montar o volume do OSS.
kubectl create -f test-ack-oss.yaml -
Execute o comando a seguir para verificar os Pods.
kubectl get pods -o wideA saída esperada é semelhante à seguinte:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES test-ack-oss-655db9d64d-5q7d9 1/1 Running 0 46s 172.16.XX.XXX virtual-kubelet-cn-****-k <none> <none> test-ack-oss-655db9d64d-m5vct 1/1 Running 0 46s 172.16.XX.XXX virtual-kubelet-cn-****-k <none> <none>Visualize o diretório de arquivos no Pod. Note que o diretório de montagem /cache-test do OSS foi criado. Os arquivos gravados no primeiro Pod aparecem no segundo Pod, o que indica que ambos compartilham o armazenamento do OSS.
shell@Alicloud:~$ kubectl exec -it test-ack-oss-655db9d64d-5q7d9 -- bash root@test-ack-oss-655db9d64d-5q7d9:/# ls bin boot cache-test dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var root@test-ack-oss-655db9d64d-5q7d9:/# ls /cache-test root@test-ack-oss-655db9d64d-5q7d9:/# echo "hell oss">/cache-test/ack-oss root@test-ack-oss-655db9d64d-5q7d9:/# ls /cache-test ack-oss root@test-ack-oss-655db9d64d-5q7d9:/# cat /cache-test/ack-oss hell oss root@test-ack-oss-655db9d64d-5q7d9:/# exit exit shell@Alicloud:~$ kubectl exec -it test-ack-oss-655db9d64d-m5vct -- bash root@test-ack-oss-655db9d64d-m5vct:/# ls /cache-test ack-oss root@test-ack-oss-655db9d64d-m5vct:/# cat /cache-test/ack-oss hell oss
Documentos relacionados
Para mais informações sobre volumes do OSS, consulte Visão geral de volumes do OSS.