Uso dell'archiviazione distribuita Alibaba Cloud su cluster K8S auto-costruiti
Categories:
Introduzione
Questo articolo è stato scritto il 14/06/2024 e descrive come utilizzare l’archiviazione distribuita Alibaba Cloud su un cluster auto-costruito su Alibaba Cloud. Alla fine sono inclusi i collegamenti ai documenti. La documentazione ufficiale di Alibaba Cloud è in cinese, ma l’installazione del plugin di archiviazione Alibaba Cloud su github è disponibile solo in inglese. Si consiglia ai lettori con la possibilità di leggere il documento originale in inglese.
Installazione plugin di archiviazione
- Creare una strategia di autorizzazioni personalizzata: https://github.com/kubernetes-sigs/alibaba-cloud-csi-driver/blob/master/docs/ram-policies/disk.json
- Creare un ruolo RAM, concedere la strategia di autorizzazioni personalizzata, memorizzare temporaneamente
accesskeyesecretkubectl create secret -n kube-system generic csi-access-key --from-literal=id='{id}' --from-literal=secret='{secret}'
- Installare il driver CSI, senza helm chart, installazione locale (20240613).
git clone https://github.com/kubernetes-sigs/alibaba-cloud-csi-driver.gitcd alibaba-cloud-csi-driver/deploy- Se installato su un cluster auto-costruito su ECS Alibaba Cloud, eseguire direttamente la frase seguente, se non è così, leggere autonomamente: https://github.com/kubernetes-sigs/alibaba-cloud-csi-driver/blob/master/docs/install.md
helm upgrade --install alibaba-cloud-csi-driver ./chart --values chart/values-ecs.yaml --namespace kube-system
- Verifica,
watch kubectl get pods -n kube-system -l app=csi-plugin
Riferimento per la selezione del tipo di archiviazione
- La capacità minima per la creazione di dischi su ECS è 20GB, IOPS 3000, questa capacità è piuttosto grande e non è molto conveniente.
- Volume di archiviazione cloud dinamico
- Documentazione ufficiale:
- I dischi cloud non supportano l’uso cross-zone, sono archiviazione non condivisa e possono essere montati solo da un Pod alla volta. (Test effettivo: può essere montato da più Pod dello stesso deployment)
- Il tipo di disco cloud deve corrispondere al tipo ECS per essere montato, altrimenti il montaggio fallirà. Per informazioni sulla corrispondenza tra tipo di disco cloud e tipo ECS, consultare Famiglie di specifiche dell’istanza.
- Durante il deployment dell’applicazione, viene acquistato automaticamente un disco cloud tramite StorageClass. Se si è già acquistato un disco cloud, si consiglia di utilizzare il volume di archiviazione cloud statico.
- La dimensione del disco cloud richiesto non può superare il limite massimo della capacità del disco cloud.
- Quando il Pod viene ricreato, il disco cloud originale verrà rimontato. Se a causa di altri limiti non è possibile pianificare nella zona disponibile originale, il Pod rimarrà in stato Pending.
- I dischi cloud creati dinamicamente sono dischi cloud a consumo.
- Altri test riassunti:
- Sebbene il disco cloud possa essere montato da più Pod, solo un Pod può leggere e scrivere, gli altri Pod non possono. Pertanto, in pvc
accessModespuò essere impostato solo suReadWriteOnce, la modifica non produce risultati corretti. - Se
reclaimPolicydi StorageClass è impostato suDelete, il disco cloud verrà automaticamente eliminato quando il PVC viene eliminato. - Se
reclaimPolicydi StorageClass è impostato suRetain, il disco cloud non verrà eliminato automaticamente quando il PVC viene eliminato, sarà necessario eliminarlo manualmente dal cluster e dalla console Alibaba Cloud.
- Sebbene il disco cloud possa essere montato da più Pod, solo un Pod può leggere e scrivere, gli altri Pod non possono. Pertanto, in pvc
- Difficile trovare un uso appropriato.
- Documentazione ufficiale:
- Volume di archiviazione cloud statico
- Documentazione ufficiale:
- Creare manualmente PV e PVC
- I dischi cloud non supportano l’uso cross-zone, sono archiviazione non condivisa e possono essere montati solo da un Pod alla volta.
- Il tipo di disco cloud deve corrispondere al tipo ECS per essere montato, altrimenti il montaggio fallirà.
- È possibile scegliere un disco cloud in attesa di essere montato nella stessa regione e zona disponibile del cluster.
- Documentazione ufficiale:
- Volume di archiviazione cloud dinamico
- NAS presenta un alto ritardo operativo, prestazioni migliori 2ms, archiviazione profonda 10ms, a consumo, prestazioni di lettura e scrittura relativamente migliori rispetto all’archiviazione oggetti OSS
- Volume di archiviazione OSS, https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/oss-volume-overview-1?spm=a2c4g.11186623.0.0.43166a351NbtvU
- OSS è archiviazione condivisa, può fornire servizi di archiviazione condivisa a più Pod contemporaneamente.
- (20240613) Attualmente supporta CentOS, Alibaba Cloud Linux, ContainerOS e sistema operativo Anolis.
- Quando si utilizza un volume dati, ogni applicazione utilizza un nome PV indipendente.
- Il volume dati OSS è un filesystem FUSE montato tramite il file ossfs.
- Adatto a scenari di lettura file. Ad esempio, leggere file di configurazione, file video, file immagine, ecc.
- Non adatto a scenari di scrittura file. Se è necessario scrivere file, si consiglia di utilizzare SDK per implementare operazioni di scrittura o utilizzare il servizio di volume di archiviazione NAS.
- ossfs può ottimizzare le prestazioni in termini di cache, autorizzazioni, ecc. regolando i parametri di configurazione.
- Limitazioni di ossfs
- Operazioni di scrittura casuale o append su file causano la riscrittura di tutti i file.
- A causa della necessità di accedere remotamente al server OSS, le operazioni di metadati come list directory hanno prestazioni scadenti.
- Le operazioni di rinominare file e cartelle non sono atomiche.
- Quando più client montano lo stesso bucket OSS, dipende dall’utente coordinare autonomamente il comportamento di ogni client, ad esempio evitare che più client scrivano nello stesso file, ecc.
- Non supporta hard link.
- Per versioni di CSI plugin precedenti alla v1.20.7, rileva solo le modifiche locali e non le modifiche esterne effettuate da altri client o strumenti.
- Per evitare l’aumento del carico del sistema, non utilizzare in scenari di lettura/scrittura ad alta concorrenza.
- Se si tratta di un cluster ibrido (alcuni nodi non appartengono ad Alibaba Cloud), si possono utilizzare solo volumi statici NAS e OSS.
- I dischi cloud, NAS e OSS hanno tutti limitazioni regionali.
In sintesi, i dischi cloud vengono richiesti e montati come dischi interi, non sono convenienti per la condivisione. OSS ha granularità operativa a livello di file, presenta problemi di prestazioni in scenari di lettura/scrittura ad alta concorrenza e supporta un numero limitato di sistemi.
- I dischi cloud sono adatti a scenari che richiedono molto spazio e alte prestazioni come i database
- Altri scenari con requisiti di prestazioni non elevati possono scegliere NAS
- OSS non è adatto a scenari di scrittura ad alta concorrenza su cluster Alibaba Cloud, può essere applicato a scenari di lettura concorrente.
La documentazione ufficiale di Alibaba Cloud presenta problemi di posizione non uniforme e contraddizioni reciproche. I lettori devono giudicare autonomamente in base alla data del documento, alcune caratteristiche dichiarate non supportate potrebbero essere supportate con l’aggiornamento della versione, è necessario fare autonomamente alcuni tentativi.
Procedura operativa
Questa è la guida ufficiale di Alibaba Cloud. Dopo aver installato il plugin di archiviazione Alibaba Cloud seguendo le istruzioni precedenti, è possibile eseguire il deployment e il test seguendo Uso di volumi NAS statici.
Nota: Gli utenti k3s potrebbero incontrare problemi con local-path-storage, i messaggi di errore potrebbero essere:
- failed to provision volume with StorageClass “local-path”: claim.Spec.Selector is not supported
- Waiting for a volume to be created either by the external provisioner ’localplugin.csi.alibabacloud.com’ or manually by the system administrator. If volume creation is delayed, please verify that the provisioner is running and correctly registered.
È necessario impostare storageClassName su vuoto in persistentVolumeClaim per evitare l’uso di local-path-storage predefinito di k3s.
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: pvc-nas
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 2Gi
selector:
matchLabels:
alicloud-pvname: pv-nas
storageClassName: ""
Riferimenti
- https://github.com/kubernetes-sigs/alibaba-cloud-csi-driver
- https://github.com/kubernetes-sigs/alibaba-cloud-csi-driver/blob/master/docs/disk.md
- https://github.com/kubernetes-sigs/alibaba-cloud-csi-driver/blob/master/docs/install.md
- https://github.com/kubernetes-sigs/alibaba-cloud-csi-driver/blob/master/docs/ram-policies/disk.json
- https://github.com/kubernetes-sigs/alibaba-cloud-csi-driver/blob/master/deploy/chart/values.yaml
- https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/use-dynamically-provisioned-disk-volumes?#6d16e8a415nie
- https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/mount-statically-provisioned-nas-volumes?spm=a2c4g.11186623.0.0.125672b9VnrKw6