Utilizar controladores de disco da Interface de Armazenamento de Contentores (CSI) no AKS ativado pelo Azure Arc
> Aplica-se a: AKS no Azure Stack HCI 22H2, AKS no Windows Server, AKS no Azure Stack HCI 23H2
Este artigo descreve como utilizar classes de armazenamento incorporadas da Interface de Armazenamento de Contentores (CSI) para criar dinamicamente volumes persistentes do disco e criar classes de armazenamento personalizadas no AKS ativadas pelo Arc.
Descrição geral da CSI no AKS ativada pelo Arc
A Interface de Armazenamento de Contentores (CSI) é uma norma para expor sistemas arbitrários de armazenamento de ficheiros e blocos a cargas de trabalho em contentores no Kubernetes. Ao utilizar a CSI, o AKS ativado pelo Arc pode escrever, implementar e iterar plug-ins para expor novos sistemas de armazenamento. A utilização da CSI também pode melhorar as existentes no Kubernetes sem ter de tocar no código principal do Kubernetes e, em seguida, aguardar pelos respetivos ciclos de lançamento.
Os controladores CSI de disco e ficheiro utilizados pelo AKS Arc são controladores compatíveis com a especificação CSI.
O suporte do controlador de armazenamento CSI no AKS Arc permite-lhe utilizar:
Discos do AKS Arc que pode utilizar para criar um recurso do Kubernetes DataDisk . Estes são montados como ReadWriteOnce, pelo que só estão disponíveis para um único pod de cada vez. Para volumes de armazenamento que podem ser acedidos por vários pods em simultâneo, utilize ficheiros arc do AKS.
Ficheiros Arc do AKS que pode utilizar para montar uma partilha SMB ou NFS em pods. Estes são montados como ReadWriteMany, para que possa partilhar dados entre vários nós e pods. Também podem ser montados como ReadWriteOnce com base na especificação PVC (afirmação de volume persistente).
Criar dinamicamente volumes persistentes do disco com a classe de armazenamento incorporada
Uma classe de armazenamento é utilizada para definir como uma unidade de armazenamento é criada dinamicamente com um volume persistente. Para obter mais informações sobre como utilizar classes de armazenamento, veja Classes de armazenamento do Kubernetes.
No AKS Arc, a classe de armazenamento predefinida é criada por predefinição e utiliza CSI para criar volumes suportados por VHDX. A política de recuperação garante que o VHDX subjacente é eliminado quando o volume persistente que o utilizou é eliminado. A classe de armazenamento também configura os volumes persistentes para serem expansíveis; só precisa de editar a afirmação de volume persistente com o novo tamanho.
Para tirar partido desta classe de armazenamento, crie um PVC e um respetivo pod que referencie e utilize o mesmo. Um PVC é utilizado para aprovisionar automaticamente o armazenamento com base numa classe de armazenamento. Um PVC pode utilizar uma das classes de armazenamento pré-criadas ou uma classe de armazenamento definida pelo utilizador para criar um VHDX do tamanho pretendido. Quando cria uma definição de pod, o PVC é especificado para pedir o armazenamento pretendido.
Criar uma classe de armazenamento personalizada para discos
A classe de armazenamento predefinida é adequada para os cenários mais comuns. No entanto, em alguns casos, poderá querer criar a sua própria classe de armazenamento que armazena PVs numa localização específica mapeada para um escalão de desempenho específico.
Se tiver cargas de trabalho (pods) do Linux, tem de criar uma classe de armazenamento personalizada com o parâmetro fsType: ext4
. Este requisito aplica-se às versões 1.19 e 1.20 ou posteriores do Kubernetes. O exemplo seguinte mostra uma definição de classe de armazenamento personalizada com fsType
parâmetro definido:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: aks-hci-disk-custom
parameters:
blocksize: "33554432"
container: SqlStorageContainer
dynamic: "true"
group: clustergroup-summertime
hostname: TESTPATCHING-91.sys-sqlsvr.local
logicalsectorsize: "4096"
physicalsectorsize: "4096"
port: "55000"
fsType: ext4
provisioner: disk.csi.akshci.com
reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true
Se criar uma classe de armazenamento personalizada, pode especificar a localização onde pretende armazenar PVs. Se a infraestrutura subjacente for o Azure Stack HCI, esta nova localização poderá ser um volume apoiado por SSDs/NVMe de alto desempenho ou por um volume otimizado para custos apoiado por HDDs.
Criar uma classe de armazenamento personalizada é um processo de dois passos:
Crie um novo caminho de armazenamento com os
stack-hci-vm storagepath
cmdlets para criar, mostrar e listar os caminhos de armazenamento no cluster do Azure Stack HCI. Para obter mais informações sobre a criação do caminho de armazenamento, veja caminho de armazenamento.Para
$path
, crie um caminho de armazenamento com o nome$storagepathname
; por exemplo, C:\ClusterStorage\test-storagepath:az stack-hci-vm storagepath create --resource-group $resource_group --custom-location $customLocationID --name $storagepathname --path $path
Obtenha o ID do recurso do caminho de armazenamento:
$storagepathID = az stack-hci-vm storagepath show --name $storagepathname --resource-group $resource_group --query "id" -o tsv
Crie uma nova classe de armazenamento personalizada com o novo caminho de armazenamento.
Crie um ficheiro com o nome sc-aks-hci-disk-custom.yaml e, em seguida, copie o manifesto do seguinte ficheiro YAML. A classe de armazenamento é igual à classe de armazenamento predefinida, exceto com o novo
container
. Utilize ostorage path ID
criado no passo anterior paracontainer
. Paragroup
ehostname
, consulte a classe de armazenamento predefinida ao executarkubectl get storageclass default -o yaml
e, em seguida, utilize os valores especificados:kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: aks-hci-disk-custom provisioner: disk.csi.akshci.com parameters: blocksize: "33554432" container: <storage path ID> dynamic: "true" group: <e.g clustergroup-akshci> # same as the default storageclass hostname: <e.g. ca-a858c18c.ntprod.contoso.com> # same as the default storageclass logicalsectorsize: "4096" physicalsectorsize: "4096" port: "55000" fsType: ext4 # refer to the note above to determine when to include this parameter allowVolumeExpansion: true reclaimPolicy: Delete volumeBindingMode: Immediate
Crie a classe de armazenamento com o comando kubectl apply e especifique o ficheiro sc-aks-hci-disk-custom.yaml :
$ kubectl apply -f sc-aks-hci-disk-custom.yaml storageclass.storage.k8s.io/aks-hci-disk-custom created
Passos seguintes
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários