Como definir o StorageClass padrão

Um cluster de usuário tem um ou mais objetos StorageClass, e um deles é designado como o StorageClass padrão. Nesta página, mostramos como definir o StorageClass padrão para um cluster de usuário.

Para mais informações, consulte Armazenamento.

Encontrar o StorageClass padrão

Listar todos os StorageClasses:

kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get storageclasses

Na saída, é possível ver qual é o StorageClass padrão. Por exemplo, na saída a seguir, é possível ver que um StorageClass chamado standard-rwo é o StorageClass padrão:

standard                      kubernetes.io/vsphere-volume
standard-rwo (default)        csi.vsphere.vmware.com

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 de um driver CSI também precisa incluir os parâmetros específicos do driver que você fornece no 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 padrão

Abra o StorageClass padrão em um editor de texto:

kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] edit storageclass \
    DEFAULT_STORAGE_CLASS

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 [USER_CLUSTER_KUBECONFIG] get storageclass \
    DEFAULT_STORAGE_CLASS --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