Alibaba Cloud Dağıtılmış Depolamayı Kendi K8S Kümesine Ekleme
Categories:
Giriş
Bu makale 2024.06.14 tarihinde yazılmış olup, Alibaba Cloud’daki kendi oluşturulan küme üzerinde Alibaba Cloud dağıtılmış depolamayı nasıl kullanacağınızı anlatmaktadır. Sonunda belge bağlantıları eklenmiştir. Alibaba Cloud’un resmi belgeleri Çince’dir, ancak Alibaba Cloud depolama eklentisi kurulumu github üzerinde mevcuttur ve şu an sadece İngilizce belgeleri vardır. Koşulları uygun olan okuyucuların orijinal metni okumaları tavsiye edilir.
Depolama Eklentisi Kurulumu
- Özel izin politikası oluşturun: https://github.com/kubernetes-sigs/alibaba-cloud-csi-driver/blob/master/docs/ram-policies/disk.json
- RAM rolü oluşturun, özel izin politikası verin, geçici olarak
accesskeyvesecretdeğerlerini saklayınkubectl create secret -n kube-system generic csi-access-key --from-literal=id='{id}' --from-literal=secret='{secret}'
- CSI sürücüsünü kurun, helm chart yoktur, sadece yerel kurulum yapılabilir (20240613).
git clone https://github.com/kubernetes-sigs/alibaba-cloud-csi-driver.gitcd alibaba-cloud-csi-driver/deploy- Alibaba Cloud ECS üzerindeki kendi oluşturulan kümeye kuruyorsanız doğrudan bir sonraki adımı çalıştırabilirsiniz, değilse lütfen aşağıdaki belgeyi okuyun: 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
- Onaylayın,
watch kubectl get pods -n kube-system -l app=csi-plugin
Depolama Tipi Seçimi İçin Referans
- ECS bulut diski için en düşük kapasite 20GB, IOPS 3000’tür. Bu kapasite oldukça büyüktür ve pek ekonomik değildir.
- Bulut diski dinamik depolama birimi
- Resmi belgeler:
- Bulut diskleri farklı kullanılabilirlik bölgelerinde kullanılamaz, paylaşılmayan depolama ve aynı anda sadece bir Pod tarafından bağlanabilir. (Testlerde aynı deployment içindeki birden fazla Pod tarafından bağlanabileceği görüldü)
- Bulut diski türü ve ECS türü eşleşmelidir, aksi takdirde bağlama başarısız olur. Bulut diski türü ve ECS türü eşleştirme ilişkisi için lütfen örnek belirtimleri bölümüne bakın.
- Uygulama dağıtımında, StorageClass üzerinden PV otomatik olarak oluşturulur ve bulut diski satın alınır. Eğer zaten bulut diski satın aldıysanız, bulut diski statik depolama birimi kullanımını tavsiye ederiz.
- Bulut diski talep edilen boyutu, bulut disklerinin tek disk kapasite aralığının dışına çıkamaz.
- Pod yeniden oluşturulduğunda, eski bulut diski yeniden takılır. Eğer başka kısıtlamalar nedeniyle eski kullanılabilirlik bölgesine dağıtılamazsa, Pod Bekleme durumunda kalır.
- Dinamik olarak oluşturulan bulut diskleri, kullanım başına ödeme tipidir.
- Diğer test sonuçları:
- Bulut diski birden fazla Pod tarafından bağlanabilir, ancak sadece bir Pod okuma/yazma yapabilir, diğer Pod’lar okuma/yazma yapamaz. Bu yüzden PVC içindeki
accessModessadeceReadWriteOnceolarak ayarlanabilir, değiştirildiğinde doğru sonuç elde edilmez. - Eğer StorageClass’ın
reclaimPolicydeğeriDeleteolarak ayarlandıysa, PVC silindiğinde bulut diski de otomatik olarak silinir. - Eğer StorageClass’ın
reclaimPolicydeğeriRetainolarak ayarlandıysa, PVC silindiğinde bulut diski otomatik olarak silinmez, küme ve Alibaba Cloud konsolundan manuel silinmesi gerekir.
- Bulut diski birden fazla Pod tarafından bağlanabilir, ancak sadece bir Pod okuma/yazma yapabilir, diğer Pod’lar okuma/yazma yapamaz. Bu yüzden PVC içindeki
- Uygun kullanım senaryosu bulmak zor.
- Resmi belgeler:
- Bulut diski statik depolama birimi
- Resmi belgeler:
- Manuel PV ve PVC oluşturma
- Bulut diskleri farklı kullanılabilirlik bölgelerinde kullanılamaz, paylaşılmayan depolama ve aynı anda sadece bir Pod tarafından bağlanabilir.
- Bulut diski türü ve ECS türü eşleşmelidir, aksi takdirde bağlama başarısız olur.
- Aynı bölge ve kullanılabilirlik bölgesinde bekleyen bulut disklerini seçebilirsiniz.
- Resmi belgeler:
- Bulut diski dinamik depolama birimi
- NAS işlem gecikmesi daha büyük, en iyi performans 2ms, derin depolama 10ms, kullanım başına ödeme, nesne depolama OSS’e göre okuma/yazma performansı daha yüksek
- OSS depolama birimi, https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/oss-volume-overview-1?spm=a2c4g.11186623.0.0.43166a351NbtvU
- OSS paylaşımlı depolamadır ve birden fazla Pod’a aynı anda paylaşımlı depolama hizmeti sağlayabilir.
- (20240613) Şu an CentOS, Alibaba Cloud Linux, ContainerOS ve Anolis işletim sistemlerini destekler.
- Veri birimi kullanılırken, her uygulama için bağımsız PV adı kullanılır.
- OSS veri birimi, ossfs dosyası kullanılarak takılan bir FUSE dosya sistemidir.
- Yapılandırma dosyaları, video, resim dosyaları gibi okuma senaryoları için uygundur.
- Dosya yazma uygulamaları için uygun değildir. Dosya yazma ihtiyacı varsa, SDK ile yazma işlemini uygulamanızı veya NAS depolama birimi hizmetini kullanmanızı öneririz.
- ossfs, yapılandırma parametrelerini ayarlayarak önbellek, izinler vb. konularda performansını iyileştirebilir.
- ossfs kullanım kısıtlamaları
- Rastgele veya dosyaya ek yazma işlemleri tüm dosyaların yeniden yazılmasına neden olur.
- Uzaktan OSS sunucuya erişilmesi gerektiğinden, list directory gibi meta veri işlemleri performans açısından daha zayıftır.
- Dosya ve klasörlerin yeniden adlandırma işlemleri atomik değildir.
- Birden fazla istemci aynı OSS Bucket’a bağlandığında, farklı istemcilerin davranışlarını düzenlemek, örneğin birden fazla istemcinin aynı dosyaya yazmasını önlemek gibi, kullanıcıya bırakılır.
- Sert Link (Hard Link) desteklenmez.
- CSI eklentisi v1.20.7 altı bir sürüme sahipse, yalnızca yerel değişiklikleri algılar, diğer istemcilerin veya araçların dış değişikliklerini algılayamaz.
- Sistemin yükünün artmasını önlemek için yüksek eşzamanlı okuma/yazma senaryolarında kullanılmamalıdır.
- Eğer karma bir kümeniz varsa (bazı düğümler Alibaba Cloud’a ait değilse), sadece NAS ve OSS statik birimlerini kullanabilirsiniz.
- Bulut diski, NAS ve OSS’un hepsinin bölgesel kısıtlamaları vardır.
Özetle, bulut diski disk bütünü olarak talep edilir ve takılır, paylaşımı zordur. OSS dosya seviyesinde operasyon yapar, yüksek eşzamanlı okuma/yazma performans sorunlarına sahiptir ve desteklenen sistemler sınırlıdır.
- Bulut diski, büyük alan ve yüksek performans gerektiren veritabanı vb. senaryolar için uygundur
- Diğer performans gereksinimi düşük senaryolar için NAS tercih edilebilir
- OSS, Alibaba Cloud kümesi için yüksek eşzamanlı yazma senaryolarına uygun değildir, ancak eşzamanlı okuma senaryolarına uygundur.
Alibaba Cloud’un resmi belgeleri konum olarak birleşik değildir ve birbiriyle çelişen kısımlar içermektedir. Okuyucular belgelerin tarihlerine göre kendi kararlarını vermelidir, desteklenmediği belirtilen bazı özellikler, sürüm güncellemeleriyle destekleniyor olabilir ve kendi denemelerinizi yapmanız gerekir.
İşlem Adımları
Bu Alibaba Cloud’un resmi rehber belgesidir. Alibaba Cloud depolama eklentisi yukarıdaki talimatlara göre kurulduktan sonra, NAS statik depolama birimi kullanma talimatlarına göre dağıtım ve test yapabilirsiniz.
Not: k3s kullanıcıları local-path-storage sorunuyla karşılaşabilir, hata mesajı şu olabilir,
- 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.
persistentVolumeClaim içindeki storageClassName değerini boş bırakarak, k3s varsayılan local-path-storage kullanımından kaçınılmalıdır.
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: pvc-nas
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 2Gi
selector:
matchLabels:
alicloud-pvname: pv-nas
storageClassName: ""
Referanslar
- 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