Como definir o StorageClass padrão

Nesta página, mostramos como definir o StorageClass padrão para um cluster local do GKE. Consulte também Armazenamento.

Visão geral

O GKE On-Prem pode ser integrado ao armazenamento em blocos ou arquivos usando qualquer um dos seguintes mecanismos:

Ao criar um cluster, o GKE On-Prem cria um StorageClass do Kubernetes chamado standard. Esse é o StorageClass padrão do cluster.

Para ver informações detalhadas sobre o StorageClass standard, insira o seguinte comando:

kubectl --kubeconfig [CLUSTER_KUBECONFIG] get storageclass standard --output yaml

em que [CLUSTER_KUBECONFIG] é o caminho do arquivo kubeconfig do cluster.

Na saída, é possível ver que o nome do StorageClass é standard. Também é possível ver a anotação storageclass.kubernetes.io/is-default-class: "true". Essa anotação identifica o StorageClass chamado standard como o StorageClass padrão.

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  annotations:
    storageclass.kubernetes.io/is-default-class: "true"
  ...
  name: standard
  ...
parameters:
  datastore: HOST2-DATASTORE2
  diskformat: thin
  fstype: ext4
provisioner: kubernetes.io/vsphere-volume
reclaimPolicy: Delete
volumeBindingMode: Immediate

Seu cluster pode ter vários objetos StorageClass, mas somente um deles pode ter a anotação storageclass.kubernetes.io/is-default-class: "true" e, portanto, ser o StorageClass padrão.

Na saída anterior, também é possível ver que o provisionador é kubernetes.io/vsphere-volume. Este é o provisionador que realiza ações quando um cliente solicita uma parte do armazenamento de standard.

StorageClass padrão

Quando você solicita o armazenamento, é possível especificar um StorageClass. Se você não especificar um StorageClass, o StorageClass padrão será usado. Por exemplo, suponha que você crie um PersistentVolumeClaim que não especifique um StorageClass. O controlador de volume atenderá à declaração de acordo com o StorageClass padrão.

Como alterar o StorageClass padrão

Como administrador de cluster, talvez você queira alterar a classe de armazenamento padrão. Em seguida, todas as solicitações de armazenamento que não especificarem um StorageClass serão atendidas de acordo com o StorageClass de sua escolha. Nesta seção, você verá as etapas para alterar o padrão.

Implantar um novo sistema de armazenamento

Implantar um novo sistema de armazenamento e quaisquer componentes de software para integrar o novo mecanismo de armazenamento a um cluster do Kubernetes. Por exemplo, talvez seja necessário instalar um driver CSI no cluster.

Essa etapa depende do fornecedor de armazenamento que você está usando. Para drivers CSI, os fornecedores precisam fornecer instruções para implantar o driver CSI em um cluster do Kubernetes. A documentação do driver CSI precisa incluir os parâmetros específicos do driver que você provisiona ao StorageClass, incluindo o nome do provisionador.

Ao criar um StorageClass para o novo dispositivo, você deve nomear o StorageClass de acordo com as propriedades dele (como "rápido" ou "altamente replicado"), em vez de usar o nome do driver ou do dispositivo específico por trás dele. Isso facilitará a aplicação de políticas de armazenamento consistentes nos clusters e ambientes.

Remover a anotação padrão do StorageClass standard

Para abrir o manifesto StorageClass standard em um editor de texto, insira o seguinte comando:

kubectl --kubeconfig [CLUSTER_KUBECONFIG] edit storageclass standard

No editor de texto, remova a anotação storageclass.kubernetes.io/is-default-class: "true". Feche o editor de texto.

Para verificar se a anotação foi removida, digite este comando:

kubectl --kubeconfig [CLUSTER_KUBECONFIG] get storageclass standard --output yaml

Criar um novo StorageClass

Crie um manifesto para um novo StorageClass. Inclua a anotação storageclass.kubernetes.io/is-default-class: "true". Exemplo:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  annotations:
    storageclass.kubernetes.io/is-default-class: "true"
  ...
  name: my-storage-class
  ...
parameters:
  ...
provisioner: [MY_PROVISIONER]
...

Salve o manifesto como um arquivo YAML e crie o novo StorageClass:

kubectl --kubeconfig [CLUSTER_KUBECONFIG] apply -f [MANIFEST_FILE]

em que [MANIFEST_FILE] é o caminho para o novo arquivo de manifesto de StorageClass.

A seguir