Usare Azure Container Archiviazione Preview con Azure Managed Disks
Azure Container Archiviazione è un servizio di gestione, distribuzione e orchestrazione basato sul cloud creato in modo nativo per i contenitori. Questo articolo illustra come configurare Azure Container Archiviazione per l'uso di dischi gestiti di Azure come risorsa di archiviazione back-end per i carichi di lavoro Kubernetes. Al termine, si avrà un pod che usa i dischi gestiti di Azure come risorsa di archiviazione.
Prerequisiti
Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.
Questo articolo richiede la versione più recente (2.35.0 o successiva) dell'interfaccia della riga di comando di Azure. Vedere Come installare l'interfaccia della riga di comando di Azure. Se si usa l'ambiente Bash in Azure Cloud Shell, la versione più recente è già installata. Se si prevede di eseguire i comandi in locale anziché in Azure Cloud Shell, assicurarsi di eseguirli con privilegi amministrativi. Per altre informazioni, vedere Introduzione ad Azure Cloud Shell.
È necessario il client della riga di comando kubernetes,
kubectl
. È già installato se si usa Azure Cloud Shell oppure è possibile installarlo in locale eseguendo ilaz aks install-cli
comando .
- Se azure Container Archiviazione non è già stato installato, seguire le istruzioni in Installare Azure Container Archiviazione.
Nota
Per usare Azure Container Archiviazione con dischi gestiti di Azure, il cluster del servizio Azure Kubernetes deve avere un pool di nodi di almeno tre macchine virtuali per utilizzo generico, ad esempio standard_d4s_v5 per i nodi del cluster, ognuna con almeno quattro CPU virtuali (vCPU).
Disponibilità a livello di area
Azure Container Archiviazione è disponibile solo per un subset di aree di Azure:
- (Africa) Africa meridionale e settentrionale
- (Asia Pacifico) Australia orientale
- (Asia Pacifico) Asia orientale
- (Asia Pacifico) Giappone orientale
- (Asia Pacifico) Corea centrale
- (Asia Pacifico) Asia sud-orientale
- (Asia Pacifico) India centrale
- (Europa) Francia centrale
- (Europa) Europa settentrionale
- (Europa) Europa occidentale
- (Europa) Regno Unito meridionale
- (Europa) Svezia centrale
- (Europa) Svizzera settentrionale
- (Medio Oriente) Emirati Arabi Uniti settentrionali
- (America del Nord) Stati Uniti orientali
- (America del Nord) Stati Uniti orientali 2
- (America del Nord) Stati Uniti occidentali
- (America del Nord) Stati Uniti occidentali 2
- (America del Nord) Stati Uniti occidentali 3
- (America del Nord) Stati Uniti centrali
- (America del Nord) Stati Uniti centro-settentrionali
- (America del Nord) Stati Uniti centro-meridionali
- (America del Nord) Stati Uniti centro-occidentali
- (America del Nord) Canada centrale
- (America del Nord) Canada orientale
- (America del Sud) Brasile meridionale
Creare un pool di archiviazione
Creare prima di tutto un pool di archiviazione, ovvero un raggruppamento logico di archiviazione per il cluster Kubernetes, definendolo in un file manifesto YAML.
Se è stato abilitato Azure Container Archiviazione usando az aks create
comandi o az aks update
, potrebbe essere già disponibile un pool di archiviazione. Usare kubectl get sp -n acstor
per ottenere l'elenco dei pool di archiviazione. Se è già disponibile un pool di archiviazione che si vuole usare, è possibile ignorare questa sezione e passare a Visualizzare le classi di archiviazione disponibili. Se è già stato effettuato il provisioning di dischi gestiti di Azure, è possibile creare un pool di archiviazione con provisioning preliminare usando tali dischi.
Importante
Se si vogliono usare chiavi personalizzate per crittografare i volumi invece di usare chiavi gestite da Microsoft, non creare il pool di archiviazione seguendo la procedura descritta in questa sezione. Passare invece a Abilitare la crittografia lato server con le chiavi gestite dal cliente e seguire la procedura indicata.
Seguire questa procedura per creare un pool di archiviazione per Dischi di Azure.
Usare l'editor di testo preferito per creare un file manifesto YAML,
code acstor-storagepool.yaml
ad esempio .Incollare il codice seguente. Il valore del nome del pool di archiviazione può essere quello desiderato. Per skuName specificare il livello di prestazioni e ridondanza. I valori accettabili sono Premium_LRS, Standard_LRS, StandardSSD_LRS, UltraSSD_LRS, Premium_ZRS, PremiumV2_LRS e StandardSSD_ZRS. Per l'archiviazione, specificare la quantità di capacità di archiviazione per il pool in Gi o Ti. Salvare il file.
apiVersion: containerstorage.azure.com/v1 kind: StoragePool metadata: name: azuredisk namespace: acstor spec: poolType: azureDisk: skuName: Premium_LRS resources: requests: storage: 1Ti
Applicare il file manifesto YAML per creare il pool di archiviazione.
kubectl apply -f acstor-storagepool.yaml
Al termine della creazione del pool di archiviazione, verrà visualizzato un messaggio simile al seguente:
storagepool.containerstorage.azure.com/azuredisk created
È anche possibile eseguire questo comando per controllare lo stato del pool di archiviazione. Sostituire
<storage-pool-name>
con il valore del nome del pool di archiviazione. Per questo esempio, il valore sarà azuredisk.kubectl describe sp <storage-pool-name> -n acstor
Quando viene creato il pool di archiviazione, Azure Container Archiviazione creerà una classe di archiviazione per conto dell'utente usando la convenzione acstor-<storage-pool-name>
di denominazione . È ora possibile visualizzare le classi di archiviazione disponibili e creare un'attestazione di volume permanente.
Creare un pool di archiviazione con provisioning preliminare
Se è già stato effettuato il provisioning di dischi gestiti di Azure, è possibile creare un pool di archiviazione con provisioning preliminare usando tali dischi. Poiché è già stato effettuato il provisioning dei dischi, non è necessario specificare la capacità skuName o di archiviazione durante la creazione del pool di archiviazione.
Seguire questa procedura per creare un pool di archiviazione con provisioning preliminare per Dischi di Azure.
Accedere al portale di Azure.
Per ogni disco che si vuole usare, passare al disco gestito di Azure e selezionare Impostazioni Proprietà>. Copiare l'intera stringa in ID risorsa e inserirla in un file di testo.
Usare l'editor di testo preferito per creare un file manifesto YAML,
code acstor-storagepool.yaml
ad esempio .Incollare il codice seguente. Il valore del nome del pool di archiviazione può essere quello desiderato. Sostituire
<resource-id>
con l'ID risorsa di ogni disco gestito. Salvare il file.apiVersion: containerstorage.azure.com/v1 kind: StoragePool metadata: name: sp-preprovisioned namespace: acstor spec: poolType: azureDisk: disks: - reference <resource-id1> - reference <resource-id2>
Applicare il file manifesto YAML per creare il pool di archiviazione.
kubectl apply -f acstor-storagepool.yaml
Al termine della creazione del pool di archiviazione, verrà visualizzato un messaggio simile al seguente:
storagepool.containerstorage.azure.com/sp-preprovisioned created
È anche possibile eseguire questo comando per controllare lo stato del pool di archiviazione. Sostituire
<storage-pool-name>
con il valore del nome del pool di archiviazione. Per questo esempio, il valore verrà sottoposto a sp-preprovisioning.kubectl describe sp <storage-pool-name> -n acstor
Quando viene creato il pool di archiviazione, Azure Container Archiviazione creerà una classe di archiviazione per conto dell'utente usando la convenzione acstor-<storage-pool-name>
di denominazione . È ora possibile visualizzare le classi di archiviazione disponibili e creare un'attestazione di volume permanente.
Abilitare la crittografia lato server con chiavi gestite dal cliente
Se è già stato creato un pool di archiviazione o si preferisce usare le chiavi di crittografia gestite da Microsoft predefinite, ignorare questa sezione e passare a Visualizzare le classi di archiviazione disponibili.
Tutti i dati in un account di archiviazione di Azure vengono crittografati inattivi. Per impostazione predefinita, i dati vengono crittografati con chiavi gestite da Microsoft. Per un maggiore controllo sulle chiavi di crittografia, è possibile fornire chiavi gestite dal cliente (CMK) per crittografare i volumi persistenti che verranno creati da un pool di archiviazione su disco di Azure.
Per usare una chiave personalizzata, è necessario avere un'istanza di Azure Key Vault con una chiave. L'insieme di credenziali delle chiavi deve avere la protezione dall'eliminazione abilitata e deve usare il modello di autorizzazione controllo degli accessi in base al ruolo di Azure. Altre informazioni sulle chiavi gestite dal cliente in Linux.
Quando si crea il pool di archiviazione, è necessario definire i parametri cmk. I parametri di crittografia cmk necessari sono:
- keyVersion specifica la versione della chiave da usare
- keyName è il nome della chiave
- keyVaultUri è l'identificatore di risorsa uniforme dell'insieme di credenziali delle chiavi di Azure, ad esempio
https://user.vault.azure.net
- Identity specifica un'identità gestita con accesso all'insieme di credenziali, ad esempio
/subscriptions/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/resourcegroups/MC_user-acstor-westus2-rg_user-acstor-westus2_westus2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/user-acstor-westus2-agentpool
Seguire questa procedura per creare un pool di archiviazione usando la propria chiave di crittografia. Tutti i volumi permanenti creati da questo pool di archiviazione verranno crittografati usando la stessa chiave.
Usare l'editor di testo preferito per creare un file manifesto YAML,
code acstor-storagepool-cmk.yaml
ad esempio .Incollare il codice seguente, specificare i parametri necessari e salvare il file. Il valore del nome del pool di archiviazione può essere quello desiderato. Per skuName specificare il livello di prestazioni e ridondanza. I valori accettabili sono Premium_LRS, Standard_LRS, StandardSSD_LRS, UltraSSD_LRS, Premium_ZRS, PremiumV2_LRS e StandardSSD_ZRS. Per l'archiviazione, specificare la quantità di capacità di archiviazione per il pool in Gi o Ti. Assicurarsi di specificare i parametri di crittografia della chiave gestita dal cliente.
apiVersion: containerstorage.azure.com/v1 kind: StoragePool metadata: name: azuredisk namespace: acstor spec: poolType: azureDisk: skuName: Premium_LRS encryption: { keyVersion: "<key-version>", keyName: "<key-name>", keyVaultUri: "<key-vault-uri>", identity: "<identity>" } resources: requests: storage: 1Ti
Applicare il file manifesto YAML per creare il pool di archiviazione.
kubectl apply -f acstor-storagepool-cmk.yaml
Al termine della creazione del pool di archiviazione, verrà visualizzato un messaggio simile al seguente:
storagepool.containerstorage.azure.com/azuredisk created
È anche possibile eseguire questo comando per controllare lo stato del pool di archiviazione. Sostituire
<storage-pool-name>
con il valore del nome del pool di archiviazione. Per questo esempio, il valore sarà azuredisk.kubectl describe sp <storage-pool-name> -n acstor
Quando viene creato il pool di archiviazione, Azure Container Archiviazione creerà una classe di archiviazione per conto dell'utente usando la convenzione acstor-<storage-pool-name>
di denominazione .
Visualizzare le classi di archiviazione disponibili
Quando il pool di archiviazione è pronto per l'uso, è necessario selezionare una classe di archiviazione per definire il modo in cui l'archiviazione viene creata dinamicamente durante la creazione di attestazioni di volumi persistenti e la distribuzione di volumi permanenti.
Eseguire kubectl get sc
per visualizzare le classi di archiviazione disponibili. Verrà visualizzata una classe di archiviazione denominata acstor-<storage-pool-name>
.
Importante
Non usare la classe di archiviazione contrassegnata come interna. Si tratta di una classe di archiviazione interna necessaria per il funzionamento di Azure Container Archiviazione.
Creare un'attestazione di volume permanente
Un'attestazione di volume permanente viene usata per il provisioning automatico dell'archiviazione in una classe di archiviazione. Seguire questa procedura per creare un PVC usando la nuova classe di archiviazione.
Usare l'editor di testo preferito per creare un file manifesto YAML,
code acstor-pvc.yaml
ad esempio .Incollare il codice seguente e salvare il file. Il valore di PVC
name
può essere quello che vuoi.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: azurediskpvc spec: accessModes: - ReadWriteOnce storageClassName: acstor-azuredisk # replace with the name of your storage class if different resources: requests: storage: 100Gi
Applicare il file manifesto YAML per creare il PVC.
kubectl apply -f acstor-pvc.yaml
L'output visualizzato sarà simile al seguente:
persistentvolumeclaim/azurediskpvc created
È possibile verificare lo stato del PVC eseguendo il comando seguente:
kubectl describe pvc azurediskpvc
Una volta creato il PVC, è pronto per l'uso da parte di un pod.
Distribuire un pod e collegare un volume permanente
Creare un pod usando Fio (tester di I/O flessibili) per il benchmarking e la simulazione del carico di lavoro e specificare un percorso di montaggio per il volume permanente. Per claimName, usare il valore del nome usato durante la creazione dell'attestazione del volume permanente.
Usare l'editor di testo preferito per creare un file manifesto YAML,
code acstor-pod.yaml
ad esempio .Incollare il codice seguente e salvare il file.
kind: Pod apiVersion: v1 metadata: name: fiopod spec: nodeSelector: acstor.azure.com/io-engine: acstor volumes: - name: azurediskpv persistentVolumeClaim: claimName: azurediskpvc containers: - name: fio image: nixery.dev/shell/fio args: - sleep - "1000000" volumeMounts: - mountPath: "/volume" name: azurediskpv
Applicare il file manifesto YAML per distribuire il pod.
kubectl apply -f acstor-pod.yaml
L'output dovrebbe essere simile al seguente:
pod/fiopod created
Verificare che il pod sia in esecuzione e che l'attestazione del volume permanente sia stata associata correttamente al pod:
kubectl describe pod fiopod kubectl describe pvc azurediskpvc
Controllare il test fio per visualizzarne lo stato corrente:
kubectl exec -it fiopod -- fio --name=benchtest --size=800m --filename=/volume/test --direct=1 --rw=randrw --ioengine=libaio --bs=4k --iodepth=16 --numjobs=8 --time_based --runtime=60
È stato ora distribuito un pod che usa Azure Disks come risorsa di archiviazione ed è possibile usarlo per i carichi di lavoro Kubernetes.
Scollegare e ricollegare un volume permanente
Per scollegare un volume permanente, eliminare il pod a cui è collegato il volume permanente. Sostituire <pod-name>
con il nome del pod, ad esempio fiopod.
kubectl delete pods <pod-name>
Per ricollegare un volume permanente, è sufficiente fare riferimento al nome dell'attestazione di volume persistente nel file manifesto YAML come descritto in Distribuire un pod e collegare un volume permanente.
Per verificare il volume permanente a cui è associata un'attestazione di volume permanente, eseguire kubectl get pvc <persistent-volume-claim-name>
.
Espandere un pool di archiviazione
È possibile espandere i pool di archiviazione supportati da Dischi di Azure per aumentare rapidamente e senza tempi di inattività. La compattazione dei pool di archiviazione non è attualmente supportata.
Nota
L'espansione di un pool di archiviazione può aumentare i costi per Azure Container Archiviazione e Dischi di Azure. Vedere la pagina dei prezzi di Azure Container Archiviazione.
Seguire queste istruzioni per espandere un pool di archiviazione esistente per Dischi di Azure.
Usando un editor di testo, aprire il file manifesto YAML usato per creare il pool di archiviazione, ad esempio
code acstor-storagepool.yaml
.Sostituire la voce di archiviazione specificata nel file manifesto YAML con il valore desiderato. Questo valore deve essere maggiore della capacità corrente del pool di archiviazione. Ad esempio, se la specifica è impostata su
storage: 1Ti
, modificarla instorage: 2Ti
. Se è stato creato un pool di archiviazione con provisioning preliminare, non sarà presente una voce di archiviazione perché il pool di archiviazione ha ereditato le dimensioni della capacità dai dischi di Azure di cui è stato effettuato il pre-provisioning. Se non viene visualizzata una voce di archiviazione in YAML, aggiungere il codice seguente specificando la capacità di archiviazione desiderata e quindi salvare il file manifesto:spec: resources: requests: storage: 2Ti
Applicare il file manifesto YAML per espandere il pool di archiviazione.
kubectl apply -f acstor-storagepool.yaml
Eseguire questo comando per controllare lo stato del pool di archiviazione. Sostituire
<storage-pool-name>
con il valore del nome del pool di archiviazione.kubectl describe sp <storage-pool-name> -n acstor
Verrà visualizzato un messaggio simile a "il pool di archiviazione è in espansione". Eseguire di nuovo il comando dopo alcuni minuti e il messaggio dovrebbe essere andato via.
Eseguire
kubectl get sp -A
e il pool di archiviazione deve riflettere le nuove dimensioni.
Eliminare un pool di archiviazione
Se si vuole eliminare un pool di archiviazione, eseguire il comando seguente. Sostituire <storage-pool-name>
con il nome del pool di archiviazione.
kubectl delete sp -n acstor <storage-pool-name>