ACK permite cambiar la categoría de un disco en la nube asociado a un volumen sin necesidad de reconstruir su carga de trabajo. Por ejemplo, si aumentan las demandas de almacenamiento de su aplicación, puede actualizar un SSD estándar a un SSD empresarial (ESSD) para obtener mayores IOPS.
Requisitos previos
Antes de empezar, asegúrese de cumplir con lo siguiente:
Un clúster que ejecute Kubernetes 1.20 o posterior con el complemento Container Storage Interface (CSI) instalado. Para actualizar su clúster, consulte Manually upgrade a cluster.
storage-operator versión 1.26.1-50a1499-aliyun o posterior instalada. De forma predeterminada, storage-operator se instala en el clúster. Para comprobar la versión, vaya a la página de detalles del clúster en la consola de ACK, elija Operations > Add-ons en el panel de navegación izquierdo y haga clic en la pestaña Storage. Para más información, consulte Manage the storage-operator component.
-
(Solo para clústeres dedicados de ACK) Roles de RAM (Resource Access Management) de worker y master con permiso para invocar la operación
ModifyDiskSpec. Esto no es necesario en los clústeres administrados de ACK. Consulte Create a custom policy.
Límites
Los discos básicos y los discos efímeros no se pueden cambiar a otras categorías de disco.
Los discos ESSD AutoPL no se pueden cambiar a otras categorías de disco.
Solo los discos pay-as-you-go se pueden montar como volúmenes.
La nueva categoría de disco debe ser compatible con el tipo de instancia de ECS del nodo que aloja su pod. Para detalles de compatibilidad, consulte Overview of instance families.
Cuando un cambio de categoría involucra un ESSD regional, no se pueden modificar las configuraciones de afinidad del volumen. Los pods que utilizan el disco no se pueden reprogramar en otras zonas.
Para consultar la lista completa de límites, vea Limits.
Conversiones de categoría de disco compatibles
La siguiente tabla resume las actualizaciones y reducciones compatibles.
|
Categoría de disco de origen |
Categorías de disco de destino |
|
Ultra disk |
Standard SSD, ESSD Entry, PL0/PL1/PL2/PL3 ESSD, disco ESSD AutoPL |
|
Standard SSD |
PL1/PL2/PL3 ESSD, disco ESSD AutoPL |
|
PL0 ESSD |
PL1/PL2/PL3 ESSD, disco ESSD AutoPL |
|
PL1/PL2/PL3 ESSD (pay-as-you-go) |
Cambio entre PL1, PL2 y PL3; o a disco ESSD AutoPL |
|
PL1/PL2/PL3 ESSD (suscripción) |
Solo actualización (de menor a mayor): PL1→PL2, PL1→PL3, PL2→PL3; PL1→disco ESSD AutoPL |
Notas de uso:
Solo los discos ESSD Entry se pueden asociar a instancias de universal instance families y de e economy instance family.
El nivel de rendimiento al que se puede actualizar un ESSD depende de la capacidad del disco. Si un nivel de rendimiento superior no está disponible, amplíe primero el disco y luego actualice el nivel de rendimiento.
Después de cambiar un disco a PL3 ESSD, asocie el disco a una instancia o reinicie la instancia para activar el rendimiento óptimo. La fiabilidad de los datos no se ve afectada durante este periodo.
Tras el cambio de categoría de disco, la facturación sigue las reglas de la nueva categoría.
Al cambiar hacia o desde un disco ESSD AutoPL: puede habilitar o deshabilitar el aprovisionamiento de rendimiento después del cambio (se aplican cargos adicionales cuando está habilitado; consulte Modificar el rendimiento aprovisionado de un disco ESSD AutoPL). El pico de rendimiento no se puede configurar durante el cambio, pero sí se puede habilitar o deshabilitar una vez completado; consulte Habilitar o deshabilitar el pico de rendimiento para un disco ESSD AutoPL.
Referencia del parámetro desiredDiskType
Utilice los siguientes valores para el parámetro desiredDiskType al crear el recurso personalizado en el paso 2.
|
Valor |
Categoría de disco |
|
|
Standard SSD |
|
|
PL0 ESSD |
|
|
PL1 ESSD |
|
|
PL2 ESSD |
|
|
PL3 ESSD |
|
|
Disco ESSD AutoPL |
Paso 1: Habilitar cambios de categoría de disco en storage-operator
Ejecute el siguiente comando para actualizar el ConfigMap de storage-operator y habilitar la función de cambio de categoría de disco. Esta función la implementa el complemento 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\"}"}}'
Paso 2: Cambiar la categoría de disco
Para minimizar el impacto en sus cargas de trabajo, realice los cambios de categoría de disco fuera de las horas pico.
1. Crear un StatefulSet
Omita este paso si ya existe un StatefulSet con un disco en la nube montado en su clúster.
Cree un archivo llamado StatefulSet.yaml con la siguiente plantilla. Esto crea un StatefulSet con un pod que tiene montado un PL1 ESSD de 40 GiB.
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
Aplique el manifiesto y compruebe que el pod se esté ejecutando:
kubectl create -f StatefulSet.yaml
kubectl get pod -l app=nginx
Salida esperada:
NAME READY STATUS RESTARTS AGE
nginx-diskspec-0 1/1 Running 0 4m4s
2. Identificar el PersistentVolume (PV) a cambiar
Obtenga el PersistentVolumeClaim (PVC) utilizado por el StatefulSet y anote el nombre del PV vinculado en la columna VOLUME.
kubectl get pvc pvc-disk-nginx-diskspec-0
Salida esperada:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE
pvc-disk-nginx-diskspec-0 Bound d-uf6ijdcp3aeoi82w**** 40Gi RWO alicloud-disk-essd <unset> 5m6s
Compruebe la categoría de disco actual del PV:
kubectl get pv d-uf6ijdcp3aeoi82w**** -o=jsonpath='{.metadata.labels}'
Salida esperada: cloud_essd.PL1 confirma que el PV utiliza un PL1 ESSD:
{"csi.alibabacloud.com/disktype":"cloud_essd.PL1"}
3. Crear un recurso personalizado para iniciar el cambio de categoría
Cree un archivo llamado cr.yaml. Reemplace pvNames con el nombre del PV del paso anterior y establezca desiredDiskType en la categoría de disco de destino (consulte la referencia del parámetro desiredDiskType anterior).
apiVersion: storage.alibabacloud.com/v1beta1
kind: ContainerStorageOperator
metadata:
name: default
spec:
operationType: DISKUPGRADE
operationParams:
pvNames: "d-uf6ijdcp3aeoi82w****"
desiredDiskType: "cloud_auto"
|
Parámetro |
Descripción |
|
|
Establezca este valor en |
|
|
El PV que se va a cambiar. Separe varios PV con comas; por ejemplo: |
|
|
La categoría de disco de destino. Consulte la referencia del parámetro |
Aplique el recurso personalizado:
kubectl create -f cr.yaml
4. Comprobar el cambio de categoría de disco
Consulte el estado del recurso personalizado para verificar si el cambio de categoría de disco se ha completado:
kubectl get ContainerStorageOperator default -o yaml
Salida esperada cuando el cambio se ha completado:
status:
message: []
process: 100%
status: SUCCESS
Confirme que la etiqueta del PV refleja la nueva categoría de disco:
kubectl get pv d-uf6ijdcp3aeoi82w**** -o=jsonpath='{.metadata.labels}'
Salida esperada:
{"csi.alibabacloud.com/disktype":"cloud_auto"}