Utilisation du stockage distribué Alibaba Cloud dans un cluster K8S auto-hébergé
Categories:
Introduction
Cet article a été rédigé le 2024.06.14 et décrit comment utiliser le stockage distribué Alibaba Cloud dans un cluster auto-hébergé sur Alibaba Cloud. En fin d’article, des liens de documentation sont fournis. La documentation officielle d’Alibaba Cloud est en chinois, mais l’installation du plug-in de stockage Alibaba Cloud est sur GitHub et n’a actuellement que la documentation anglaise. Il est recommandé aux lecteurs ayant les conditions de lire le texte original autant que possible.
Installation du plug-in de stockage
- Créer une stratégie d’autorisation personnalisée : https://github.com/kubernetes-sigs/alibaba-cloud-csi-driver/blob/master/docs/ram-policies/disk.json
- Créer un rôle RAM, accorder la stratégie d’autorisation personnalisée, stocker temporairement l’
accesskeyet lesecretkubectl create secret -n kube-system generic csi-access-key --from-literal=id='{id}' --from-literal=secret='{secret}'
- Installer le pilote CSI. Il n’y a pas de chart helm, l’installation doit être locale (20240613).
git clone https://github.com/kubernetes-sigs/alibaba-cloud-csi-driver.gitcd alibaba-cloud-csi-driver/deploy- Si vous installez sur un cluster auto-hébergé sur ECS d’Alibaba Cloud, vous pouvez exécuter la phrase suivante directement. Si ce n’est pas le cas, veuillez lire vous-même : 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
- Confirmer,
watch kubectl get pods -n kube-system -l app=csi-plugin
Référentiel de sélection des types de stockage
- La capacité minimale de création du disque cloud ECS est de 20 Go, IOPS 3000. Cette capacité est assez grande et pas très rentable.
- Volume de stockage cloud dynamique
- Documentation officielle :
- Le disque cloud ne supporte pas l’utilisation inter-zone, il s’agit d’un stockage non partagé et ne peut être monté que par un Pod à la fois. (Testé en pratique, il peut être monté par plusieurs Pods du même deployment)
- Le type de disque cloud et le type ECS doivent correspondre pour pouvoir être montés, sinon le montage échouera. Veuillez consulter la famille de spécifications d’instance pour la relation de correspondance entre le type de disque cloud et le type ECS.
- Lors du déploiement de l’application, le disque cloud est acheté automatiquement via StorageClass pour créer PV. Si vous avez déjà acheté le disque cloud, il est recommandé d’utiliser le volume de stockage cloud statique.
- La taille du disque cloud demandé ne doit pas dépasser la plage de capacité du disque unique.
- Lorsque le Pod est reconstruit, le disque cloud original sera remonté. Si en raison d’autres limitations, il ne peut pas être planifié dans la zone à disponibilité d’origine, le Pod sera dans un état Pending.
- Le disque cloud créé dynamiquement est un disque à paiement à l’usage.
- Autres conclusions de test :
- Bien que le disque cloud puisse être monté par plusieurs Pods, seul un Pod peut lire et écrire, les autres Pods ne peuvent pas lire et écrire. Par conséquent,
accessModesdans pvc ne peut être défini qu’àReadWriteOnce, modifier ne donnera pas de résultats corrects. - Si
reclaimPolicyde StorageClass est défini surDelete, alors lors de la suppression de PVC, le disque cloud peut également être automatiquement supprimé. - Si
reclaimPolicyde StorageClass est défini surRetain, alors lors de la suppression de PVC, le disque cloud ne sera pas automatiquement supprimé, il faut le supprimer manuellement dans le cluster et la console Alibaba Cloud.
- Bien que le disque cloud puisse être monté par plusieurs Pods, seul un Pod peut lire et écrire, les autres Pods ne peuvent pas lire et écrire. Par conséquent,
- Difficile de trouver un usage approprié.
- Documentation officielle :
- Volume de stockage cloud statique
- Documentation officielle :
- Créer manuellement PV et PVC
- Le disque cloud ne supporte pas l’utilisation inter-zone, il s’agit d’un stockage non partagé et ne peut être monté que par un Pod à la fois.
- Le type de disque cloud et le type ECS doivent correspondre pour pouvoir être montés, sinon le montage échouera.
- Vous pouvez choisir un disque cloud en état de montage dans la même région et zone à disponibilité que le cluster.
- Documentation officielle :
- Volume de stockage cloud dynamique
- La latence d’opération du NAS est importante, la meilleure performance observée est de 2 ms, la profondeur de stockage de 10 ms, facturation à l’usage, les performances de lecture et d’écriture sont plus élevées par rapport au stockage d’objets OSS
- Volume de stockage 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 est un stockage partagé, peut fournir un service de stockage partagé à plusieurs Pods simultanément.
- (20240613) Actuellement supporte CentOS, Alibaba Cloud Linux, ContainerOS et le système d’exploitation Anolis.
- Lors de l’utilisation du volume de données, chaque application utilise un nom PV indépendant.
- Le volume de données OSS est un système de fichiers FUSE monté via le fichier ossfs.
- Convient aux scénarios de lecture de fichiers. Par exemple, lire des fichiers de configuration, des fichiers vidéo, des fichiers image, etc.
- Non adapté aux scénarios d’application nécessitant l’écriture de fichiers. Si vous devez écrire des fichiers, il est recommandé d’utiliser le SDK pour réaliser l’opération d’écriture ou d’utiliser le service de volume de stockage NAS.
- ossfs peut optimiser ses performances en matière de cache, de permissions, etc., en ajustant les paramètres de configuration.
- Limitations d’ossfs
- Les opérations d’écriture aléatoire ou d’ajout de fichiers entraîneront la réécriture de tous les fichiers.
- En raison de la nécessité d’accéder à distance au serveur OSS, les performances des opérations de métadonnées telles que list directory sont médiocres.
- Les opérations de rename de fichiers et de dossiers ne sont pas atomiques.
- Lorsque plusieurs clients montent le même Bucket OSS, ils dépendent de la coordination des comportements de chaque client par l’utilisateur lui-même, par exemple, éviter que plusieurs clients écrivent dans le même fichier, etc.
- Ne supporte pas les liens durs (Hard Link).
- Lorsque la version du CSI plugin est inférieure à v1.20.7, il ne détecte que les modifications locales et ne peut pas détecter les modifications externes d’autres clients ou outils.
- Pour éviter l’augmentation de la charge du système, veuillez ne pas l’utiliser dans les scénarios de lecture et d’écriture à haute concurrence.
- Si c’est un cluster hybride (certains nœuds n’appartiennent pas à Alibaba Cloud), alors seul le volume statique NAS et OSS peut être utilisé.
- Le disque cloud, le nas et l’oss ont tous des limitations régionales.
En résumé, le disque cloud est demandé et monté sous forme de disque dur entier, peu pratique pour le partage. OSS a une granularité d’opération jusqu’au fichier, les scénarios de lecture et d’écriture haute concurrence présentent des problèmes de performance, et le système supporté est limité.
- Le disque cloud convient aux scénarios nécessitant beaucoup d’espace et de hautes performances, tels que les bases de données.
- Les autres scénarios avec des exigences de performance pas trop élevées peuvent choisir NAS.
- OSS n’est pas adapté aux scénarios d’écriture haute concurrence du cluster Alibaba Cloud, il peut être appliqué aux scénarios de lecture concourante.
La documentation officielle d’Alibaba Cloud présente des problèmes d’emplacement non uniforme et de contradictions mutuelles. Les lecteurs doivent juger selon la date de la documentation. Certaines caractéristiques déclarées non supportées peuvent être supportées avec la mise à jour de la version. Il est nécessaire de faire quelques essais par soi-même.
Procédure opérationnelle
C’est la documentation de guide officielle d’Alibaba Cloud. Après avoir installé le plug-in de stockage Alibaba Cloud selon les instructions ci-dessus, vous pouvez déployer et tester selon Utilisation du volume de stockage NAS statique.
Remarque : Les utilisateurs de k3s rencontreront des problèmes de local-path-storage, les messages d’erreur peuvent être,
- échec de provisionnement du volume avec StorageClass “local-path”: claim.Spec.Selector n’est pas supporté
- En attente de la création d’un volume soit par le provisionneur externe ’localplugin.csi.alibabacloud.com’ soit manuellement par l’administrateur système. Si la création du volume est retardée, veuillez vérifier que le provisionneur fonctionne et est correctement enregistré.
Vous devez définir storageClassName de persistentVolumeClaim sur vide pour éviter d’utiliser le local-path-storage par défaut de k3s.
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: pvc-nas
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 2Gi
selector:
matchLabels:
alicloud-pvname: pv-nas
storageClassName: ""
Références
- 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