Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Gerencie o ciclo de vida de buckets do OSS

Última atualização: Jun 27, 2026

O CNFS gerencia o ciclo de vida de buckets do OSS e os provisiona como PVs por meio de manifests do Kubernetes.

Há dois métodos disponíveis:

  • Método 1: Use o CNFS para criar um novo bucket do OSS e montá-lo em um Deployment e um StatefulSet como volume provisionado dinamicamente.

  • Método 2: Crie uma Custom Resource Definition (CRD) do CNFS que referencie um bucket do OSS existente e monte-o como volume provisionado estática ou dinamicamente.

Pré-requisitos

Verifique se você tem:

  • csi-plugin e csi-provisioner na versão 1.24.2-5b34494d-aliyun ou posterior (atualizar)

  • storage-operator na versão 1.24.95-e2d0756-aliyun ou posterior (atualizar)

Limitações

  • A única política de recuperação compatível é Retain. Excluir uma CRD do CNFS preserva o bucket.

  • Restaure objetos Archive e Cold Archive antes de ler ou gravar.

  • Se o versionamento estiver ativado, não será possível configurar políticas de retenção nem o OSS-HDFS. Para usá-los, defina primeiro enableVersioning como None.

  • Após definir o versionamento como enabled, não é possível desativá-lo, apenas suspendê-lo.

  • Os parâmetros redundancyType e enableVersioning exigem o storage-operator v1.26.2-1de13b6-aliyun ou posterior.

  • Se redundancyType for ZRS, Cold Archive e Deep Cold Archive não serão compatíveis.

Método 1: Crie um novo bucket do OSS com o CNFS

Este método cria um bucket do OSS chamado cnfs-oss-<clusterid> e o monta em um Deployment e StatefulSet como volume provisionado dinamicamente.

Se já existir um bucket com o nome especificado, o CNFS o associará ao objeto ContainerNetworkFileSystem em vez de criar um novo.

Crie a CRD do CNFS e a StorageClass

Crie o Secret, a CRD ContainerNetworkFileSystem e a StorageClass. Substitua <clusterid> pelo ID do seu cluster.

cat << EOF | kubectl apply -f -
apiVersion: v1
kind: Secret
metadata:
  name: oss-secret
stringData:
  akId: "xxxx"      # AccessKey ID for mounting the OSS bucket
  akSecret: "xxxx"  # AccessKey Secret for mounting the OSS bucket
---
apiVersion: storage.alibabacloud.com/v1beta1
kind: ContainerNetworkFileSystem
metadata:
  name: cnfs-oss-<clusterid>   # Set the CNFS CRD name to match the bucket name
spec:
  description: "cnfs-oss"
  type: oss
  reclaimPolicy: Retain         # Only Retain is supported. Deleting the CRD keeps the bucket.
  parameters:
    bucketName: cnfs-oss-<clusterid>   # Replace <clusterid> with your cluster ID; bucket name must be unique
    encryptType: "AES256"              # AES-256 server-side encryption
    storageType: "Standard"            # Storage class
    aclType: "private"                 # Bucket owner and authorized users only
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: alibabacloud-cnfs-oss
parameters:
  containerNetworkFileSystem: cnfs-oss-<clusterid>           # Reference to the CNFS CRD
  otherOpts: -o max_stat_cache_size=0 -o allow_other         # Cache settings
  path: /
  # volumeAs: subpath   # Uncomment to auto-create a subpath for each PV
  csi.storage.k8s.io/node-publish-secret-name: oss-secret
  csi.storage.k8s.io/node-publish-secret-namespace: default
provisioner: ossplugin.csi.alibabacloud.com
reclaimPolicy: Retain
EOF

Parâmetros da CRD do CNFS:

Parâmetro

Descrição

Obrigatório

Padrão

description

Descrição do sistema de arquivos CNFS.

Não

type

Tipo de volume. Defina como oss.

Sim

reclaimPolicy

Política de recuperação. Apenas Retain é compatível.

Sim

parameters.bucketName

Nome do bucket do OSS. Se existir um bucket correspondente, ele será associado à CRD do CNFS; caso contrário, um novo bucket será criado.

Sim

parameters.storageType

Classe de armazenamento. Valores válidos: Standard, IA (Infrequent Access), Archive, ColdArchive. Restaure objetos Archive e Cold Archive antes de ler ou gravar.

Não

Standard

parameters.redundancyType

Tipo de redundância de armazenamento. LRS: zona única; ZRS (zone-redundant): entre zonas. Requer storage-operator v1.26.2-1de13b6-aliyun ou posterior. O ZRS não é compatível com Cold Archive ou Deep Cold Archive.

Não

ZRS

parameters.encryptType

Algoritmo de criptografia no lado do servidor. Valores válidos: None, AES256, SM4.

Não

parameters.aclType

Tipo de ACL. Valores válidos: private (apenas proprietário e usuários autorizados), public-read (leitura pública; escrita apenas pelo proprietário e usuários autorizados), public-read-write (todos os usuários, incluindo anônimos, podem ler e gravar — use com cautela).

Não

private

parameters.enableVersioning

Status do versionamento. Valores válidos: enabled, suspended, None. Uma vez ativado, não pode ser desativado, apenas suspenso. Impede a configuração de política de retenção ou OSS-HDFS. Requer storage-operator v1.26.2-1de13b6-aliyun ou posterior. Consulte Faturamento do ciclo de vida.

Não

Enabled

Crie um PVC e cargas de trabalho de exemplo

Crie uma persistent volume claim (PVC), um Deployment e um StatefulSet para verificar se o bucket foi montado corretamente.

cat << EOF | kubectl apply -f -
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: cnfs-oss-pvc
spec:
  accessModes:
    - ReadOnlyMany
  storageClassName: alibabacloud-cnfs-oss
  resources:
    requests:
      storage: 100Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: cnfs-oss-deployment
  labels:
    app: nginx
spec:
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        volumeMounts:
        - mountPath: "/data"
          name: cnfs-oss-pvc
      volumes:
      - name: cnfs-oss-pvc
        persistentVolumeClaim:
          claimName: cnfs-oss-pvc
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: cnfs-oss-sts
  labels:
    app: nginx
spec:
  serviceName: "nginx"
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        volumeMounts:
        - mountPath: "/data"
          name: www
  volumeClaimTemplates:
  - metadata:
      name: www
    spec:
      accessModes: [ "ReadOnlyMany" ]
      storageClassName: "alibabacloud-cnfs-oss"
      resources:
        requests:
          storage: 100Gi
EOF

Verifique o bucket e as cargas de trabalho

Confirme se o bucket do OSS e os pods estão prontos.

Verifique a CRD do CNFS:

kubectl get cnfs/cnfs-oss-<clusterid> -o yaml

Saída esperada:

apiVersion: storage.alibabacloud.com/v1beta1
kind: ContainerNetworkFileSystem
...
status:
  conditions:
  - lastProbeTime: "2022-09-18 15:02:39"
    reason: The oss bucket is complete initialization.
    status: Ready
  fsAttributes:
    accessGroupName: DEFAULT_VPC_GROUP_NAME
    aclType: private
    bucketName: cnfs-oss-****
    encryptType: AES256
    endPoint:
      extranet: oss-****.aliyuncs.com
      internal: oss-****-internal.aliyuncs.com
    regionId: ****
    storageType: Standard
  status: Available

O campo status.status exibe Available quando o bucket está pronto. Campos de status:

Campo

Descrição

status

Status da CRD do CNFS. Valores válidos: Pending, Creating, Initialization (creating the file system), Available, Unavailable (recoverable), Fatal (not recoverable), Terminating.

conditions.lastProbeTime

Timestamp da última sondagem.

conditions.reason

Motivo do status atual.

conditions.status

Prontidão: Ready (disponível) ou NotReady.

fsAttributes.accessGroupName

Grupo de permissões para o ponto de montagem. Atualmente, apenas DEFAULT_VPC_GROUP_NAME (o grupo VPC padrão) é compatível.

fsAttributes.encryptType

Algoritmo de criptografia: None, AES256 ou SM4.

fsAttributes.regionId

Região do cluster ACK.

fsAttributes.storageType

Classe de armazenamento do bucket: Standard, IA, Archive ou ColdArchive.

fsAttributes.redundancyType

Tipo de redundância de armazenamento: LRS (locally redundant storage) ou ZRS (zone-redundant storage).

fsAttributes.aclType

Tipo de ACL do bucket.

fsAttributes.endPoint

Endpoints: extranet (público) e internal (rede interna).

fsAttributes.enableVersioning

Status do versionamento: enabled, suspended ou None.

Verifique os pods:

kubectl get pod

Saída esperada:

NAME                                   READY   STATUS    RESTARTS   AGE
cnfs-oss-deployment-5864fd8d98-4****   1/1     Running   0          2m21s
cnfs-oss-sts-0                         1/1     Running   0          2m21s
cnfs-oss-sts-1                         1/1     Running   0          2m16s

Todos os pods exibem Running, confirmando que o Deployment e o StatefulSet montaram o bucket do OSS.

Método 2: Usar um bucket do OSS existente

Este método cria uma CRD do CNFS que referencia um bucket do OSS existente pelo nome.

Crie a CRD do CNFS

cat <<EOF | kubectl apply -f -
apiVersion: storage.alibabacloud.com/v1beta1
kind: ContainerNetworkFileSystem
metadata:
  name: cnfs-oss-exist-bucket-name
spec:
  description: "cnfs-oss"
  type: oss
  reclaimPolicy: Retain
  parameters:
    bucketName: bucket-name   # Name of your existing OSS bucket
EOF

Verifique a CRD do CNFS

kubectl get cnfs/cnfs-oss-exist-bucket-name -o yaml

Saída esperada:

apiVersion: storage.alibabacloud.com/v1beta1
kind: ContainerNetworkFileSystem
...
status:
  conditions:
  - lastProbeTime: "2022-09-14 17:00:21"
    reason: The oss bucket is complete initialization.
    status: Ready
  fsAttributes:
    accessGroupName: DEFAULT_VPC_GROUP_NAME
    aclType: private
    bucketName: exist-bucket-name
    encryptType: AES256
    endPoint:
      extranet: oss-****.aliyuncs.com
      internal: oss-****-internal.aliyuncs.com
    regionId: ****
    storageType: Standard
  status: Available

Montar o bucket em uma carga de trabalho

Monte o bucket no seu Deployment como volume estático ou dinâmico seguindo as instruções em Criar um PVC e cargas de trabalho de exemplo (Método 1), utilizando a CRD do CNFS deste método.

Próximos passos