Zelfgebouwde K8S-cluster dat gebruik maakt van gedistribueerde opslag van Alibaba Cloud
Categories:
Inleiding
Dit artikel is geschreven op 14-06-2024 en beschrijft hoe je gedistribueerde opslag van Alibaba Cloud kunt gebruiken in een zelfgebouwd cluster op Alibaba Cloud. Aan het einde zijn documentatie-links toegevoegd. De officiële documentatie van Alibaba Cloud is in het Chinees, maar de installatie van de opslagplug-in van Alibaba Cloud is op github en momenteel alleen in het Engels beschikbaar. Lezers met de nodige mogelijkheden worden aangeraden de originele tekst te lezen.
Installatie van de opslagplug-in
- Maak een aangepast machtigingsbeleid: https://github.com/kubernetes-sigs/alibaba-cloud-csi-driver/blob/master/docs/ram-policies/disk.json
- Maak een RAM-rol aan, geef het aangepaste machtigingsbeleid en sla
accesskeyensecrettijdelijk op.kubectl create secret -n kube-system generic csi-access-key --from-literal=id='{id}' --from-literal=secret='{secret}'
- Installeer het CSI-stuurprogramma. Er is geen helm chart, dus installatie kan alleen lokaal (20240613).
git clone https://github.com/kubernetes-sigs/alibaba-cloud-csi-driver.gitcd alibaba-cloud-csi-driver/deploy- Als het is geïnstalleerd op een zelfgebouwd cluster op de ECS van Alibaba Cloud, kun je de volgende regel direct uitvoeren. Als dat niet het geval is, lees dan zelf: 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
- Bevestig,
watch kubectl get pods -n kube-system -l app=csi-plugin
Referentie voor selectie van opslagtype
- De minimale capaciteit van de door ECS-schijf aangemaakte schijf is 20 GB, IOPS 3000. Deze capaciteit is vrij groot en niet erg voordelig.
- Dynamische opslagvolume van de schijf
- Officiële documentatie:
- Schijven ondersteunen geen gebruik in meerdere zones, zijn niet-gedeelde opslag en kunnen slechts door één Pod worden gemonteerd. (In de praktijk kan het worden gemonteerd door meerdere pods van dezelfde deployment)
- Het schijftype en het ECS-type moeten overeenkomen om te kunnen monteren, anders zal het monteren mislukken. Zie Instance Families voor meer informatie over de relatie tussen schijftype en ECS-type.
- Bij het implementeren van toepassingen worden schijven automatisch aangekocht via StorageClass voor het maken van PV. Als u al een schijf hebt aangeschaft, is het gebruik van statische schijfopslag aanbevolen.
- De grootte van de aangevraagde schijf mag het bereik van de enkele schijfcapaciteit niet overschrijden.
- Wanneer een Pod opnieuw wordt gemaakt, wordt de originele schijf opnieuw gemonteerd. Als deze door andere beperkingen niet kan worden gepland in de oorspronkelijke zone, zal de Pod in de wachtende status blijven.
- Dynamisch aangemaakte schijven zijn schijven met pay-per-use.
- Andere testresultaten:
- Hoewel de schijf door meerdere pods kan worden gemonteerd, kan slechts één pod lezen en schrijven, de andere pods kunnen niet lezen of schrijven. Daarom kan
accessModesin pvc alleen worden ingesteld opReadWriteOnce; het wijzigen hiervan levert geen correct resultaat op. - Als
reclaimPolicyvan StorageClass is ingesteld opDelete, wordt de schijf ook automatisch verwijderd bij het verwijderen van de PVC. - Als
reclaimPolicyvan StorageClass is ingesteld opRetain, wordt de schijf niet automatisch verwijderd bij het verwijderen van de PVC; deze moet handmatig worden verwijderd in het cluster en in de Alibaba Cloud-console.
- Hoewel de schijf door meerdere pods kan worden gemonteerd, kan slechts één pod lezen en schrijven, de andere pods kunnen niet lezen of schrijven. Daarom kan
- Moeilijk om geschikte gebruiksscenario’s te vinden.
- Officiële documentatie:
- Statisch opslagvolume van de schijf
- Officiële documentatie:
- Handmatig PV en PVC aanmaken
- Schijven ondersteunen geen gebruik in meerdere zones, zijn niet-gedeelde opslag en kunnen slechts door één Pod worden gemonteerd.
- Het schijftype en het ECS-type moeten overeenkomen om te kunnen monteren, anders zal het monteren mislukken.
- U kunt een schijf in een wachtende status kiezen in dezelfde regio en zone als het cluster.
- Officiële documentatie:
- Dynamische opslagvolume van de schijf
- NAS heeft een grote vertraging bij bewerkingen, de beste prestaties zijn 2 ms, diepe opslag 10 ms, pay-per-use, lees- en schrijfprestaties zijn hoger dan die van objectopslag OSS
- OSS-opslagvolume, https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/oss-volume-overview-1?spm=a2c4g.11186623.0.0.43166a351NbtvU
- OSS is gedeelde opslag en kan gedeelde opslagdiensten leveren aan meerdere Pods.
- (20240613) Ondersteunt momenteel CentOS, Alibaba Cloud Linux, ContainerOS en Longxin besturingssysteem.
- Gebruik een unieke PV-naam voor elke toepassing bij gebruik van gegevensvolumes.
- OSS-gegevensvolumes zijn FUSE-bestandssystemen die worden gemonteerd met het OSSFS-bestand.
- Geschikt voor leesscenario’s zoals het lezen van configuratiebestanden, videobestanden, afbeeldingsbestanden, enz.
- Niet geschikt voor toepassingen die bestanden schrijven. Voor schrijfbewerkingen raden we u aan de SDK te gebruiken of de NAS-opslagvolumedienst te gebruiken.
- De prestaties van ossfs kunnen worden geoptimaliseerd door de configuratieparameters voor caching en machtigingen aan te passen.
- Beperkingen van ossfs
- Willekeurige of toevoegende schrijfbewerkingen zullen leiden tot het opnieuw schrijven van alle bestanden.
- Vanwege de noodzaak van remote toegang tot de OSS-server zijn de prestaties van metagegevensbewerkingen zoals list directory slecht.
- De rename-bewerking van bestanden en mappen is niet atomair.
- Wanneer meerdere clients dezelfde OSS-bucket monteren, moeten gebruikers hun gedrag coördineren, bijvoorbeeld door meerdere clients te voorkomen dat ze hetzelfde bestand schrijven.
- Ondersteunt geen harde links (Hard Link).
- Wanneer de CSI-plugin een versie onder v1.20.7 heeft, detecteert deze alleen lokale wijzigingen en niet externe wijzigingen van andere clients of tools.
- Gebruik niet bij scenario’s met hoge gelijktijdige lees- en schrijfbewerkingen om te voorkomen dat de systeembelasting stijgt.
- Als het een hybride cluster is (waarbij sommige nodes niet deel uitmaken van Alibaba Cloud), kunnen alleen NAS en OSS statische volumes worden gebruikt.
- Zowel schijven, NAS en OSS hebben geografische beperkingen.
Samenvattend: Schijven worden aangevraagd en gemonteerd als gehele harde schijven en zijn niet geschikt voor delen. De operationele granulariteit van OSS is tot het bestandsniveau, maar er zijn prestatieproblemen bij hoge gelijktijdige lees- en schrijfbewerkingen en de ondersteunde systemen zijn beperkt.
- Schijven zijn geschikt voor scenario’s zoals databases die veel ruimte en hoge prestaties vereisen.
- Andere scenario’s met lage prestatievereisten kunnen NAS kiezen.
- OSS is niet geschikt voor hoge gelijktijdige schrijfbewerkingen in Alibaba Cloud-clusters, maar kan worden gebruikt voor gelijktijdige leesscenario’s.
De officiële documentatie van Alibaba Cloud heeft problemen met ongeconsolideerde locaties en tegenstrijdigheden. Lezers moeten zelfstandig de datum van de documentatie beoordelen. Soms worden functies die niet worden ondersteund in de documentatie, met updates van de versie mogelijk ondersteund. Probeer dit zelf uit.
Bedieningsprocedure
Dit is de officiële handleiding van Alibaba Cloud. Na het installeren van de Alibaba Cloud-opslagplug-in volgens de bovenstaande instructies, kunt u de implementatie en testen uitvoeren volgens Gebruik van statisch ingerichte NAS-volumes.
Opmerking: k3s-gebruikers kunnen problemen ondervinden met local-path-storage, met foutmeldingen zoals:
- mislukt bij het inrichten van volume met StorageClass “local-path”: claim.Spec.Selector wordt niet ondersteund
- 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.
Stel de storageClassName van de persistentVolumeClaim in op leeg om het gebruik van de standaard local-path-storage van k3s te voorkomen.
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: pvc-nas
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 2Gi
selector:
matchLabels:
alicloud-pvname: pv-nas
storageClassName: ""
Referenties
- 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