Untuk menyediakan disk secara dinamis sebagai volume persisten (PV), Anda harus membuat StorageClass secara manual dan mengatur bidang storageClassName dalam klaim volume persisten (PVC) untuk menentukan tipe disk.
Buat StorageClass dengan ID zona tertentu (zoneId)
- Buat file storage-class.yaml dan salin konten berikut ke dalam file tersebut:
kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: alicloud-disk-ssd-hangzhou-b provisioner: alicloud/disk parameters: type: cloud_ssd regionId: cn-hangzhou zoneId: cn-hangzhou-b reclaimPolicy: RetainTabel berikut menjelaskan parameter-parameter tersebut.Parameter Deskripsi provisionerAtur nilai menjadi alicloud/disk. Ini adalah plugin volume yang digunakan untuk menyediakan disk. typeTipe disk. Nilai valid termasuk cloud_efficiency, cloud_ssd, cloud_essd, dan available. Jika Anda mengatur parameter ini ke available, sistem akan mencoba membuat disk dalam urutan berikut: ESSD, SSD standar, dan ultra disk. Sistem terus mencoba hingga disk dibuat. regionIdWilayah tempat Anda ingin membuat disk. reclaimPolicyKebijakan untuk mereklaim disk. Secara default, parameter ini diatur ke Delete. Anda juga dapat mengatur parameter ini ke Retain. Jika Anda memerlukan keamanan data tinggi, kami sarankan Anda mengatur parameter ini ke Retain untuk menghindari kehilangan data akibat kesalahan pengguna. zoneIdZona tempat Anda ingin membuat disk. Untuk kluster multi-zona, Anda dapat menentukan beberapa zona. Contoh:zoneId: cn-hangzhou-a,cn-hangzhou-b,cn-hangzhou-cencryptedOpsional. Parameter ini menentukan apakah disk dienkripsi. Secara default, parameter ini diatur ke false. Ini menentukan bahwa disk tidak dienkripsi. - Jalankan perintah berikut untuk membuat StorageClass:
kubectl apply -f storage-class.yaml
Buat StorageClass dalam mode WaitForFirstConsumer
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: alicloud-disk-topology-ssd
provisioner: alicloud/disk
parameters:
type: cloud_ssd
reclaimPolicy: Retain
volumeBindingMode: WaitForFirstConsumerCatatan
- Jika Anda tidak membuat StorageClass dalam mode WaitForFirstConsumer dan parameter zoneid tidak diatur, PV dibuat di zona tempat komponen Disk-Controller diterapkan.
- Jika Anda tidak membuat StorageClass dalam mode WaitForFirstConsumer tetapi parameter zoneid diatur, sistem akan mencoba membuat PV di zona yang ditentukan berdasarkan algoritma round-robin.
- Jika Anda membuat StorageClass dalam mode WaitForFirstConsumer, disk dibuat untuk node tempat pod yang menggunakan PVC dijadwalkan. Disk dibuat di zona dari pod yang dijadwalkan.
Buat PVC
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: disk-ssd
spec:
accessModes:
- ReadWriteOnce
storageClassName: alicloud-disk-ssd-hangzhou-b
resources:
requests:
storage: 20Gi
---
kind: Pod
apiVersion: v1
metadata:
name: disk-pod-ssd
spec:
containers:
- name: disk-pod
image: nginx
volumeMounts:
- name: disk-pvc
mountPath: "/mnt"
restartPolicy: "Never"
volumes:
- name: disk-pvc
persistentVolumeClaim:
claimName: disk-ssdPengaturan default berikut termasuk:
Dalam kluster multi-zona, Anda harus membuat StorageClass secara manual untuk menentukan zona tempat disk dibuat.
Secara default, jenis-jenis StorageClass berikut disediakan untuk kluster satu zona:
- alicloud-disk-efficiency: ultra disk.
- alicloud-disk-ssd: SSD standar.
- alicloud-disk-essd: ESSD.
- alicloud-disk-available: mode ketersediaan tinggi. Dalam mode ini, sistem pertama-tama mencoba membuat SSD standar. Jika sumber daya SSD habis, sistem mencoba membuat ultra disk. Penting Untuk versi alicloud-disk-controller lebih lama dari v1.14.8.44-c23b62c5-aliyun, sistem mencoba membuat disk dalam urutan berikut: ESSD, SSD standar, dan ultra disk. Sistem terus mencoba hingga disk dibuat.
- alicloud-disk-topology: membuat disk dalam mode WaitForFirstConsumer.
Buat StatefulSet Multi-Instansi Menggunakan Disk
Anda dapat menggunakan parameter volumeClaimTemplates untuk membuat beberapa PVC dan PV secara dinamis serta mengikat PV ke PVC.
apiVersion: v1
kind: Service
metadata:
name: nginx
labels:
app: nginx
spec:
ports:
- port: 80
name: web
clusterIP: None
selector:
app: nginx
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: web
spec:
selector:
matchLabels:
app: nginx
serviceName: "nginx"
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
name: web
volumeMounts:
- name: disk-ssd
mountPath: /data
volumeClaimTemplates:
- metadata:
name: disk-ssd
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: "alicloud-disk-ssd-hangzhou-b"
resources:
requests:
storage: 20GiAnda juga dapat menggunakan volume disk yang disediakan secara dinamis di konsol Container Service for Kubernetes (ACK). Untuk informasi lebih lanjut, lihat Gunakan volume disk yang disediakan secara dinamis di konsol ACK.