El controlador de CSI para Persistent Disk en Compute Engine es la forma principal de acceder al almacenamiento de Hyperdisk con clústeres de Google Kubernetes Engine (GKE).
Antes de empezar
Antes de empezar, asegúrate de que has realizado las siguientes tareas:
- Habilita la API de Google Kubernetes Engine. Habilitar la API de Google Kubernetes Engine
- Si quieres usar Google Cloud CLI para esta tarea, instálala y, a continuación, inicialízala. Si ya has instalado la gcloud CLI, obtén la versión más reciente ejecutando
gcloud components update
.
- Defina su región y zona predeterminadas con uno de los valores admitidos.
Requisitos
Para usar volúmenes de Hyperdisk en GKE, tus clústeres deben cumplir los siguientes requisitos:
- Usa clústeres Linux con la versión 1.26 de GKE o una posterior. Si usas un canal de lanzamiento, asegúrate de que el canal tenga la versión mínima de GKE o una posterior que se requiera para este controlador. Para aprovisionar volúmenes de Hyperdisk Balanced High Availability, se necesita la versión 1.33 o posterior de GKE.
- Asegúrate de que el controlador de CSI para Persistent Disk en Compute Engine esté habilitado. El controlador de Persistent Disk de Compute Engine está habilitado de forma predeterminada en los clústeres Autopilot y Estándar nuevos, y no se puede inhabilitar ni editar cuando se usa Autopilot. Si necesitas habilitar el controlador de CSI para Persistent Disk en Compute Engine desde tu clúster, consulta el artículo Habilitar el controlador de CSI para Persistent Disk en Compute Engine en un clúster ya creado.
Crear un volumen de Hyperdisk para GKE
En esta sección se ofrece una descripción general de cómo crear un volumen de Hyperdisk respaldado por el controlador de CSI de Compute Engine en GKE.
Crear un StorageClass
El controlador de CSI para Persistent Disk en Compute Engine proporciona los siguientes campos de almacenamiento de Persistent DiskType
para admitir Hyperdisk:
hyperdisk-balanced
hyperdisk-throughput
hyperdisk-extreme
hyperdisk-ml
hyperdisk-balanced-high-availability
Para crear una StorageClass con el nivel de rendimiento o IOPS que quieras, usa pd.csi.storage.gke.io
en el campo del aprovisionador y especifica uno de los tipos de almacenamiento de Hyperdisk.
Cada tipo de Hyperdisk tiene valores predeterminados de rendimiento determinados por el tamaño inicial del disco aprovisionado. Cuando crees el StorageClass, puedes especificar los siguientes parámetros en función de tu tipo de Hyperdisk. Si omite estos parámetros, GKE usará los valores predeterminados del tipo de disco basado en la capacidad. Para obtener información sobre los valores permitidos de la tasa de transferencia o las IOPS, consulta Planificar el nivel de rendimiento de un volumen de Hyperdisk.
Parámetro | Tipo de Hyperdisk | Uso |
---|---|---|
provisioned-throughput-on-create |
Hyperdisk Balanced*, Hyperdisk Balanced High Availability y Hyperdisk Throughput | Indica el valor de rendimiento en MiB/s con el calificador "Mi". Por ejemplo, si el rendimiento que necesitas es de 250 MiB/s, especifica "250Mi" al crear StorageClass. |
provisioned-iops-on-create |
Hyperdisk Balanced, Hyperdisk Balanced High Availability y Hyperdisk Extreme | El valor de IOPS debe expresarse sin ningún calificador. Por ejemplo, si necesitas 7000 IOPS, especifica "7000" al crear StorageClass. |
En los siguientes ejemplos se muestra cómo crear un StorageClass para cada tipo de Hyperdisk:
Hyperdisk Balanced
Guarda el siguiente manifiesto en un archivo llamado
hdb-example-class.yaml
:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: balanced-storage provisioner: pd.csi.storage.gke.io volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true parameters: type: hyperdisk-balanced provisioned-throughput-on-create: "250Mi" provisioned-iops-on-create: "7000"
Crea el objeto StorageClass:
kubectl create -f hdb-example-class.yaml
Hyperdisk Throughput
Guarda el siguiente manifiesto en un archivo llamado
hdt-example-class.yaml
:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: throughput-storage provisioner: pd.csi.storage.gke.io volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true parameters: type: hyperdisk-throughput provisioned-throughput-on-create: "50Mi"
Crea el objeto StorageClass:
kubectl create -f hdt-example-class.yaml
Hyperdisk Extreme
Guarda el siguiente manifiesto en un archivo llamado
hdx-example-class.yaml
:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: extreme-storage provisioner: pd.csi.storage.gke.io volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true parameters: type: hyperdisk-extreme provisioned-iops-on-create: "50000"
Crea el objeto StorageClass:
kubectl create -f hdx-example-class.yaml
Hyperdisk Balanced HA
Guarda el siguiente manifiesto en un archivo llamado
hdb-ha-example-class.yaml
.En el caso de los clústeres zonales, define las zonas de disponibilidad en las que quieras crear los PersistentVolumes.
En el caso de los clústeres regionales, puedes no definir el campo
allowedTopologies
para crear los PersistentVolumes en dos zonas de disponibilidad seleccionadas aleatoriamente en el momento de programar los pods.
Para obtener más información sobre las zonas admitidas, consulta la disponibilidad regional de Hyperdisk.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: balanced-ha-storage provisioner: pd.csi.storage.gke.io volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true parameters: type: hyperdisk-balanced-high-availability provisioned-throughput-on-create: "250Mi" provisioned-iops-on-create: "7000" allowedTopologies: - matchLabelExpressions: - key: topology.gke.io/zone values: - ZONE1 - ZONE2
Crea el objeto StorageClass:
kubectl create -f hdb-ha-example-class.yaml
Para encontrar el nombre de las StorageClasses disponibles en tu clúster, ejecuta el siguiente comando:
kubectl get sc
Crear un PersistentVolumeClaim
Puedes crear un PersistentVolumeClaim que haga referencia a la StorageClass del controlador de CSI para Persistent Disk en Compute Engine.
Hyperdisk Balanced
En este ejemplo, se especifica que la capacidad de almacenamiento objetivo del volumen Hyperdisk Balanced es de 20 GiB.
Guarda el siguiente manifiesto de PersistentVolumeClaim en un archivo llamado
pvc-example.yaml
:kind: PersistentVolumeClaim apiVersion: v1 metadata: name: podpvc spec: accessModes: - ReadWriteOnce storageClassName: balanced-storage resources: requests: storage: 20Gi
Aplica el PersistentVolumeClaim que hace referencia a la StorageClass que has creado en el ejemplo anterior:
kubectl apply -f pvc-example.yaml
Hyperdisk Throughput
En este ejemplo, se especifica la capacidad de almacenamiento objetivo del volumen de rendimiento de HyperDisk como 2 TiB.
Guarda el siguiente manifiesto de PersistentVolumeClaim en un archivo llamado
pvc-example.yaml
:kind: PersistentVolumeClaim apiVersion: v1 metadata: name: podpvc spec: accessModes: - ReadWriteOnce storageClassName: throughput-storage resources: requests: storage: 2Ti
Aplica el PersistentVolumeClaim que hace referencia a la StorageClass que has creado en el ejemplo anterior:
kubectl apply -f pvc-example.yaml
Hyperdisk Extreme
En este ejemplo, se especifica la capacidad de almacenamiento mínima del volumen Hyperdisk Extreme como 64 GiB.
Guarda el siguiente manifiesto de PersistentVolumeClaim en un archivo llamado
pvc-example.yaml
:kind: PersistentVolumeClaim apiVersion: v1 metadata: name: podpvc spec: accessModes: - ReadWriteOnce storageClassName: extreme-storage resources: requests: storage: 64Gi
Aplica el PersistentVolumeClaim que hace referencia a la StorageClass que has creado en el ejemplo anterior:
kubectl apply -f pvc-example.yaml
Hyperdisk Balanced HA
En este ejemplo, se especifica que la capacidad de almacenamiento mínima del volumen Hyperdisk Balanced High Availability es de 20 GiB y que el modo de acceso es ReadWriteOnce
. Hyperdisk Balanced High Availability también admite los modos de acceso ReadWriteMany
y ReadWriteOncePod
. Para ver las diferencias y los casos prácticos de cada modo de acceso, consulta Modos de acceso de volúmenes persistentes.
Guarda el siguiente manifiesto de PersistentVolumeClaim en un archivo llamado
pvc-example.yaml
:kind: PersistentVolumeClaim apiVersion: v1 metadata: name: podpvc spec: accessModes: - ReadWriteOnce storageClassName: balanced-ha-storage resources: requests: storage: 20Gi
Aplica el PersistentVolumeClaim que hace referencia a la StorageClass que has creado en el ejemplo anterior:
kubectl apply -f pvc-example.yaml
Crear un Deployment para consumir el volumen de Hyperdisk
Cuando uses pods con PersistentVolumes, te recomendamos que utilices un controlador de carga de trabajo (como un Deployment o un StatefulSet).
En el siguiente ejemplo se crea un manifiesto que configura un pod para desplegar un servidor web Nginx mediante el objeto PersistentVolumeClaim creado en la sección anterior. Guarda el siguiente manifiesto de ejemplo como
hyperdisk-example-deployment.yaml
:apiVersion: apps/v1 kind: Deployment metadata: name: web-server-deployment labels: app: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx volumeMounts: - mountPath: /var/lib/www/html name: mypvc volumes: - name: mypvc persistentVolumeClaim: # Reference the PVC created earlier. claimName: podpvc readOnly: false
Para crear un Deployment basado en el archivo de manifiesto
hyperdisk-example-deployment.yaml
, ejecuta el siguiente comando:kubectl apply -f hyperdisk-example-deployment.yaml
Confirma que el despliegue se ha creado correctamente:
kubectl get deployment
Las instancias de Hyperdisk pueden tardar unos minutos en completar el aprovisionamiento. Cuando la implementación completa el aprovisionamiento, muestra el estado
READY
.Para comprobar el progreso, monitoriza el estado de PersistentVolumeClaim ejecutando el siguiente comando:
kubectl get pvc
Aprovisionar un volumen de Hyperdisk a partir de una captura
Para crear un volumen de Hyperdisk a partir de una instantánea de Persistent Disk, usa la Trusted Cloud consola, la CLI de Google Cloud o la API de Compute Engine. Para saber cómo crear una captura de Persistent Disk, consulta Crear y usar capturas de volumen.
Consola
Ve a la página Discos de la consola de Trusted Cloud .
Haz clic en Crear disco.
En Tipo de disco, elige una de las siguientes opciones:
- Hyperdisk Balanced
- Hyperdisk Extreme
- Rendimiento de Hyperdisk
- Alta disponibilidad de Hyperdisk
En Tipo de origen del disco, haga clic en Captura.
Selecciona el nombre de la copia de seguridad que quieras restaurar.
Selecciona el tamaño del nuevo disco en GiB. Este número debe ser igual o mayor que el del disco de origen original de la captura.
Define el rendimiento aprovisionado o las IOPS aprovisionadas que quieras para el disco, si son diferentes de los valores predeterminados.
Haz clic en Crear para crear el volumen de HyperDisk.
gcloud
Ejecuta el gcloud compute disks create
comando
para crear el volumen de HyperDisk a partir de una instantánea.
Hyperdisk Balanced
gcloud compute disks create DISK_NAME \
--size=SIZE \
--source-snapshot=SNAPSHOT_NAME \
--provisioned-throughput=TRHROUGHPUT_LIMIT \
--provisioned-iops=IOPS_LIMIT \
--type=hyperdisk-balanced
Haz los cambios siguientes:
DISK_NAME
: el nombre del nuevo disco.SIZE
: el tamaño del nuevo disco en gibibytes (GiB) o tebibytes (TiB). Para obtener más información sobre las limitaciones de capacidad, consulta Límites de tamaño y rendimiento.SNAPSHOT_NAME
: el nombre de la captura que se está restaurando.THROUGHPUT_LIMIT
: opcional. En el caso de los discos Hyperdisk Balanced, se trata de un número entero que representa el rendimiento, medido en MiB/s, que puede alcanzar el disco. Para obtener más información sobre las limitaciones de capacidad, consulta Límites de tamaño y rendimiento.IOPS_LIMIT
: opcional. En el caso de los discos Hyperdisk Balanced, este es el número máximo de IOPS que puede alcanzar el disco. Para obtener más información sobre las limitaciones de capacidad, consulta Límites de tamaño y rendimiento.
Hyperdisk Throughput
gcloud compute disks create DISK_NAME \
--size=SIZE \
--source-snapshot=SNAPSHOT_NAME \
--provisioned-throughput=TRHROUGHPUT_LIMIT \
--type=hyperdisk-throughput
Haz los cambios siguientes:
DISK_NAME
: el nombre del nuevo disco.SIZE
: el tamaño del nuevo disco en gibibytes (GiB o GB) o tebibytes (TiB o TB). Para obtener más información sobre las limitaciones de capacidad, consulta Límites de tamaño y rendimiento.SNAPSHOT_NAME
: el nombre de la captura que se está restaurando.THROUGHPUT_LIMIT
: opcional. En el caso de los discos Hyperdisk Throughput, se trata de un entero que representa el rendimiento, medido en MiB/s, que puede alcanzar el disco. Para obtener más información sobre las limitaciones de capacidad, consulta Límites de tamaño y rendimiento.
Hyperdisk Extreme
gcloud compute disks create DISK_NAME \
--size=SIZE \
--source-snapshot=SNAPSHOT_NAME \
--provisioned-iops=IOPS_LIMIT \
--type=hyperdisk-extreme
Haz los cambios siguientes:
DISK_NAME
: el nombre del nuevo disco.SIZE
: el tamaño, en gibibytes (GiB o GB) o tebibytes (TiB o TB), del nuevo disco. Para obtener más información sobre las limitaciones de capacidad, consulta Límites de tamaño y rendimiento.SNAPSHOT_NAME
: el nombre de la captura que se está restaurando.IOPS_LIMIT
: opcional. En el caso de los discos Hyperdisk Extreme, es el número máximo de operaciones de E/S por segundo que puede alcanzar el disco. Para obtener más información sobre las limitaciones de capacidad, consulta Límites de tamaño y rendimiento.
Hyperdisk Balanced HA
gcloud compute disks create DISK_NAME \
--size=SIZE \
--region=REGION \
--replica-zones=('ZONE1', 'ZONE2') \
--source-snapshot=SNAPSHOT_NAME \
--provisioned-throughput=TRHROUGHPUT_LIMIT \
--provisioned-iops=IOPS_LIMIT \
--type=hyperdisk-balanced-high-availability
Haz los cambios siguientes:
DISK_NAME
: el nombre del nuevo disco.SIZE
: el tamaño, en gibibytes (GiB) o tebibytes (TiB), del nuevo disco. Consulta las limitaciones de capacidad más recientes en la documentación de Compute Engine.REGION
: la región del nuevo disco. Consulta la documentación de Compute Engine para ver la disponibilidad regional más reciente.ZONE1
yZONE2
: las zonas de la región en las que se ubicarán las réplicas.SNAPSHOT_NAME
: el nombre de la captura que se está restaurando.THROUGHPUT_LIMIT
: opcional. En el caso de los discos Hyperdisk Balanced High Availability, se trata de un número entero que representa el rendimiento, medido en MiB/s, que puede alcanzar el disco. Para obtener más información sobre las limitaciones de capacidad, consulta Límites de tamaño y rendimiento.IOPS_LIMIT
: opcional. En el caso de los discos Hyperdisk Balanced High Availability, se trata del número máximo de IOPS que puede alcanzar el disco. Para obtener más información sobre las limitaciones de capacidad, consulta Límites de tamaño y rendimiento.
Crear una captura de un volumen de Hyperdisk
Para crear una captura a partir de un volumen de Hyperdisk, sigue los mismos pasos que para crear una captura de un volumen de Persistent Disk:
Actualizar la capacidad de procesamiento o las IOPS aprovisionadas de un volumen de Hyperdisk
En esta sección se explica cómo modificar el rendimiento aprovisionado de los volúmenes de HyperDisk.
Rendimiento
Solo se puede actualizar la capacidad de procesamiento reservada de los volúmenes Hyperdisk Balanced, Hyperdisk Balanced High Availability y Hyperdisk Throughput.
Para actualizar el nivel de rendimiento aprovisionado de tu volumen de Hyperdisk, sigue las instrucciones de la Trusted Cloud consola, la CLI de gcloud o la API de Compute Engine que se indican en el artículo Cambiar el rendimiento aprovisionado de un volumen de Hyperdisk.
Puedes cambiar el nivel de rendimiento aprovisionado (hasta una vez cada 4 horas) de un volumen de HyperDisk después de crearlo. Los nuevos niveles de rendimiento pueden tardar hasta 15 minutos en aplicarse. Durante el cambio de rendimiento, no se aplicarán los acuerdos de nivel de servicio ni los objetivos de nivel de servicio. Puedes cambiar el nivel de rendimiento de un volumen en cualquier momento, independientemente de si el disco está conectado a una instancia en ejecución o no.
El nuevo nivel de rendimiento que especifiques debe cumplir los valores admitidos para los volúmenes de Hyperdisk Balanced, Hyperdisk Throughput y Hyperdisk Balanced High Availability, respectivamente.
Para actualizar el nivel de rendimiento aprovisionado de un volumen de Hyperdisk, debes identificar el nombre del Persistent Disk que respalda tus recursos PersistentVolumeClaim y PersistentVolume:
Ve al explorador de objetos de la Trusted Cloud consola.
Busca la entrada de tu objeto PersistentVolumeClaim.
Haz clic en el enlace Volumen .
Abre la pestaña YAML del PersistentVolume asociado. Busca el valor de CSI
volumeHandle
en esta pestaña.Fíjate en el último elemento de este identificador (debe tener un valor como "
pvc-XXXXX
"). Este es el nombre de tu PersistentVolumeClaim. También debes anotar el proyecto y la zona.
IOPS
Solo se pueden actualizar las IOPS aprovisionadas de los volúmenes de Hyperdisk Balanced, Hyperdisk Balanced High Availability y Hyperdisk Extreme.
Para actualizar el nivel de IOPS aprovisionado de tu volumen de Hyperdisk, sigue las instrucciones de la consola, la CLI de gcloud o la API de Compute Engine que se indican en el artículo Cambiar el rendimiento aprovisionado de un volumen de Hyperdisk. Trusted Cloud
Puedes cambiar el nivel de IOPS aprovisionadas (hasta una vez cada 4 horas) de un volumen de HyperDisk IOPS después de crear el volumen. Los nuevos niveles de IOPS pueden tardar hasta 15 minutos en aplicarse. Durante el cambio de rendimiento, no se aplicará ningún acuerdo ni objetivo de nivel de servicio. Puedes cambiar el nivel de IOPS de un volumen en cualquier momento, independientemente de si el disco está conectado a una instancia en ejecución o no.
El nuevo nivel de IOPS que especifiques debe cumplir los valores admitidos para los volúmenes de Hyperdisk Balanced o Hyperdisk Extreme, respectivamente.
Para actualizar el nivel de IOPS aprovisionadas de un volumen de hiperdisco, debes identificar el nombre del disco persistente que respalda tus recursos PersistentVolumeClaim y PersistentVolume:
Ve al explorador de objetos de la Trusted Cloud consola.
Busca la entrada de tu objeto PersistentVolumeClaim.
Haz clic en el enlace Volumen .
Abre la pestaña YAML del PersistentVolume asociado. Busca el valor de CSI
volumeHandle
en esta pestaña.Fíjate en el último elemento de este identificador (debe tener un valor como "
pvc-XXXXX
"). Este es el nombre de tu PersistentVolumeClaim. También debes anotar el proyecto y la zona.
Monitorizar el rendimiento o las IOPS de un volumen de Hyperdisk
Para monitorizar el rendimiento aprovisionado de tu volumen de Hyperdisk, consulta la sección Analizar las IOPS y el rendimiento aprovisionados de la documentación de Compute Engine.
Solución de problemas
En esta sección se proporcionan instrucciones para solucionar problemas con volúmenes de Hyperdisk en GKE.
No se puede cambiar el rendimiento ni la capacidad: la proporción está fuera del intervalo
Se produce el siguiente error cuando intenta cambiar el nivel de rendimiento o la capacidad aprovisionados, pero el nivel de rendimiento o la capacidad que ha elegido están fuera del intervalo aceptable para el volumen:
Requested provisioned throughput cannot be higher than <value>.
Requested provisioned throughput cannot be lower than <value>.
Requested provisioned throughput is too high for the requested disk size.
Requested provisioned throughput is too low for the requested disk size.
Requested disk size is too high for current provisioned throughput.
El rendimiento aprovisionado para los volúmenes de Hyperdisk Throughput debe cumplir los siguientes requisitos:
- Al menos 10 MiB/s por TiB de capacidad y no más de 90 MiB/s por TiB de capacidad.
- Un máximo de 600 MiB/s por volumen.
Para solucionar este problema, corrige el rendimiento o la capacidad solicitados para que estén dentro del intervalo permitido y vuelve a emitir el comando.
No se puede cambiar el rendimiento: se ha limitado la frecuencia
Se produce el siguiente error cuando intentas cambiar el nivel de rendimiento aprovisionado, pero ya se ha cambiado en las últimas 4 horas:
Cannot update provisioned throughput due to being rate limited.
Cannot update provisioned iops due to being rate limited.
El rendimiento aprovisionado de los volúmenes de Hyperdisk Throughput e IOPS se puede actualizar una vez cada 4 horas. Para resolver este problema, espera a que termine el tiempo de espera del volumen y vuelve a emitir el comando.
Siguientes pasos
- Consulta cómo migrar volúmenes de Persistent Disk a Hyperdisk.
- Consulta cómo usar la ampliación de volumen.
- Consulta cómo usar las capturas de volumen.
- Consulta más información sobre el controlador en GitHub.