Bir konteyner çöktüğünde, durum bilgisi içeren iş yüklerindeki veriler kaybolabilir veya güvenilmez hale gelebilir. Kalıcı depolama bu riski ortadan kaldırır. Bu konu, Flexvolume ile kalıcı depolama amacıyla statik olarak sağlanan bir cloud disk biriminin nasıl kullanılacağını açıklar.
Önkoşullar
Aşağıdaki görevleri tamamlayın:
Arka Plan
Cloud disk kullanım senaryoları:
MySQL ve Redis gibi yüksek disk G/Ç gerektiren ve veri paylaşımı gerekmeyen hizmetler.
Yüksek hızlı günlük yazma.
Verilerin bir pod'un yaşam döngüsü ötesinde kalıcı hale getirilmesi.
Mevcut bir cloud disk biriminiz varsa statik olarak sağlanan bir birim kullanın.
Statik olarak sağlanan bir cloud disk birimini kullanmak için Kalıcı Birim (PV) ve Kalıcı Birim Talebi (PVC) öğelerini manuel olarak oluşturun.
Sınırlamalar
Bir cloud disk birimi aynı anda yalnızca bir pod'a bağlanabilir.
Bir cloud disk birimi yalnızca aynı alandaki bir düğüme bağlanabilir.
PV Oluşturma
-
pv-static.yaml adlı bir dosya oluşturun.
apiVersion: v1 kind: PersistentVolume metadata: name: <your-disk-id> labels: alicloud-pvname: <your-disk-id> failure-domain.beta.kubernetes.io/zone: <your-zone> failure-domain.beta.kubernetes.io/region: <your-region> spec: capacity: storage: 20Gi accessModes: - ReadWriteOnce flexVolume: driver: "alicloud/disk" fsType: "ext4" options: volumeId: "<your-disk-id>"Notalicloud-pvname: <your-disk-id>: PV adı. Cloud disk ID'nizle eşleşmelidir.failure-domain.beta.kubernetes.io/zone: <your-zone>: Cloud disk alanı, örneğin cn-hangzhou-b.failure-domain.beta.kubernetes.io/region: <your-region>: Cloud disk bölgesi, örneğin cn-hangzhou.
Çok bölgeli kümeler için pod'ların cloud disk ile aynı alanda zamanlanmasını sağlamak üzere
failure-domain.beta.kubernetes.io/zonevefailure-domain.beta.kubernetes.io/regiondeğerlerini belirtin. -
PV'yi oluşturun.
kubectl create -f pv-static.yamlVerification Result
Container Service Management Console üzerinde oturum açın.
Sol gezinme bölmesinde Clusters seçeneğine tıklayın.
Clusters sayfasında hedef kümeye tıklayın veya Actions sütunundaki Details seçeneğine tıklayın.
Küme yönetimi sayfasının sol gezinme bölmesinde yolunu izleyin. PV; kapasite 20Gi, erişim modu ReadWriteOnce, geri alma ilkesi Retain ve durum Available olarak görünür.
PVC Oluşturma
-
pvc-static.yaml adlı bir dosya oluşturun.
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: pvc-disk spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi selector: matchLabels: alicloud-pvname: <your-disk-id> -
PVC'yi oluşturun.
kubectl create -f pvc-static.yamlVerification Result
Container Service Management Console üzerinde oturum açın.
Sol gezinme bölmesinde Clusters seçeneğine tıklayın.
Clusters sayfasında hedef kümeye tıklayın veya Actions sütunundaki Details seçeneğine tıklayın.
Küme yönetimi sayfasının sol gezinme bölmesinde yolunu izleyin.
PVC, Persistent Volume Claims sayfasında görünür.
Uygulama Oluşturma
-
static.yaml adlı bir dosya oluşturun.
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-static labels: app: nginx spec: selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx volumeMounts: - name: disk-pvc mountPath: "/data" volumes: - name: disk-pvc persistentVolumeClaim: claimName: pvc-disk -
Uygulamayı oluşturun.
kubectl create -f static.yamlVerification Result
Container Service Management Console üzerinde oturum açın.
Sol gezinme bölmesinde Clusters seçeneğine tıklayın.
Clusters sayfasında hedef kümeye tıklayın veya Actions sütunundaki Details seçeneğine tıklayın.
Küme yönetimi sayfasının sol gezinme bölmesinde yolunu izleyin.
Uygulama, Deployments sayfasında görünür.
Veri Kalıcılığını Doğrulama
-
Pod adını alın.
kubectl get pod | grep staticBeklenen çıktı:
nginx-static-78c7dcb9d7-g**** 2/2 Running 0 32s -
Cloud disk biriminin /data konumuna bağlandığını doğrulayın.
kubectl exec nginx-static-78c7dcb9d7-g**** -- df | grep dataBeklenen çıktı:
/dev/vdf 20511312 45080 20449848 1% /data -
/data içindeki dosyaları listeleyin.
kubectl exec nginx-static-78c7dcb9d7-g**** -- ls /dataBeklenen çıktı:
lost+found -
/data dizininde static adlı bir dosya oluşturun.
kubectl exec nginx-static-78c7dcb9d7-g**** -- touch /data/static -
/data içindeki dosyaları listeleyin.
kubectl exec nginx-static-78c7dcb9d7-g**** -- ls /dataBeklenen çıktı:
static lost+found -
nginx-static-78c7dcb9d7-g****pod'unu silin.kubectl delete pod nginx-static-78c7dcb9d7-g****Beklenen çıktı:
pod "nginx-static-78c7dcb9d7-g****" deleted -
Ayrı bir terminalde Kubernetes'in pod'u silip yeniden oluşturmasını izleyin.
kubectl get pod -w -l app=nginxBeklenen çıktı:
NAME READY STATUS RESTARTS AGE nginx-static-78c7dcb9d7-g**** 2/2 Running 0 50s nginx-static-78c7dcb9d7-g**** 2/2 Terminating 0 72s nginx-static-78c7dcb9d7-h**** 0/2 Pending 0 0s nginx-static-78c7dcb9d7-h**** 0/2 Pending 0 0s nginx-static-78c7dcb9d7-h**** 0/2 Init:0/1 0 0s nginx-static-78c7dcb9d7-g**** 0/2 Terminating 0 73s nginx-static-78c7dcb9d7-h**** 0/2 Init:0/1 0 5s nginx-static-78c7dcb9d7-g**** 0/2 Terminating 0 78s nginx-static-78c7dcb9d7-g**** 0/2 Terminating 0 78s nginx-static-78c7dcb9d7-h**** 0/2 PodInitializing 0 6s nginx-static-78c7dcb9d7-h**** 2/2 Running 0 8s -
Yeniden oluşturulan pod'un adını alın.
kubectl get podBeklenen çıktı:
NAME READY STATUS RESTARTS AGE nginx-static-78c7dcb9d7-h**** 2/2 Running 0 14s -
/data içindeki dosyaları listeleyin. static dosyası hala mevcuttur; bu durum, cloud disk üzerindeki verilerin pod yeniden başlatmaları sırasında korunduğunu doğrular.
kubectl exec nginx-static-78c7dcb9d7-h**** -- ls /dataBeklenen çıktı:
static lost+found