Referência do controlador CSI

Os seguintes manifestos descrevem os campos do controlador CSI suportados nos recursos StorageClass e Persistent Volume.

Classe de armazenamento

O manifesto seguinte inclui todos os campos suportados na classe Storage.

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: parallelstore-csi-sc
provisioner: parallelstore.csi.storage.gke.io
parameters:
  network: VPC_NETWORK_NAME # optional
  labels: KEY: VALUE # optional
  description: DESCRIPTION # optional
  reserved-ip-range: IP_RANGE_NAME # optional
  file-stripe-level: FILE_STRIPE_LEVEL # optional
  directory-stripe-level: DIRECTORY_STRIPE_LEVEL # optional
  mountLocality: MOUNT_LOCALITY # optional
  dfuseCPURequest: DFUSE_CPU_REQUEST # optional
  dfuseMemoryRequest: DFUSE_MEMORY_REQUEST # optional
  dfuseCPULimit: DFUSE_CPU_LIMIT # optional
  dfuseMemoryLimit: DFUSE_MEMORY_LIMIT # optional
volumeBindingMode: VOLUME_BINDING_MODE # default is "immediate"; or "waitForFirstConsumer"
allowedTopologies: # optional
- matchLabelExpressions:
  - key: topology.gke.io/zone
    values:
    - ZONE
mountOptions:
  -  DFUSE_MOUNT_OPTIONS # disable-caching, enable-wb-cache, thread-count, eq-count

Todos os seguintes campos são opcionais:

  • network: a rede VPC na qual criar a instância do Parallelstore. Se esta propriedade não for especificada, é usada a rede do cluster do GKE.

    Para criar uma instância do Parallelstore numa rede VPC partilhada, tem de indicar o nome completo da rede. Por exemplo: projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME

  • labels: Pares de chave-valor especificados pelo utilizador a anexar a esta instância.

  • description: uma descrição da instância. Tem de ter 2048 carateres ou menos.

  • reserved-ip-range: O nome de um intervalo de endereços IP atribuído. Se não for especificado, são considerados todos os intervalos.

  • file-stripe-level define as definições de divisão de ficheiros. Os valores permitidos são:

    • file-stripe-level-balanced
    • file-stripe-level-max
    • file-stripe-level-min

    Consulte as considerações de desempenho para ver detalhes.

  • directory-stripe-level define o nível de divisão em faixas para diretórios. Os valores permitidos são:

    • directory-stripe-level-balanced
    • directory-stripe-level-max
    • directory-stripe-level-min

    Consulte as considerações de desempenho para ver detalhes.

  • mountLocality: ativa o modo de montagem local do nó para o aprovisionamento dinâmico. Os valores suportados são node ou pod. A predefinição é pod. Se node estiver especificado, também pode usar as seguintes opções:

    • dfuseCPURequest: o pedido de CPU para o processo dfuse. A predefinição é 250m.
    • dfuseMemoryRequest: o pedido de memória para o processo dfuse. A predefinição é 512Mi.
    • dfuseCPULimit: o limite da CPU para o processo dfuse. Por predefinição, o valor não está definido.
    • dfuseMemoryLimit: o limite de memória para o processo dfuse. A predefinição é 10Gi.
  • allowedTopologies: especifica a zona na qual criar a instância do Parallelstore. Se este campo não for especificado, a instância é criada na mesma zona que a implementação do controlador CSI, com o modo de associação de volumes immediate.

  • volumeBindingMode: especifica o modo de seleção da topologia. O modo immediate usa o valor especificado em allowedTopologies. O modo waitForFirstConsumer atribui a topologia à zona em que o pod do GKE está agendado. Isto pode fazer com que os pods sejam bloqueados enquanto aguardam o aprovisionamento de um volume.

  • mountOptions: especifica as opções de montagem dfuse e os parâmetros do kernel, incluindo read_ahead_kb e max_ratio. Os volumes suportados por instâncias do Parallelstore herdam estes valores no campo .spec.mountOptions do volume persistente.

    As opções são:

    • disable-caching: desativa toda a colocação em cache. Por predefinição, a colocação em cache completa (exceto para a cache de gravação) está ativada quando monta uma instância do Parallelstore no GKE.
    • enable-wb-cache: use a cache de gravação diferida em vez da gravação imediata.
    • thread-count: número de discussões a usar. Este valor é a soma do número de threads FUSE e do número de filas de eventos.
    • eq-count: número de filas de eventos a usar.
    • read_ahead_kb: tamanho da janela de leitura antecipada em kilobytes.
    • max_ratio: permite limitar um dispositivo específico para que não use mais do que a percentagem fornecida da cache de gravação.

    Para informações acerca destas opções, consulte o artigo Considerações sobre o desempenho.

Volume persistente

O manifesto seguinte inclui todos os campos suportados no Persistent Volume.

apiVersion: v1
kind: PersistentVolume
metadata:
  name: parallelstore-pv
  annotations:
    pv.kubernetes.io/provisioned-by: parallelstore.csi.storage.gke.io
spec:
  storageClassName: parallelstore-csi-sc
  capacity:
    storage: INSTANCE_SIZE # 12Ti
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain # or "Delete"
  volumeMode: Filesystem
  mountOptions:
    - DFUSE_MOUNT_OPTIONS # disable-caching, enable-wb-cache, thread-count, eq-count, read_ahead_kb, max_ratio
  csi:
    driver: parallelstore.csi.storage.gke.io
    volumeHandle: PROJECT_ID/LOCATION/INSTANCE_NAME/default-pool/default-container
    volumeAttributes:
      accessPoints: ACCESS_POINTS # comma-separated list of IP addresses
      network: VPC_NETWORK # optional
      mountLocality: MOUNT_LOCALITY # optional
      dfuseCPURequest: DFUSE_CPU_REQUEST # optional
      dfuseMemoryRequest: DFUSE_MEMORY_REQUEST # optional
      dfuseCPULimit: DFUSE_CPU_LIMIT # optional
      dfuseMemoryLimit: DFUSE_MEMORY_LIMIT # optional
  • capacity: a capacidade da instância do Parallelstore. Tem de ser um dos seguintes: 12Ti, 16Ti ou 20Ti.
  • mountOptions: herdar do campo mountOptions em StorageClass.
  • csi.volumeHandle: um identificador exclusivo para uma instância da Parallelstore. Tem de usar o formato: PROJECT_ID/LOCATION/INSTANCE_NAME/default-pool/default-container
  • csi.volumeAttributes.accessPoints: uma lista de endereços IP para nós do servidor Parallelstore, separados por vírgulas.
  • csi.volumeAttributes.network: a rede VPC da instância do Parallelstore, que tem de estar alinhada com a rede do cluster do GKE. Este campo é usado para verificar se a instância Parallelstore fornecida está numa rede válida antes de o controlador CSI a montar.
  • csi.volumeAttributes.mountLocality: ativa o modo de montagem local do nó para o aprovisionamento dinâmico. Os valores suportados são node ou pod. A predefinição é pod. Se node estiver especificado, também pode usar as seguintes opções:

    • csi.volumeAttributes.dfuseCPURequest: o pedido de CPU para o processo dfuse. A predefinição é 250m.
    • csi.volumeAttributes.dfuseMemoryRequest: o pedido de memória para o processo dfuse. A predefinição é 512Mi.
    • csi.volumeAttributes.dfuseCPULimit: o limite da CPU para o processo dfuse. Por predefinição, o valor não está definido.
    • csi.volumeAttributes.dfuseMemoryLimit: o limite de memória para o processo dfuse. A predefinição é 10Gi.