CNFS, OSS paketlerinin yaşam döngüsünü yönetir ve bunları Kubernetes bildirimleri aracılığıyla PV (Kalıcı Birim) olarak sağlar.
İki yöntem kullanılabilir:
Yöntem 1: CNFS kullanarak yeni bir OSS paketi oluşturun ve bunu dinamik olarak sağlanan bir birim olarak bir Deployment ile StatefulSet'e bağlayın.
Yöntem 2: Mevcut bir OSS paketini referans alan bir CNFS Özel Kaynak Tanımı (CRD) oluşturun ve ardından bunu statik veya dinamik olarak sağlanan bir birim olarak bağlayın.
Önkoşullar
Aşağıdakilere sahip olduğunuzdan emin olun:
Sınırlamalar
Desteklenen tek geri kazanım ilkesi
Retaindeğeridir. Bir CNFS CRD'sini silmek paketi korur.Arşiv ve Soğuk Arşiv nesnelerini okumadan veya yazmadan önce geri yüklemeniz gerekir.
Sürüm oluşturma etkinleştirilirse saklama ilkeleri ve OSS-HDFS yapılandırılamaz. Bunları kullanmak için öncelikle
enableVersioningparametresiniNoneolarak ayarlayın.Sürüm oluşturma
enabledolarak ayarlandıktan sonra devre dışı bırakılamaz, yalnızca askıya alınabilir.redundancyTypeveenableVersioningparametreleri storage-operator v1.26.2-1de13b6-aliyun veya üzeri sürümü gerektirir.redundancyTypedeğeriZRSise Soğuk Arşiv ve Derin Soğuk Arşiv desteklenmez.
Yöntem 1: CNFS ile yeni bir OSS paketi oluşturma
cnfs-oss-<clusterid> adında bir OSS paketi oluşturur ve bunu dinamik olarak sağlanan bir birim olarak bir Deployment ile StatefulSet'e bağlar.
Belirtilen ada sahip bir paket zaten varsa CNFS yeni bir paket oluşturmak yerine onu ContainerNetworkFileSystem nesnesiyle ilişkilendirir.
CNFS CRD ve StorageClass oluşturma
Secret, ContainerNetworkFileSystem CRD ve StorageClass oluşturun. <clusterid> ifadesini küme kimliğinizle değiştirin.
cat << EOF | kubectl apply -f -
apiVersion: v1
kind: Secret
metadata:
name: oss-secret
stringData:
akId: "xxxx" # AccessKey ID for mounting the OSS bucket
akSecret: "xxxx" # AccessKey Secret for mounting the OSS bucket
---
apiVersion: storage.alibabacloud.com/v1beta1
kind: ContainerNetworkFileSystem
metadata:
name: cnfs-oss-<clusterid> # Set the CNFS CRD name to match the bucket name
spec:
description: "cnfs-oss"
type: oss
reclaimPolicy: Retain # Only Retain is supported. Deleting the CRD keeps the bucket.
parameters:
bucketName: cnfs-oss-<clusterid> # Replace <clusterid> with your cluster ID; bucket name must be unique
encryptType: "AES256" # AES-256 server-side encryption
storageType: "Standard" # Storage class
aclType: "private" # Bucket owner and authorized users only
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: alibabacloud-cnfs-oss
parameters:
containerNetworkFileSystem: cnfs-oss-<clusterid> # Reference to the CNFS CRD
otherOpts: -o max_stat_cache_size=0 -o allow_other # Cache settings
path: /
# volumeAs: subpath # Uncomment to auto-create a subpath for each PV
csi.storage.k8s.io/node-publish-secret-name: oss-secret
csi.storage.k8s.io/node-publish-secret-namespace: default
provisioner: ossplugin.csi.alibabacloud.com
reclaimPolicy: Retain
EOF
CNFS CRD parametreleri:
| Parametre | Açıklama | Gerekli | Varsayılan |
|---|---|---|---|
description |
CNFS dosya sisteminin açıklaması. | Hayır | — |
type |
Birim türü. oss olarak ayarlayın. |
Evet | — |
reclaimPolicy |
Geri kazanım ilkesi. Yalnızca Retain desteklenir. |
Evet | — |
parameters.bucketName |
OSS paket adı. Eşleşen bir paket varsa CNFS CRD ile ilişkilendirilir; yoksa yeni bir paket oluşturulur. | Evet | — |
parameters.storageType |
Depolama sınıfı. Geçerli değerler: Standard, IA (Seyrek Erişim), Archive, ColdArchive. Arşiv ve Soğuk Arşiv nesnelerini okuma/yazma işleminden önce geri yüklemeniz gerekir. |
Hayır | Standard |
parameters.redundancyType |
Depolama yedeklilik türü. LRS: tek alan; ZRS (alanlar arası yedekli): alanlar arası. storage-operator v1.26.2-1de13b6-aliyun veya üzeri sürümü gerektirir. ZRS, Soğuk Arşiv veya Derin Soğuk Arşivi desteklemez. |
Hayır | ZRS |
parameters.encryptType |
Sunucu tarafı şifreleme algoritması. Geçerli değerler: None, AES256, SM4. |
Hayır | — |
parameters.aclType |
ACL türü. Geçerli değerler: private (yalnızca sahibi ve yetkili kullanıcılar), public-read (genel okuma; sahibi ve yetkili kullanıcılar yazar), public-read-write (anonim kullanıcılar dahil tüm kullanıcılar okuyup yazabilir — dikkatli kullanın). |
Hayır | private |
parameters.enableVersioning |
Sürüm oluşturma durumu. Geçerli değerler: enabled , suspended , None . Etkinleştirildikten sonra devre dışı bırakılamaz, yalnızca askıya alınabilir. Saklama ilkesi veya OSS-HDFS yapılandırmasını engeller. storage-operator v1.26.2-1de13b6-aliyun veya üzeri sürümü gerektirir. Bkz. Yaşam döngüsü faturalandırması. |
Hayır | Enabled |
PVC ve örnek iş yükleri oluşturma
Paketin doğru şekilde bağlandığını doğrulamak için Kalıcı Birim Talebi (PVC), Deployment ve StatefulSet oluşturun.
cat << EOF | kubectl apply -f -
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: cnfs-oss-pvc
spec:
accessModes:
- ReadOnlyMany
storageClassName: alibabacloud-cnfs-oss
resources:
requests:
storage: 100Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: cnfs-oss-deployment
labels:
app: nginx
spec:
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
volumeMounts:
- mountPath: "/data"
name: cnfs-oss-pvc
volumes:
- name: cnfs-oss-pvc
persistentVolumeClaim:
claimName: cnfs-oss-pvc
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: cnfs-oss-sts
labels:
app: nginx
spec:
serviceName: "nginx"
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
volumeMounts:
- mountPath: "/data"
name: www
volumeClaimTemplates:
- metadata:
name: www
spec:
accessModes: [ "ReadOnlyMany" ]
storageClassName: "alibabacloud-cnfs-oss"
resources:
requests:
storage: 100Gi
EOF
Paketi ve iş yüklerini doğrulama
OSS paketinin ve podların hazır olduğunu onaylayın.
CNFS CRD'yi doğrulayın:
kubectl get cnfs/cnfs-oss-<clusterid> -o yaml
Beklenen çıktı:
apiVersion: storage.alibabacloud.com/v1beta1
kind: ContainerNetworkFileSystem
...
status:
conditions:
- lastProbeTime: "2022-09-18 15:02:39"
reason: The oss bucket is complete initialization.
status: Ready
fsAttributes:
accessGroupName: DEFAULT_VPC_GROUP_NAME
aclType: private
bucketName: cnfs-oss-****
encryptType: AES256
endPoint:
extranet: oss-****.aliyuncs.com
internal: oss-****-internal.aliyuncs.com
regionId: ****
storageType: Standard
status: Available
Paket hazır olduğunda status.status alanı Available değerini gösterir. Durum alanları:
| Alan | Açıklama |
|---|---|
status |
CNFS CRD durumu. Geçerli değerler: Pending, Creating, Initialization (dosya sistemi oluşturma), Available, Unavailable (kurtarılabilir), Fatal (kurtarılamaz), Terminating. |
conditions.lastProbeTime |
Son sorgu zaman damgası. |
conditions.reason |
Mevcut durumun nedeni. |
conditions.status |
Hazırlık durumu: Ready (kullanılabilir) veya NotReady. |
fsAttributes.accessGroupName |
Bağlama noktası için izin grubu. Şu anda yalnızca DEFAULT_VPC_GROUP_NAME (varsayılan VPC grubu) desteklenmektedir. |
fsAttributes.encryptType |
Şifreleme algoritması: None, AES256 veya SM4. |
fsAttributes.regionId |
ACK kümesi bölgesi. |
fsAttributes.storageType |
Paket depolama sınıfı: Standard, IA, Archive veya ColdArchive. |
fsAttributes.redundancyType |
Depolama yedeklilik türü: LRS (yerel olarak yedekli depolama) veya ZRS (alanlar arası yedekli depolama). |
fsAttributes.aclType |
Paket ACL türü. |
fsAttributes.endPoint |
Uç noktalar: extranet (genel) ve internal (dahili ağ). |
fsAttributes.enableVersioning |
Sürüm oluşturma durumu: enabled, suspended veya None. |
Podları doğrulayın:
kubectl get pod
Beklenen çıktı:
NAME READY STATUS RESTARTS AGE
cnfs-oss-deployment-5864fd8d98-4**** 1/1 Running 0 2m21s
cnfs-oss-sts-0 1/1 Running 0 2m21s
cnfs-oss-sts-1 1/1 Running 0 2m16s
Tüm podlar Running durumunu gösterir; bu da Deployment ve StatefulSet'in OSS paketini başarıyla bağladığını doğrular.
Yöntem 2: Mevcut bir OSS paketi kullanma
Ada göre mevcut bir OSS paketini referans alan bir CNFS CRD'si oluşturur.
CNFS CRD oluşturma
cat <<EOF | kubectl apply -f -
apiVersion: storage.alibabacloud.com/v1beta1
kind: ContainerNetworkFileSystem
metadata:
name: cnfs-oss-exist-bucket-name
spec:
description: "cnfs-oss"
type: oss
reclaimPolicy: Retain
parameters:
bucketName: bucket-name # Name of your existing OSS bucket
EOF
CNFS CRD'yi doğrulama
kubectl get cnfs/cnfs-oss-exist-bucket-name -o yaml
Beklenen çıktı:
apiVersion: storage.alibabacloud.com/v1beta1
kind: ContainerNetworkFileSystem
...
status:
conditions:
- lastProbeTime: "2022-09-14 17:00:21"
reason: The oss bucket is complete initialization.
status: Ready
fsAttributes:
accessGroupName: DEFAULT_VPC_GROUP_NAME
aclType: private
bucketName: exist-bucket-name
encryptType: AES256
endPoint:
extranet: oss-****.aliyuncs.com
internal: oss-****-internal.aliyuncs.com
regionId: ****
storageType: Standard
status: Available
Paketi bir iş yüküne bağlama
Bu yöntemin CNFS CRD'sini kullanarak PVC ve örnek iş yükleri oluşturma (Yöntem 1) bölümündeki adımları izleyerek paketi statik veya dinamik bir birim olarak Deployment'a bağlayın.
Sonraki adımlar
Nesneleri geçiş yapmak veya sona erdirmek için yaşam döngüsü kurallarını yapılandırın.
Farklı depolama sınıfları ve yedeklilik türleri için faturalandırma öğelerini inceleyin.