ossfs 1,0, dynamic provisioning özelliğini destekler. Bu özellik, bir StorageClass ve PersistentVolumeClaim (PVC) temel alarak otomatik olarak kalıcı bir birim (PV) oluşturur ve bir OSS Bucket bağlar. Manuel PV yapılandırmasına gerek kalmadan depolama yönetimini büyük ölçüde basitleştirir ve çok kiracılı ortamlar veya sık, talebe bağlı depolama sağlanması gerektiren senaryolar için idealdir.
Gereksinimler
Kümenizin ve CSI bileşenlerinizin (csi-plugin ve csi-provisioner) aşağıdaki gereksinimleri karşılaması gerekir:
-
RAM Roles for Service Accounts (RRSA) kimlik doğrulaması kullanımı için: Kümeniz 1,26 veya sonraki bir sürümde olmalı ve CSI sürümü v1,30,4 veya üzeri olmalıdır.
v1,30,4 öncesi bir sürümde RRSA özelliğini kullandıysanız gerekli RAM Rolü yetkilendirme yapılandırmasını eklemek için [[Ürün Değişikliği] CSI ossfs sürüm yükseltmesi ve bağlama işlemi optimizasyonu](t2763435.xdita#) konusuna bakın.
AccessKey kimlik doğrulaması kullanımı için: Bağlama kararlılığını sağlamak adına CSI sürümü v1,18,8,45 veya üzerini öneririz.
Kümenizi yükseltmek için Küme manuel yükseltme konusuna bakın. CSI bileşenlerini yükseltmek için CSI bileşenlerini yükseltme konusuna bakın.
CSI v1,30,4-* sürümünden başlayarak, OSS statik birimlerinin bağlanması csi-provisioner bileşenine bağlıdır .
1. Adım: Bir kimlik doğrulama yöntemi seçin
Kümenizin OSS Bucket kaynaklarına güvenli ve uyumlu bir şekilde erişebilmesi için önce bir kimlik doğrulama yöntemi yapılandırmanız gerekir.
RRSA kimlik doğrulaması: Uygulama düzeyinde ayrıntılı izin yalıtımı sağlamak amacıyla Pod'lara geçici ve otomatik olarak döndürülen RAM rolleri dinamik olarak atanır. Bu yöntem daha güvenlidir.
AccessKey kimlik doğrulaması: Statik, uzun ömürlü anahtarlar bir Secret içinde saklanır. Yapılandırması daha kolay olsa da güvenlik düzeyi daha düşüktür.
1,26 veya sonraki sürümleri çalıştıran kümeler için AccessKey döndürme işlemlerinden kaynaklanan iş yükü yeniden başlatmalarını ve ossfs yeniden bağlamalarını önlemek amacıyla RRSA kimlik doğrulamasını öneririz.
Bu örnekte kümenin ve OSS Bucket aynı Alibaba Cloud hesabında olduğu varsayılır. Başka bir hesaba ait bir OSS Bucket'ı bağlamak için RRSA kimlik doğrulamasını kullanmanızı öneririz.
RRSA
1. Kümeniz için RRSA'yı etkinleştirin
ACK Kümeleri sayfasında kümenizin adını tıklayın. Sol gezinme bölmesinde Cluster Information öğesini tıklayın.
-
Basic Information sekmesinde, Security and Auditing bölümünde RRSA OIDC öğesinin sağındaki Enabled seçeneğini tıklayın. RRSA'yı yoğun olmayan saatlerde etkinleştirmek için ekrandaki talimatları izleyin.
Küme durumu Updating durumundan Running durumuna geçtiğinde RRSA etkinleştirilmiş olur.
ÖnemliRRSA'yı etkinleştirdikten sonra kümede yeni oluşturulan ServiceAccount belirteçlerinin maksimum geçerlilik süresi 12 saat ile sınırlanır.
2. Bir RAM rolü oluşturun ve yetkilendirin
Pod'larınızın RRSA kimlik doğrulamalı OSS depolama birimine erişmek için üstlenebileceği bir RAM rolü oluşturun.
AccessKey
Hedef OSS Bucket'a erişim iznine sahip bir RAM kullanıcı oluşturun ve ardından bu kullanıcı için bir AccessKey edinin.
-
Bir RAM kullanıcı oluşturun. Zaten bir RAM kullanıcınız varsa bu adımı atlayabilirsiniz.
RAM Konsolu'ndaki Kullanıcı Oluştur sayfasına gidin ve ekrandaki talimatları izleyerek bir RAM kullanıcı oluşturun. Oturum açma adı ve parola gibi parametreleri belirtmeniz gerekir.
-
Bir erişim ilkesi oluşturun.
Bu örnek en az ayrıcalık ilkesini takip eder. Hedef OSS Bucket'a erişim izni vermek için Özel ilke oluşturma işlemini uygulayın. Salt okunur veya okuma/yazma izinleri verebilirsiniz.
-
RAM Konsolu'ndaki İlke Oluştur sayfasına gidin, JSON Editor alanına geçiş yapın ve ilke betiğini yapılandırın.
Salt okunur ilke
Gerçek paket adıyla değiştirmek için
<myBucketName>ifadesini kullanın.{ "Statement": [ { "Action": [ "oss:Get*", "oss:List*" ], "Effect": "Allow", "Resource": [ "acs:oss:*:*:<myBucketName>", "acs:oss:*:*:<myBucketName>/*" ] } ], "Version": "1" }OSS okuma/yazma ilkesi
Gerçek paket adıyla değiştirmek için
<myBucketName>ifadesini kullanın.{ "Statement": [ { "Action": "oss:*", "Effect": "Allow", "Resource": [ "acs:oss:*:*:<myBucketName>", "acs:oss:*:*:<myBucketName>/*" ] } ], "Version": "1" }Konsolda bir PV oluşturmak istiyorsanız
oss:ListBucketsiznine de ihtiyacınız vardır.{ "Effect": "Allow", "Action": "oss:ListBuckets", "Resource": "*" } (İsteğe bağlı) OSS nesnelerini şifrelemek için KMS tarafından yönetilen belirli bir CMK ID kullanıyorsanız RAM kullanıcıya KMS izinleri de vermeniz gerekir. Daha fazla bilgi için Verileri şifrelemek için KMS tarafından yönetilen belirli bir CMK ID kullanma konusuna bakın.
-
-
Erişim ilkesini RAM kullanıcıya ekleyin.
RAM Konsolu'ndaki Kullanıcılar sayfasına gidin, oluşturduğunuz kullanıcıyı bulun ve Actions sütununda Add Permissions seçeneğini tıklayın.
Policies bölümünde oluşturduğunuz erişim ilkesini arayın ve seçin.
-
Oluşturduğunuz AccessKey, PV için bir Secret olarak saklanacaktır.
RAM Konsolu'ndaki Kullanıcılar sayfasına gidin, RAM kullanıcınızın adını tıklayın ve ardından AccessKey bölümünde Create AccessKey seçeneğini tıklayın.
Bir AccessKey oluşturmak için ekrandaki talimatları izleyin. AccessKey ID ve AccessKey Secret değerlerini kopyalayın ve güvenli bir şekilde saklayın.
2. Adım: Bir StorageClass oluşturun
Kalıcı birimleri sağlamaya yönelik bir şablon tanımlamak için bir StorageClass oluşturun.
RRSA yöntemi
-
sc-oss.yamladlı bir dosya oluşturun.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: sc-oss parameters: # Replace with the name of your OSS bucket. bucket: bucket # Replace with the region of your OSS bucket. region: cn-hangzhou # The mount path relative to the bucket's root directory. You can specify a subdirectory. path: / # The endpoint of the region where the bucket is located. url: "https://oss-cn-hangzhou-internal.aliyuncs.com" # Use the RRSA method for authentication. authType: rrsa # The RAM role that you created or modified. roleName: demo-role-for-rrsa # Custom parameters. otherOpts: "-o umask=022 -o max_stat_cache_size=100000 -o allow_other" # The volume access mode. volumeAs: sharepath # The signature version for requests sent to the OSS server. sigVersion: "v4" # Fixed value for the Alibaba Cloud OSS CSI plug-in. provisioner: ossplugin.csi.alibabacloud.com # The reclaim policy for the dynamically provisioned persistent volume.Parametre
Açıklama
bucketBağlanacak OSS paketi.
regionOSS imza v4 kullanılırken bu parametreyi paketin bulunduğu OSS bölgesine ayarlayın. OSS bölgesini sorgulamak için bkz. Paket bölgesini sorgulama.
Bu parametre ayarlandığında OSS imza sürümü olarak otomatik olarak
v4kullanılır.pathCSI bileşeni sürümü v1.14.8.32-c77e277b-aliyun veya üzeri olmalıdır.
Paketin kök dizinine göre bağlama yolu. Varsayılan değer, tüm paketi bağlayan
/değeridir.ossfs sürümü 1,91'den önceyse belirtilen
pathOSS paketinde mevcut olmalıdır. Daha fazla bilgi için bkz. ossfs 1,91 ve sonraki sürümlerdeki yeni özellikler.urlBağlanacak OSS Paketinin uç noktası.
Bağlama düğümü ve paket aynı bölgedeyse veya bir VPC bağlantısı kurulmuşsa dahili uç nokta kullanın.
Bağlama düğümü ve paket farklı bölgelerdeyse genel uç nokta kullanın.
Farklı erişim bağlantı noktaları için yaygın biçimler aşağıda verilmiştir:
Dahili ağ biçimi:
https://oss-{{regionName}}-internal.aliyuncs.com.vpc100-oss-{{regionName}}.aliyuncs.comdahili uç nokta biçimi kullanım dışıdır. Derhal yeni biçime geçin.Genel ağ biçimi:
https://oss-{{regionName}}.aliyuncs.com.
Güvenlik amacıyla OSS'ye HTTPS üzerinden erişmenizi öneririz. Bunun yerine HTTP kullanmak için önceki biçimdeki
https://ön ekinihttp://ile değiştirin.authTypeKimlik doğrulama için RRSA kullanmak üzere bu parametreyi
rrsaolarak ayarlayın.roleNameOluşturduğunuz veya değiştirdiğiniz RAM rolü.
Farklı StorageClass'lar için farklı izinler yapılandırmak üzere birden fazla RAM rolü oluşturabilir ve her StorageClass'ta farklı
roleNamedeğerleri belirtebilirsiniz.otherOptsOSS kalıcı birimi için özel parametreler,
-o -obiçimindedir. Örneğin:-o umask=022 -o max_stat_cache_size=100000 -o allow_other.provisionerSürücü türü. Alibaba Cloud OSS CSI eklentisi kullanılırken bu değer
ossplugin.csi.alibabacloud.comolarak sabittir.reclaimPolicyDinamik olarak sağlanan kalıcı birimler için geri kazanma ilkesi. OSS kalıcı birimleri yalnızca
Retaindeğerini destekler; bu, bir PVC'yi sildiğinizde karşılık gelen kalıcı birimin ve OSS paketindeki verilerin silinmediği anlamına gelir.volumeBindingModeBirim bağlama modu.
OSS kalıcı birimleri kullanılabilirlik alanı tabanlı düğüm yakınlığı gerektirmez. Varsayılan
Immediatedeğerini kullanabilirsiniz.volumeAsBirim erişim modu. Varsayılan değer
sharepathdeğeridir. Geçerli değerler:sharepath: Tüm kalıcı birimler aynı bağlama yolunu paylaşır. Veriler<bucket>:<path>/konumunda depolanır.subpath: Verileri yalıtmak için her kalıcı birim için özel bir alt dizin oluşturur. Veriler<bucket>:<path>/<pv-name>/konumunda depolanır.Bu parametre yalnızca CSI bileşeni sürümü 1,31,3 veya üzeri olduğunda etkili olur.
sigVersionOSS sunucusuna gönderilen isteklerin imza sürümü.
"v1"(Varsayılan): OSS İmza Sürüm 1 kullanır."v4"(Önerilen): OSS İmza Sürüm 4 kullanır.
-
StorageClass'ı oluşturun.
kubectl apply -f sc-oss.yaml
AccessKey yöntemi
kubectl
1. Bir StorageClass oluşturun
-
Uygulamanızla aynı ad alanında bir Secret oluşturun.
akIdveakSecretdeğerlerini AccessKey ID'niz ve AccessKey Secret değerlerinizle değiştirin.kubectl create secret generic oss-secret --from-literal='akId=<yourAccessKey ID>' --from-literal='akSecret=<yourAccessKey Secret>' -
StorageClass'ı oluşturun.
-
sc-oss.yamladlı bir dosya oluşturun.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: sc-oss parameters: # Replace with the name of your OSS bucket. bucket: bucket # Replace with the region of your OSS bucket. region: cn-hangzhou # The mount path relative to the bucket's root directory. You can specify a subdirectory. path: / # The endpoint of the region where the bucket is located. url: "https://oss-cn-hangzhou-internal.aliyuncs.com" # The name of the Secret that stores the AccessKey information. csi.storage.k8s.io/node-publish-secret-name: oss-secret # The namespace where the Secret that stores the AccessKey information is located. csi.storage.k8s.io/node-publish-secret-namespace: default # Custom parameters. otherOpts: "-o umask=022 -o max_stat_cache_size=100000 -o allow_other" # The signature version for requests sent to the OSS server. sigVersion: "v4" # Fixed value for the Alibaba Cloud OSS CSI plug-in. provisioner: ossplugin.csi.alibabacloud.com # The reclaim policy for the dynamically provisioned persistent volume. reclaimPolicy: Retain # The volume binding mode. volumeBindingMode: ImmediateParametre
Açıklama
nameStorageClass adı.
bucketBağlanacak OSS paketi.
regionOSS imza v4 kullanılırken bu parametreyi paketin bulunduğu OSS bölgesine ayarlayın. OSS bölgesini sorgulamak için bkz. Paket bölgesini sorgulama.
Bu parametre ayarlandığında OSS imza sürümü olarak otomatik olarak
v4kullanılır.pathCSI bileşeni sürümü v1.14.8.32-c77e277b-aliyun veya üzeri olmalıdır.
Paketin kök dizinine göre bağlama yolu. Varsayılan değer, tüm paketi bağlayan
/değeridir.ossfs sürümü 1,91'den önceyse belirtilen
pathOSS paketinde mevcut olmalıdır. Daha fazla bilgi için bkz. ossfs 1,91 ve sonraki sürümlerdeki yeni özellikler.urlBağlanacak OSS Paketinin uç noktası.
Bağlama düğümü ve paket aynı bölgedeyse veya bir VPC bağlantısı kurulmuşsa dahili uç nokta kullanın.
Bağlama düğümü ve paket farklı bölgelerdeyse genel uç nokta kullanın.
Farklı erişim bağlantı noktaları için yaygın biçimler aşağıda verilmiştir:
Dahili ağ biçimi:
https://oss-{{regionName}}-internal.aliyuncs.com.vpc100-oss-{{regionName}}.aliyuncs.comdahili uç nokta biçimi kullanım dışıdır. Derhal yeni biçime geçin.Genel ağ biçimi:
https://oss-{{regionName}}.aliyuncs.com.
Güvenlik amacıyla OSS'ye HTTPS üzerinden erişmenizi öneririz. Bunun yerine HTTP kullanmak için önceki biçimdeki
https://ön ekinihttp://ile değiştirin.csi.storage.k8s.io/node-publish-secret-nameAccessKey bilgilerini saklayan Secret adı.
csi.storage.k8s.io/node-publish-secret-namespaceAccessKey bilgilerini saklayan Secret'ın bulunduğu ad alanı.
otherOptsOSS kalıcı birimi için özel parametreler,
-o -obiçimindedir. Örneğin:-o umask=022 -o max_stat_cache_size=100000 -o allow_other.provisionerSürücü türü. Alibaba Cloud OSS CSI eklentisi kullanılırken bu değer
ossplugin.csi.alibabacloud.comolarak sabittir.reclaimPolicyDinamik olarak sağlanan kalıcı birimler için geri kazanma ilkesi. OSS kalıcı birimleri yalnızca
Retaindeğerini destekler; bu, bir PVC'yi sildiğinizde karşılık gelen kalıcı birimin ve OSS paketindeki verilerin silinmediği anlamına gelir.volumeBindingModeBirim bağlama modu.
OSS kalıcı birimleri kullanılabilirlik alanı tabanlı düğüm yakınlığı gerektirmez. Varsayılan
Immediatedeğerini kullanabilirsiniz.volumeAsBirim erişim modu. Varsayılan değer
sharepathdeğeridir. Geçerli değerler:sharepath: Tüm kalıcı birimler aynı bağlama yolunu paylaşır. Veriler<bucket>:<path>/konumunda depolanır.subpath: Verileri yalıtmak için her kalıcı birim için özel bir alt dizin oluşturur. Veriler<bucket>:<path>/<pv-name>/konumunda depolanır.Bu parametre yalnızca CSI bileşeni sürümü 1,31,3 veya üzeri olduğunda etkili olur.
sigVersionOSS sunucusuna gönderilen isteklerin imza sürümü.
"v1"(Varsayılan): OSS İmza Sürüm 1 kullanır."v4"(Önerilen): OSS İmza Sürüm 4 kullanır.
-
StorageClass'ı oluşturun.
kubectl apply -f sc-oss.yaml
-
Konsol
-
1. Adım bölümündeki AccessKey'i kalıcı birim için bir Secret olarak saklayın.
ACK Kümeleri sayfasında kümenizin adını tıklayın. Sol gezinme bölmesinde seçeneğini tıklayın.
-
Create from YAML seçeneğini tıklayın ve Secret'ı oluşturmak için ekrandaki talimatları izleyin.
apiVersion: v1 kind: Secret metadata: name: oss-secret # Must match the namespace of the application. namespace: default stringData: # Replace with your AccessKey ID. akId: <your AccessKey ID> # Replace with your AccessKey secret. akSecret: <your AccessKey Secret>
Clusters sayfasında kümenizin adını tıklayın. Sol gezinme bölmesinde seçeneğini tıklayın.
-
StorageClasses sayfasında Create seçeneğini tıklayın, PV Type değerini OSS olarak ayarlayın ve StorageClass'ı yapılandırmak için ekrandaki talimatları izleyin.
Parametre
Açıklama
Erişim sertifikası
AccessKey ID ve AccessKey Secret değerlerini içeren OSS'ye erişim için kullanılan Secret.
Bucket ID:
Kullanılacak OSS paketi.
Konsol, yapılandırılan AccessKey'in erişebileceği paketleri yalnızca gösterir.
OSS yolu
CSI bileşeni sürümü v1.14.8.32-c77e277b-aliyun veya üzeri olmalıdır.
Paketin kök dizinine göre bağlama yolu. Varsayılan değer, tüm paketi bağlayan
/değeridir.ossfs sürümü 1,91'den önceyse belirtilen
pathOSS paketinde mevcut olmalıdır. Daha fazla bilgi için bkz. ossfs 1,91 ve sonraki sürümlerdeki yeni özellikler.Volume Mode
Birim erişim modu. Varsayılan Shared Directory değeridir. Geçerli değerler:
Subdirectory modu yalnızca CSI bileşeni sürümü 1,31,3 veya üzeri olduğunda etkili olur. Aksi takdirde Shared Directory modu kullanılır.
Shared Directory (
sharepath): Tüm kalıcı birimler aynı bağlama yolunu paylaşır. Veriler<bucket>:<path>/konumunda depolanır.Subdirectory (
subpath): Verileri yalıtmak için her kalıcı birim için özel bir alt dizin oluşturur. Veriler<bucket>:<path>/<pv-name>/konumunda depolanır.
Uç nokta
OSS paketi için erişim uç noktası.
Küme düğümleriniz ve paket aynı bölgedeyse veya bir Sanal Özel Cloud (VPC) bağlantısı kurulmuşsa dahili uç nokta kullanın.
Bağlama düğümü ve paket farklı bölgelerdeyse genel uç nokta kullanın.
Farklı erişim uç noktaları için yaygın biçimler aşağıda verilmiştir:
Dahili:
http://oss-{{regionName}}-internal.aliyuncs.comveyahttps://oss-{{regionName}}-internal.aliyuncs.com.Notvpc100-oss-{{regionName}}.aliyuncs.comdahili erişim uç noktası biçimi kullanım dışıdır. En kısa sürede yeni biçime geçin.Genel:
http://oss-{{regionName}}.aliyuncs.comveyahttps://oss-{{regionName}}.aliyuncs.com.
Konsol varsayılan olarak dahili ağ üzerinden OSS'ye erişmek için HTTP kullanır. HTTPS kullanmak için PV'yi kubectl kullanarak oluşturmanız gerekir.
Geri kazanma ilkesi
Dinamik olarak sağlanan kalıcı birimler için geri kazanma ilkesi. OSS kalıcı birimleri yalnızca
Retaindeğerini destekler; bu, bir PVC'yi sildiğinizde karşılık gelen kalıcı birimin ve OSS paketindeki verilerin silinmediği anlamına gelir.Optional Parameters:
OSS kalıcı birimi için özel parametreler,
-o -obiçimindedir. Örneğin:-o umask=022 -o max_stat_cache_size=100000 -o allow_other.
3. Adım: Bir PVC oluşturun
Depolama kaynaklarını dinamik olarak talep etmek için bir PVC oluşturun. CSI eklentisi StorageClass'a dayanarak otomatik olarak bir PV oluşturur.
kubectl
-
pvc-oss.yamladlı bir dosya oluşturun:apiVersion: v1 kind: PersistentVolumeClaim metadata: # PVC name name: pvc-oss spec: # Configure the access mode. ReadOnlyMany means that ossfs mounts the OSS bucket in read-only mode. accessModes: - ReadOnlyMany volumeMode: Filesystem resources: requests: # Declare the requested storage capacity. This value does not limit the actual capacity of the OSS volume. storage: 20Gi # Specify the StorageClass to use. storageClassName: sc-ossParametre
Açıklama
accessModesErişim modunu belirtir. Desteklenen değerler
ReadOnlyManyveReadWriteManydeğerleridir.ReadOnlyManyolarak ayarlanırsa ossfs OSS paketini salt okunur modda bağlar.storageBirim için talep edilen kapasite. Bu değer OSS biriminin gerçek kapasitesini sınırlamaz.
storageClassNameStorageClass adı.
-
PVC'yi oluşturun:
kubectl apply -f pvc-oss.yaml -
PVC'nin oluşturulduğunu ve Bound durumunda olduğunu doğrulayın:
kubectl get pvc pvc-ossBeklenen çıktı:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE pvc-oss Bound oss-251d111d-3b0b-4879-81a0-eb5a19xxxxxx 20Gi ROX sc-oss <unset> 4d20h
Konsol
Clusters sayfasında kümenizin adını tıklayın. Sol gezinme bölmesinde seçeneğini tıklayın.
-
Persistent Volume Claims sayfasında Create seçeneğini tıklayın. PVC Type değerini OSS olarak ayarlayın ve parametreleri yapılandırın.
Parametre
Açıklama
Allocation Mode
Use StorageClass seçeneğini belirleyin.
Existing Storage Class
Select Storage Class seçeneğini tıklayın ve daha önce oluşturulan StorageClass'ı seçin.
Kapasite
Birim için talep edilen kapasite. Bu değer OSS biriminin gerçek kapasitesini sınırlamaz.
Access Mode
Erişim modunu belirtir. Desteklenen değerler
ReadOnlyManyveReadWriteManydeğerleridir.ReadOnlyManyolarak ayarlanırsa ossfs OSS paketini salt okunur modda bağlar.
4. Adım: Bir uygulama oluşturun ve bir birim bağlayın
Birimi bağlamak için uygulamanızda PVC'ye başvurun.
kubectl
-
Bir
oss-workload.yamldosyası oluşturun.apiVersion: apps/v1 kind: Deployment metadata: name: oss-workload labels: app: nginx spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 ports: - containerPort: 80 volumeMounts: # The mount path in the container. - name: pvc-oss mountPath: "/data" # Configure a health check. livenessProbe: exec: command: - ls - /data initialDelaySeconds: 30 periodSeconds: 30 volumes: - name: pvc-oss persistentVolumeClaim: # Reference the PVC that you created. claimName: pvc-oss -
Uygulamayı oluşturun.
kubectl create -f oss-workload.yaml -
Bağlamayı doğrulayın.
-
Pod'ların çalıştığını onaylayın.
kubectl get pod -l app=nginx -
Bir Pod'a erişin ve bağlama noktasını kontrol edin.
kubectl exec -it <pod-name> -- ls /dataÇıktıda OSS bağlama yolundaki dosyalar listelenmelidir.
-
Konsol
ACK Kümeleri sayfasında kümenizin adını tıklayın. Sol gezinme bölmesinde seçeneğini tıklayın.
Deployments sayfasının sağ üst köşesinde Create from Image seçeneğini tıklayın.
-
Create from Image seçeneğini tıklayın ve uygulama parametrelerini yapılandırmak için ekrandaki talimatları izleyin.
Ana parametreler aşağıdaki tabloda açıklanmıştır. Diğer parametreler için varsayılan değerleri kullanabilirsiniz. Daha fazla bilgi için Deployment oluşturma konusuna bakın.
Yapılandırma sayfası
Parametre
Açıklama
Basic Information
Replicas:
Deployment için Pod çoğaltma sayısı.
Container
Görüntü adı
Uygulama kapsayıcı görüntüsünün adresi, örneğin
anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6.Required Resources
Her kapsayıcıya ayrılacak vCPU ve bellek miktarı.
Volumes
Add PVC seçeneğini tıklayın ve ardından parametreleri yapılandırın.
Mount Source: Daha önce oluşturduğunuz PVC'yi seçin.
Container Path: Birimin bağlanacağı kapsayıcı içindeki yol, örneğin
/data.
Labels and Annotations
Pod etiketi
Örneğin, anahtarı 'app' ve değeri 'nginx' olarak ayarlayın.
-
Uygulama dağıtım durumunu kontrol edin.
Deployments sayfasında uygulamanızın adını tıklayın. Pods sekmesinde Pod'ların Running durumunda olduğunu doğrulayın.
5. Adım: Paylaşımlı ve kalıcı depolamayı doğrulayın
Paylaşımlı depolamayı doğrulayın
Paylaşımlı depolamayı doğrulamak için bir Pod'da bir dosya oluşturun ve ardından başka bir Pod'da görüntüleyin.
-
Uygulama Pod'larının adlarını alın.
kubectl get pod -l app=nginx -
Bu örnekte
oss-workload-66fbb85b67-d****Pod'u kullanılmaktadır:-
ReadWriteMany:/datayolunda tmpfile dosyasını oluşturun.kubectl exec oss-workload-66fbb85b67-d**** -- touch /data/tmpfile ReadOnlyMany: OSS konsolu aracılığıyla veya cp ile dosya yükleme yoluylatmpfiledosyasını OSS paketindeki ilgili yola yükleyin.
-
-
Başka bir Pod'un bağlama yolunda dosyayı kontrol edin.
Örnek olarak bağlama yolu
dataolanoss-workload-66fbb85b67-l****adlı bir Pod ele alınmaktadır.kubectl exec oss-workload-66fbb85b67-l**** -- ls /data | grep tmpfileÇıktıda dosyanın var olması Pod'ların veri paylaşabildiğini doğrular.
tmpfileBeklenen çıktıyı görmüyorsanız CSI bileşeni sürümünüzün v1,20,7 veya üzeri olduğundan emin olun.
Kalıcı depolamayı doğrulayın
Kalıcı depolamayı doğrulamak için bir Pod'u silin ve ardından Pod otomatik olarak yeniden oluşturulduktan sonra dosyanın kaldığını kontrol edin.
-
Bir uygulama Pod'unu silin. Deployment denetleyicisi Pod'u otomatik olarak yeniden oluşturur.
kubectl delete pod oss-workload-66fbb85b67-d**** -
Pod'ların durumunu kontrol edin. Yeni Pod'un başlamasını ve
Runningdurumuna gelmesini bekleyin.kubectl get pod -l app=nginx -
/datayolundaki dosyaları görüntüleyin.Bu örnekte bağlama yolu
dataolanoss-workload-66fbb85b67-z****adlı bir Pod kullanılmaktadır.kubectl exec oss-workload-66fbb85b67-z**** -- ls /data | grep tmpfileÇıktıda
tmpfiledosyasının hâlâ var olduğu görülür; bu da Pod yeniden oluşturulduktan sonra bile verilerin kalıcı olduğunu doğrular.tmpfile
Bilinen etkiler
-
Veri bütünlüğü riskleri
Eşzamanlı yazma tutarlılığı riski: Yazma kararlılığını artırmak için CSI bileşenini v1,28 veya üzeri bir sürüme yükseltmenizi öneririz. Ancak tek dosyalı eşzamanlı yazma senaryolarında OSS'nin "üzerine yazarak yükleme" özelliği yine de verilerin üzerine yazabilir. Veri tutarlılığını uygulama katmanında sağlamalısınız.
Veri senkronizasyonu ve yanlışlıkla silme riski: Bir birim bağlandığında bir uygulama Pod'unda veya ana bilgisayar düğümünde bağlama yolundaki dosyaların silinmesi veya değiştirilmesi bu değişiklikleri doğrudan OSS Bucket'taki kaynak dosyalarla senkronize eder. Yanlışlıkla veri silinmesini önlemek için OSS Bucket'ınızda sürüm oluşturmayı etkinleştirmenizi öneririz.
-
Uygulama kararlılığı riskleri
-
OOM riski: Çok sayıda dosyada (örneğin, düğüm belleğine bağlı olarak 100.000'den fazla) ilk kez
readdirişlemi (örneğin, bir kabuk betiğindekilskomutu) gerçekleştirdiğinizde ossfs tüm meta verileri bir kerede yükler ve büyük miktarda bellek tüketir. Bu durum işlemin OOM Killed hatası almasına ve bağlama noktasının kullanılamaz hale gelmesine neden olabilir.Bu riski azaltmak için OSS Paketinin bir alt dizinini bağlamanızı veya dizin yapınızı optimize etmenizi öneririz.
-
Uzatılmış bağlama süresi: Bir uygulamada
securityContext.fsgroupyapılandırılması kubelet'in bir birim bağlarken dosya izinlerini yinelemeli olarak değiştirmesine (chmod/chown) neden olur. Birimde çok sayıda dosya varsa bağlama süresi önemli ölçüde uzar ve bu durum ciddi Pod başlatma gecikmelerine yol açabilir.Bu parametreyi yapılandırmanız gerekiyorsa ancak bağlama süresini azaltmak istiyorsanız OSS birimleri için artan bağlama süresi konusuna bakın.
-
Anahtar geçersiz kılma riski (AccessKey kimlik doğrulaması): Bir PV tarafından başvurulan bir AccessKey geçersiz hale gelirse veya izinleri değişirse ilişkili uygulama hemen erişimi kaybeder.
Erişimi geri yüklemek için Secret'taki kimlik bilgilerini güncellemeniz ve yeniden bağlamayı zorlamak için uygulama Pod'unu yeniden başlatmanız gerekir. Bu durum hizmet kesintisine neden olur; bu nedenle işlemi bir bakım penceresi sırasında gerçekleştirin. Daha fazla bilgi için Çözümler konusuna bakın.
-
-
Maliyet riskleri
Parça maliyetleri: 10 MB'tan büyük dosyalar yüklenirken ossfs çok parçalı yükleme gerçekleştirerek dosyayı parçalara böler. Uygulama yeniden başlatma gibi nedenlerle bir yükleme beklenmedik şekilde kesintiye uğrarsa eksik parçalardan kaynaklanan depolama maliyetlerinden kaçınmak için parçaları manuel olarak silmeniz veya yaşam döngüsü kuralları kullanarak silmeniz gerekir.
Kaynak serbest bırakma
-
İş yüklerini silin
Eylem: PVC'yi kullanan Deployment'lar ve StatefulSet'ler gibi tüm iş yüklerini silin. Bu işlem Pod'ları durdurur ve birimin bağlantısını kaldırır.
Örnek komut:
kubectl delete deployment <your-deployment-name>
-
PVC'yi silin
Eylem: PVC'yi silin. Dinamik olarak sağlanan OSS birimleri için geri kazanma ilkesi (
reclaimPolicy) yalnızcaRetaindeğerini destekler. PVC'yi sildiğinizde buna bağlı olan PV Released durumuna geçer ve arka plandaki OSS paketi ilgili alt dizini ve verileri tamamen korur.Örnek komut:
kubectl delete pvc <your-pvc-name>
-
PV'yi silin
Eylem:
Releaseddurumundaki PV'yi silin. Bu işlem yalnızca PV kaynak nesnesini Kubernetes'ten kaldırır ve arka plandaki OSS paketindeki hiçbir veriyi silmez.Örnek komut:
kubectl delete pv <your-pv-name>
-
StorageClass ve Secret'ı silin (isteğe bağlı)
Eylem: Artık ihtiyaç duyulmuyorsa StorageClass'ı ve ilişkili Secret'ı silin. Bu işlem yalnızca kaynak nesnelerini Kubernetes'ten kaldırır ve arka plandaki OSS paketini etkilemez.
Örnek komutlar:
kubectl delete sc <your-storageclass-name>,kubectl delete secret <your-secret-name>
İlgili belgeler
CNFS kullanarak OSS birimlerini yönetin ve performanslarını ile QoS'lerini iyileştirin. Daha fazla bilgi için OSS birimlerinin yaşam döngüsünü yönetme konusuna bakın.
OSS'de beklemedeki hassas verileri korumak için sunucu tarafı şifrelemeyi etkinleştirin. Daha fazla bilgi için ossfs 1,0 birimlerini şifreleme konusuna bakın.
ossfs ve OSS ile ilgili sık sorulan sorular için ossfs 1,0 (varsayılan) ve ossfs 1,0 birimi SSS konularına bakın.
Kapsayıcı depolama izleme özelliğini etkinleştirin ve uyarıları yapılandırarak birim anomalilerini veya performans darboğazlarını hızla tespit edin.
ossfs 1,0, rastgele ve eşzamanlı yazmalar için ossfs 2,0 sürümüne kıyasla daha güçlü veri tutarlılığı sağlar. Ancak ossfs 2,0 sıralı okuma ve yazma işlemleri için daha iyi performans sunar.