ACK vous permet de modifier la catégorie d'un disque cloud associé à un volume sans reconstruire votre charge de travail. Par exemple, si les besoins en stockage de votre application augmentent, vous pouvez passer d'un SSD standard à un Enterprise SSD (ESSD) pour bénéficier d'IOPS plus élevés.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Un cluster exécutant Kubernetes 1.20 ou une version ultérieure, avec le plug-in CSI (Container Storage Interface) installé. Pour mettre à niveau votre cluster, consultez la rubrique Mettre à niveau manuellement un cluster.
Le composant storage-operator version 1.26.1-50a1499-aliyun ou ultérieure est installé. Par défaut, storage-operator est installé dans le cluster. Pour vérifier la version, accédez à la page des détails du cluster dans la console ACK, choisissez Operations > Add-ons dans le volet de navigation de gauche, puis cliquez sur l'onglet Storage. Pour plus d'informations, consultez la rubrique Gérer le composant storage-operator.
-
(Uniquement pour les clusters dédiés ACK) Des rôles RAM (Resource Access Management) pour les nœuds de travail et les nœuds maîtres, disposant de l'autorisation d'appeler l'opération
ModifyDiskSpec. Cette étape n'est pas requise pour les clusters gérés ACK. Consultez la rubrique Créer une stratégie personnalisée.
Limitations
Il est impossible de convertir les disques basiques et les disques éphémères vers d'autres catégories de disque.
Les disques ESSD AutoPL ne peuvent pas être convertis vers d'autres catégories de disque.
Seuls les disques en paiement à l'utilisation peuvent être montés en tant que volumes.
La nouvelle catégorie de disque doit être prise en charge par le type d'instance ECS du nœud hébergeant votre pod. Pour connaître les détails de compatibilité, consultez la rubrique Présentation des familles d'instances.
Lorsqu'une modification de catégorie implique un ESSD régional, les paramètres d'affinité du volume ne peuvent pas être modifiés. Les pods utilisant le disque ne peuvent pas être replanifiés dans d'autres zones.
Pour obtenir la liste complète des limites, consultez la rubrique Limites.
Conversions de catégories de disque prises en charge
Le tableau suivant récapitule les mises à niveau et rétrogradations prises en charge.
| Catégorie de disque source | Catégories de disque cibles |
|---|---|
| Disque ultra | SSD standard, ESSD Entry, ESSD PL0/PL1/PL2/PL3, disque ESSD AutoPL |
| SSD standard | ESSD PL1/PL2/PL3, disque ESSD AutoPL |
| ESSD PL0 | ESSD PL1/PL2/PL3, disque ESSD AutoPL |
| ESSD PL1/PL2/PL3 (paiement à l'utilisation) | Modification entre PL1, PL2 et PL3 ; ou conversion vers un disque ESSD AutoPL |
| ESSD PL1/PL2/PL3 (abonnement) | Mise à niveau uniquement (du niveau inférieur au supérieur) : PL1→PL2, PL1→PL3, PL2→PL3 ; PL1→disque ESSD AutoPL |
Remarques d'utilisation :
Seuls les disques ESSD Entry peuvent être attachés aux instances des familles d'instances universelles et de la famille d'instances économique e.
Le niveau de performance auquel un ESSD peut être mis à niveau dépend de la capacité du disque. Si un niveau de performance supérieur n'est pas disponible, augmentez d'abord la taille du disque, puis mettez à niveau le niveau de performance.
Après avoir converti un disque en ESSD PL3, attachez-le à une instance ou redémarrez l'instance pour activer les performances optimales. La fiabilité des données n'est pas affectée durant cette période.
Après la modification de la catégorie de disque, la facturation suit les règles de la nouvelle catégorie.
Lors d'une conversion vers ou depuis un disque ESSD AutoPL : vous pouvez activer ou désactiver la provision de performances après la modification (des frais supplémentaires s'appliquent lorsque l'option est activée — consultez la rubrique Modifier les performances provisionnées d'un disque ESSD AutoPL). Le burst de performances ne peut pas être configuré pendant la modification, mais il peut être activé ou désactivé une fois celle-ci terminée — consultez la rubrique Activer ou désactiver le burst de performances pour un disque ESSD AutoPL.
Référence du paramètre desiredDiskType
Utilisez les valeurs suivantes pour le paramètre desiredDiskType lors de la création de la ressource personnalisée à l'étape 2.
| Valeur | Catégorie de disque |
|---|---|
cloud_ssd |
SSD standard |
cloud_essd.PL0 |
ESSD PL0 |
cloud_essd.PL1 |
ESSD PL1 |
cloud_essd.PL2 |
ESSD PL2 |
cloud_essd.PL3 |
ESSD PL3 |
cloud_auto |
Disque ESSD AutoPL |
Étape 1 : Activer les modifications de catégorie de disque dans storage-operator
Exécutez la commande suivante pour mettre à jour la ConfigMap de storage-operator et activer la fonctionnalité de modification de catégorie de disque. Cette fonctionnalité est implémentée par le plug-in storage-controller.
kubectl patch configmap/storage-operator \
-n kube-system \
--type merge \
-p '{"data":{"storage-controller":"{\"imageRep\":\"acs/storage-controller\",\"imageTag\":\"\",\"install\":\"true\",\"template\":\"/acs/templates/storage-controller/install.yaml\",\"type\":\"deployment\"}"}}'
Étape 2 : Modifier la catégorie de disque
Afin de minimiser l'impact sur vos charges de travail, effectuez les modifications de catégorie de disque pendant les heures creuses.
1. Créer un StatefulSet
Ignorez cette étape si un StatefulSet avec un disque cloud monté existe déjà dans votre cluster.
Créez un fichier nommé StatefulSet.yaml à l'aide du modèle suivant. Cela crée un StatefulSet avec un pod disposant d'un ESSD PL1 de 40 Go monté.
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: nginx-diskspec
spec:
selector:
matchLabels:
app: nginx
replicas: 1
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:
- name: pvc-disk
mountPath: /data
volumes:
- name: pvc-disk
persistentVolumeClaim:
claimName: disk-pvc
volumeClaimTemplates:
- metadata:
name: pvc-disk
labels:
app: nginx
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: "alicloud-disk-essd"
resources:
requests:
storage: 40Gi
Appliquez le manifeste et vérifiez que le pod est en cours d'exécution :
kubectl create -f StatefulSet.yaml
kubectl get pod -l app=nginx
Sortie attendue :
NAME READY STATUS RESTARTS AGE
nginx-diskspec-0 1/1 Running 0 4m4s
2. Identifier le PersistentVolume (PV) à modifier
Récupérez la PersistentVolumeClaim (PVC) utilisée par le StatefulSet et notez le nom du PV lié dans la colonne VOLUME.
kubectl get pvc pvc-disk-nginx-diskspec-0
Sortie attendue :
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE
pvc-disk-nginx-diskspec-0 Bound d-uf6ijdcp3aeoi82w**** 40Gi RWO alicloud-disk-essd <unset> 5m6s
Vérifiez la catégorie actuelle du disque du PV :
kubectl get pv d-uf6ijdcp3aeoi82w**** -o=jsonpath='{.metadata.labels}'
Sortie attendue — cloud_essd.PL1 confirme que le PV est sauvegardé par un ESSD PL1 :
{"csi.alibabacloud.com/disktype":"cloud_essd.PL1"}
3. Créer une ressource personnalisée pour déclencher la modification de catégorie
Créez un fichier nommé cr.yaml. Remplacez pvNames par le nom du PV obtenu à l'étape précédente, et définissez desiredDiskType sur la catégorie de disque cible (reportez-vous à la référence du paramètre desiredDiskType ci-dessus).
apiVersion: storage.alibabacloud.com/v1beta1
kind: ContainerStorageOperator
metadata:
name: default
spec:
operationType: DISKUPGRADE
operationParams:
pvNames: "d-uf6ijdcp3aeoi82w****"
desiredDiskType: "cloud_auto"
| Paramètre | Description |
|---|---|
operationType |
Définissez cette valeur sur DISKUPGRADE pour les opérations de mise à niveau ou de rétrogradation de disque. |
pvNames |
Le PV à modifier. Séparez plusieurs PV par des virgules, par exemple : « disk-1,disk-2,disk-3*** ». |
desiredDiskType |
La catégorie de disque cible. Consultez la référence du paramètre desiredDiskType ci-dessus. |
Appliquez la ressource personnalisée :
kubectl create -f cr.yaml
4. Vérifier la modification de la catégorie de disque
Interrogez le statut de la ressource personnalisée pour vérifier si la modification de la catégorie de disque est terminée :
kubectl get ContainerStorageOperator default -o yaml
Sortie attendue une fois la modification terminée :
status:
message: []
process: 100%
status: SUCCESS
Confirmez que l'étiquette du PV reflète la nouvelle catégorie de disque :
kubectl get pv d-uf6ijdcp3aeoi82w**** -o=jsonpath='{.metadata.labels}'
Sortie attendue :
{"csi.alibabacloud.com/disktype":"cloud_auto"}