Configuración de Block Storage for Classic
IBM Cloud Block Storage for Classic es un almacenamiento iSCSI persistente y de alto rendimiento que puede añadir a las apps mediante volúmenes persistentes (PV) de Kubernetes. Puede elegir los niveles de almacenamiento predefinidos con tamaños de GB e IOPS que cumplan los requisitos de sus cargas de trabajo. Para averiguar si IBM Cloud Block Storage for Classic es la opción de almacenamiento correcta para usted, consulte Elección de una solución de almacenamiento.
Tenga en cuenta las siguientes consideraciones cuando use un plugin de IBM Cloud Block Storage for Classic.
El plugin de IBM Cloud Block Storage for Classic solo está disponible para los clústeres de IBM Cloud Kubernetes Service estándares suministrados en la infraestructura clásica. Si tiene un clúster de VPC, consulte Configuración de Block Storage for Classic.
Si el clúster no puede acceder a la red pública, como un clúster privado detrás de un cortafuegos o un clúster con solo el punto final de servicio de nube privado habilitado, asegúrese de que ha instalado el plugin de IBM Cloud Block Storage for Classic versión 1.3.0 o posterior para conectarse a la instancia de Block Storage for Classic a través de la red privada.
Block Storage for Classic instancias son específicas de una región multizona de un solo campus. Si tiene un clúster multizona, tenga en cuenta las opciones de almacenamiento persistente multizona.
Infraestructura clásica
Los pasos de esta página se aplican únicamente a clústeres clásicos. En los clústeres VPC, el complemento de clúster de VPC ( Block Storage for VPC ) está instalado de forma predeterminada. Para obtener más información, consulte Configuración de Block Storage for VPC.
Inicio rápido para IBM Cloud Block Storage for Classic
Block Storage for Classic En esta guía de inicio rápido, creas un volumen de 24Gi de nivel plata en tu clúster creando un PVC para aprovisionar dinámicamente el volumen. A continuación, se crea un despliegue de app que monta la PVC.
¿Es la primera vez que utiliza Block Storage for Classic en el clúster? Vuelva aquí después de instalar el plugin de Block Storage for Classic.
-
Guarde la siguiente configuración de reclamación de volumen persistente (PVC) en un archivo denominado
pvc.yaml
.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: block-storage-pvc labels: billingType: "hourly" region: us-east zone: wdc07 spec: accessModes: - ReadWriteOnce resources: requests: storage: 45Gi storageClassName: ibmc-block-silver
-
Aplique la configuración al clúster para crear la PVC.
kubectl apply -f pvc.yaml
-
Espere hasta que la PVC esté en estado
Bound
. Puede comprobar el estado ejecutando el mandato siguiente.kubectl get pvc
-
Una vez que se haya
Bound
la PVC, cree un despliegue de aplicaciones que utilice la PVC. Guarde la siguiente configuración de despliegue en un archivo denominadodeployment.yaml
.apiVersion: apps/v1 kind: Deployment metadata: name: my-deployment labels: app: my-app spec: selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - image: nginx # Use the nginx image, or your own containerized app image. name: my-container command: ["/bin/sh"] args: ["-c", "while true; do date \"+%Y-%m-%d %H:%M:%S\"; sleep 3600; done"] # This app prints the timestamp, then sleeps. workingDir: /home imagePullPolicy: Always ports: - containerPort: 80 volumeMounts: - name: my-volume mountPath: /mount-path volumes: - name: my-volume persistentVolumeClaim: claimName: block-storage-pvc
-
Cree el despliegue en el clúster.
kubectl apply -f deployment.yaml
-
Espere hasta que el despliegue esté
Ready
. Compruebe el estado del despliegue ejecutando el mandato siguiente.kubectl get deployments
Salida de ejemplo
NAME READY UP-TO-DATE AVAILABLE AGE my-deployment 1/1 1 1 3m19s
-
Cree una lista de los pods y verifique que el pod
my-deployment
esté en ejecución.kubectl get pods
Salida de ejemplo
NAME READY STATUS RESTARTS AGE my-deployment-ccdf87dfb-vzn95 1/1 Running 0 5m27s
-
Obtenga los registros de pod para verificar que se ha escrito la indicación de fecha y hora.
kubectl logs
Salida de ejemplo
2022-01-21 14:18:59
Ha creado correctamente un despliegue que utiliza Block Storage for Classic. Para obtener más información, consulte los siguientes enlaces.
Instalación del plugin de IBM Cloud Block Storage for Classic en el clúster
Instale el plugin de IBM Cloud Block Storage for Classic con un diagrama de Helm para configurar las clases de almacenamiento predefinidas para Block Storage for Classic. Utilice estas clases de almacenamiento para crear una PVC para suministrar Block Storage for Classic para sus apps.
Los clústeres clásicos que ejecutan IBM Cloud Kubernetes Service versión 1.24 o posterior no necesitan instalar el plugin IBM Cloud Block Storage for Classic. El controlador y el plugin se instalan en estos clústeres de forma predeterminada.
Antes de empezar: Inicie una sesión en su cuenta. If applicable, target the appropriate resource group. Establezca el contexto para el clúster.
-
Asegúrese de que el nodo trabajador aplica el parche más reciente para que su versión menor ejecute el nodo trabajador con los valores de seguridad más recientes. La versión de parche también garantiza que se renueva la contraseña de root en el nodo trabajador.
Si no ha aplicado actualizaciones ni ha vuelto a cargar el nodo trabajador en los últimos 90 días, la contraseña raíz del nodo trabajador caduca y la es posible que la instalación del plugin de almacenamiento falle.
-
Obtenga una lista de la versión de parche actual de los nodos trabajadores.
ibmcloud ks worker ls --cluster <cluster_name_or_ID>
Salida de ejemplo
OK ID Public IP Private IP Machine Type State Status Zone Version kube-dal10-crb1a23b456789ac1b20b2nc1e12b345ab-w26 169.xx.xxx.xxx 10.xxx.xx.xxx b3c.4x16.encrypted normal Ready dal10 1.32_1523*
Si el nodo trabajador no aplica la última versión de parche, verá un asterisco (
*
) en la columna Version de la salida de la CLI. -
Revise la información de versión deKubernetes para encontrar los cambios más recientes.
-
Aplique la versión de parche más reciente volviendo a cargar el nodo trabajador. Siga las instrucciones del comando ibmcloud ks worker reload para reprogramar de forma segura cualquier pod en ejecución en su nodo de trabajo antes de recargar su nodo de trabajo. Tenga en cuenta que, durante la recarga, la máquina del nodo trabajador se actualizará con la imagen más reciente y se suprimirán los datos si no se han almacenado fuera del nodo trabajador.
-
-
Siga las instrucciones para instalar el cliente Helm versión 3 en la máquina local.
-
Añada el repositorio de diagramas de Helm de IBM Cloud al clúster donde desee utilizar el plugin de IBM Cloud Block Storage for Classic.
Si ha habilitado VRF y puntos finales de servicio en la cuenta de IBM Cloud, puede utilizar el repositorio de Helm de IBM Cloud privado para mantener el tráfico de extracción de imágenes en la red privada. Si no puede habilitar los puntos finales de VRF o de servicio en su cuenta, utilice el dominio de registro público:
helm repo add iks-charts https://icr.io/helm/iks-charts
.helm repo add iks-charts https://icr.io/helm/iks-charts
-
Actualice el repositorio de Helm para recuperar la última versión de todos los diagramas de Helm de este repositorio.
helm repo update
-
Instale el plugin de IBM Cloud Block Storage for Classic y asigne un nombre a la instalación, por ejemplo:
block-storage-plugin
. Cuando instala el plugin, se añaden a su clúster las clases de almacenamiento de almacenamiento en bloque predefinidas.helm install <name> iks-charts/ibmcloud-block-storage-plugin -n <namespace>
Salida de ejemplo
NAME: <name> LAST DEPLOYED: Wed Apr 18 10:02:55 2018 NAMESPACE: default STATUS: DEPLOYED RESOURCES: ==> v1beta1/DaemonSet NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE ibmcloud-block-storage-driver 0 0 0 0 0 <none> 0s ==> v1beta1/Deployment NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE ibmcloud-block-storage-plugin 1 0 0 0 0s ==> v1/StorageClass NAME PROVISIONER AGE ibmc-block-bronze ibm.io/ibmc-block 0s ibmc-block-custom ibm.io/ibmc-block 0s ibmc-block-gold ibm.io/ibmc-block 0s ibmc-block-retain-bronze ibm.io/ibmc-block 0s ibmc-block-retain-custom ibm.io/ibmc-block 0s ibmc-block-retain-gold ibm.io/ibmc-block 0s ibmc-block-retain-silver ibm.io/ibmc-block 0s ibmc-block-silver ibm.io/ibmc-block 0s ==> v1/ServiceAccount NAME SECRETS AGE ibmcloud-block-storage-plugin 1 0s ==> v1beta1/ClusterRole NAME AGE ibmcloud-block-storage-plugin 0s ==> v1beta1/ClusterRoleBinding NAME AGE ibmcloud-block-storage-plugin 0s NOTES: Thank you for installing: ibmcloud-block-storage-plugin. Your release is named: <name>
-
Verifique la instalación.
kubectl get pod -n <namespace> | grep block
Salida de ejemplo
ibmcloud-block-storage-driver-kh4mt 1/1 Running 0 27d 10.118.98.19 10.118.98.19 ibmcloud-block-storage-plugin-58c5f9dc86-pbl4t 1/1 Running 0 14d 172.21.0.204 10.118.98.19
La instalación es satisfactoria si ve un pod
ibmcloud-block-storage-plugin
y uno o varios podsibmcloud-block-storage-driver
. El número de podsibmcloud-block-storage-driver
corresponde al número de nodos trabajadores de su clúster. Todos los pods deben estar en un estado Running. -
Verifique que las clases de almacenamiento para Block Storage for Classic se han añadido al clúster.
kubectl get sc | grep block
Salida de ejemplo
ibmc-block-bronze ibm.io/ibmc-block Delete Immediate true 148m ibmc-block-custom ibm.io/ibmc-block Delete Immediate true 148m ibmc-block-gold ibm.io/ibmc-block Delete Immediate true 148m ibmc-block-retain-bronze ibm.io/ibmc-block Retain Immediate true 148m ibmc-block-retain-custom ibm.io/ibmc-block Retain Immediate true 148m ibmc-block-retain-gold ibm.io/ibmc-block Retain Immediate true 148m ibmc-block-retain-silver ibm.io/ibmc-block Retain Immediate true 148m ibmc-block-silver ibm.io/ibmc-block Delete Immediate true 148m
-
Repita estos pasos para cada clúster donde desea suministrar almacenamiento en bloques.
Ahora puede seguir para crear una PVC para suministrar almacenamiento en bloque a la app.
Actualización del plugin IBM Cloud Block Storage
Actualice el plugin IBM Cloud Block Storage existente a la última versión.
Antes de empezar: Inicie una sesión en su cuenta. If applicable, target the appropriate resource group. Establezca el contexto para el clúster.
-
Actualice el repositorio de Helm para recuperar la última versión de todos los diagramas de Helm de este repositorio.
helm repo update
-
Opcional: descargue el último diagrama de Helm en la máquina local. A continuación, extraiga el paquete y revise el archivo
release.md
para ver la información de release más reciente.helm pull iks-charts/ibmcloud-block-storage-plugin --untar
-
Busque el nombre de release y el espacio de nombres del diagrama de Helm de almacenamiento en bloque que ha instalado en el clúster.
helm ls -A
Salida de ejemplo
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION block-plugin default 1 2022-01-21 09:02:46.11622 -0500 EST deployed bmcloud-block-storage-plugin-v2.1.5
-
Actualice el plugin IBM Cloud Block Storage a la última versión. Incluya el nombre de release y el espacio de nombres que ha recuperado anteriormente.
helm upgrade RELEASE-NAME iks-charts/ibmcloud-block-storage-plugin -n NAMESPACE
-
Opcional: cuando actualice el plugin, la clase de almacenamiento
default
deja de estar establecida. Si desea establecer como clase de almacenamiento predeterminada la clase de almacenamiento de su elección, ejecute el mandato siguiente.kubectl patch storageclass STORAGECLASS -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
Eliminación del plugin IBM Cloud Block Storage
Si no desea suministrar ni utilizar el plugin IBM Cloud Block Storage Attacher en el clúster, puede desinstalar el diagrama de Helm.
Al eliminar el plugin no elimina los datos, las PVC o los PV. Cuando se elimina el plugin, se eliminan del clúster todos los conjuntos de daemons y pods relacionados. No puede suministrar nuevo almacenamiento en bloque para el clúster ni utilizar PVC y PV existentes de almacenamiento en bloque después de eliminar el plugin.
Antes de empezar:
- Inicie una sesión en la cuenta. If applicable, target the appropriate resource group. Establezca el contexto para el clúster.
- Compruebe que no haya PVC ni PV en el clúster que utilicen almacenamiento en bloque.
Para eliminar el plugin:
-
Busque el nombre de release y el espacio de nombres del diagrama de Helm de almacenamiento en bloque que ha instalado en el clúster.
helm ls -A
Salida de ejemplo
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION block-plugin default 1 2022-01-21 09:02:46.11622 -0500 EST deployed ibmcloud-block-storage-plugin-v2.1.5
-
Suprima el plugin IBM Cloud Block Storage.
helm uninstall NAME -n kube-system
-
Verifique que se hayan eliminado los pods de almacenamiento en bloque.
kubectl get pods -n kube-system | grep block
La eliminación de los pods es satisfactoria si dejan de aparecer en la salida de la CLI.
-
Verifique que se hayan eliminado las clases de almacenamiento en bloque. La eliminación de las clases de almacenamiento es satisfactoria si dejan de aparecer en la salida de la CLI.
kubectl get sc | grep block
Cómo decidir la configuración del almacenamiento en bloque
IBM Cloud Kubernetes Service proporciona clases de almacenamiento predefinidas para el almacenamiento en bloque que puede utilizar para suministrar almacenamiento en bloque con una configuración específica.
Cada clase de almacenamiento especifica el tipo de almacenamiento en bloque que suministra, incluidos tamaño disponible, IOPS, sistema de archivos y política de retención.
Asegúrese de elegir la configuración de almacenamiento cuidadosamente para tener suficiente capacidad para almacenar los datos. Después de suministrar un tipo específico de almacenamiento utilizando una clase de almacenamiento, no puede cambiar el tipo ni la política de retención del dispositivo de almacenamiento. No obstante, puede cambiar el tamaño y las IOPS si desea aumentar el rendimiento y la capacidad de almacenamiento. Para cambiar el tipo y la política de retención de su almacenamiento, debe crear una nueva instancia de almacenamiento y copiar los datos de la antigua instancia de almacenamiento a la nueva.
-
Obtenga una lista de las clases de almacenamiento disponibles en IBM Cloud® Kubernetes Service.
kubectl get sc | grep block
Salida de ejemplo
ibmc-block-bronze ibm.io/ibmc-block Delete Immediate true 148m ibmc-block-custom ibm.io/ibmc-block Delete Immediate true 148m ibmc-block-gold ibm.io/ibmc-block Delete Immediate true 148m ibmc-block-retain-bronze ibm.io/ibmc-block Retain Immediate true 148m ibmc-block-retain-custom ibm.io/ibmc-block Retain Immediate true 148m ibmc-block-retain-gold ibm.io/ibmc-block Retain Immediate true 148m ibmc-block-retain-silver ibm.io/ibmc-block Retain Immediate true 148m ibmc-block-silver ibm.io/ibmc-block Delete Immediate true 148m
-
Revise la configuración de una clase de almacenamiento.
kubectl describe storageclass STORAGECLASS
Para obtener más información sobre cada clase de almacenamiento, consulte la referencia de clases de almacenamiento. Si no encuentra lo que busca, considere la posibilidad de crear su propia clase de almacenamiento personalizada. Para empezar, compruebe los ejemplos de clase de almacenamiento personalizada.
-
Elija el tipo de almacenamiento en bloque que desea suministrar.
- Clases de almacenamiento de bronce, plata y oro: estas clases de almacenamiento suministran almacenamiento resistente. Con almacenamiento Endurance, puede elegir el tamaño del almacenamiento en gigabytes según los niveles de IOPS predefinidos.
- Clase de almacenamiento personalizada: esta clase de almacenamiento suministra almacenamiento de rendimiento. Con el almacenamiento de rendimiento, tiene más control sobre el tamaño del almacenamiento y de IOPS.
-
Elija el tamaño e IOPS para el almacenamiento en bloque. El tamaño y el número de IOPS definen el número total de IOPS (operaciones de entrada/salida por segundo), lo que sirve como indicador de la rapidez del almacenamiento. Cuantas más IOPS tenga el almacenamiento, más rápido se procesarán las operaciones de entrada y salida.
-
Clases de almacenamiento de bronce, plata y oro: estas clases de almacenamiento se suministran con un número fijo de IOPS por gigabytes y se suministran en discos duros SSD. El número total de IOPS depende del tamaño del almacenamiento que elija. Puede seleccionar cualquier número entero de gigabytes comprendido dentro del rango de tamaño permitido, como por ejemplo 20 Gi, 256 Gi o 11854 Gi. Para determinar el número total de IOPS, debe multiplicar IOPS por el tamaño seleccionado. Por ejemplo, si selecciona un tamaño de almacenamiento en bloque de 1000 Gi en la clase de almacenamiento de plata que se suministra con 4 IOPS por GB, el almacenamiento tendrá un total de 4000 IOPS.
Tabla de IOPS y rangos de tamaño de clase de almacenamiento por gigabyte Clase de almacenamiento IOPS por gigabyte Rango de tamaño en gigabytes Bronce 2 IOPS/GB 20-12000 Gi Plata 4 IOPS/GB 20-12000 Gi Oro 10 IOPS/GB 20-4000 Gi -
Clase de almacenamiento personalizada: cuando elige esta clase de almacenamiento, tiene más control sobre el tamaño y el número de IOPS que desea. Para el tamaño, puede seleccionar cualquier número entero de gigabytes dentro del rango de tamaño permitido. El tamaño que elija determina el rango de IOPS que tendrá a su disponibilidad. Puede elegir un valor de IOPS que sea múltiplo de 100 dentro del rango especificado. Las IOPS que elige son estáticas y no se escalan con el tamaño del almacenamiento. Por ejemplo, si elige 40 Gi con 100 IOPS, el número total de IOPS seguirá siendo 100. La proporción entre IOPS y gigabytes también determina el tipo de disco duro que se suministra. Por ejemplo, si utiliza 500Gi en 100 IOPS, la proporción de IOPS por gigabyte es de 0,2. Si la proporción es menor o igual a 0,3, el almacenamiento se suministra en discos duros SATA. Si la proporción es mayor que 0,3, el almacenamiento se suministran en los discos duros SSD.
Table class size ranges and IOPS Rango de tamaño en gigabytes Rango de IOPS en múltiplos de 100 20-39 Gi 100-1000 IOPS 40-79 Gi 100-2000 IOPS 80-99 Gi 100-4000 IOPS 100-499 Gi 100-6000 IOPS 500-999 Gi 100-10000 IOPS 1000-1999 Gi 100-20000 IOPS 2000-2999 Gi 200-40000 IOPS 3000-3999 Gi 200-48000 IOPS 4000-7999 Gi 300-48000 IOPS 8000-9999 Gi 500-48000 IOPS 10000-12000 Gi 1000-48000 IOPS
-
-
Decida si desea conservar los datos después de que se suprima el clúster o la reclamación de volumen persistente (PVC).
- Si desea conservar los datos, seleccione la clase de almacenamiento
retain
. Cuando se suprime la PVC, únicamente ésta se suprime. El PV, el dispositivo de almacenamiento físico de la cuenta de infraestructura de IBM Cloud y los datos seguirán existiendo. Para reclamar el almacenamiento y volverlo a utilizar en el clúster, debe eliminar el PV y seguir los pasos de utilización de almacenamiento en bloque existente. - Si desea que el PV, los datos y el dispositivo físico de almacenamiento en bloques se supriman cuando suprima la PVC, elija una clase de almacenamiento sin la opción
retain
.
- Si desea conservar los datos, seleccione la clase de almacenamiento
-
Decida si desea que se le facture por horas o por meses. El valor predeterminado es la facturación por horas.
Configuración del cifrado para Block Storage for Classic
Puede configurar el cifrado para Block Storage for Classic utilizando IBM Key Protect.
En el ejemplo siguiente se explica cómo crear un ID de servicio con los roles de acceso necesarios para Key Protect y para el clúster. Las credenciales de este ID de servicio se utilizan para habilitar el cifrado para los volúmenes de Block Storage for Classic.
Puede habilitar el cifrado creando un secreto de Kubernetes que utilice la clave de API personal, siempre que tenga el rol de acceso al servicio de Escritor para la instancia de Key Protect, así como el rol de acceso de la plataforma Visor y el rol de acceso de servicio Escritor para el clúster.
-
Asegúrese de que ha asignado el rol de acceso a la plataforma Editor y el rol de acceso al servicio Escritor para Key Protect para que pueda crear su propia clave raíz que utiliza para cifrar la instancia de Block Storage for Classic. Puede revisar sus funciones de acceso a IAM en la consola de IAM. Para obtener más información sobre roles de IAM, consulte Acceso de IAM.
-
Si no tiene ninguna instancia de Key Protect, suministre una.
-
Cree una clave raíz. De forma predeterminada, la clave raíz se crea sin fecha de caducidad.
-
Cree un ID de servicio de IAM. Sustituya
<service_ID_name>
por el nombre que desea asignar a su ID de servicio. Este ID de servicio se utiliza para acceder a la instancia de Key Protect desde el volumen de Block Storage for Classic.ibmcloud iam service-id-create <service_ID_name>
Salida de ejemplo
OK Service ID test-id is created successfully ID ServiceId-a1a11111-bb11-1111-a11b-1111111a11ba Name test-id Description CRN crn:v1:bluemix:public:iam-identity::a/1a1111aa2b11111aaa1a1111aa2aa111::serviceid:ServiceId-a1a11111-bb11-1111-a11b-1111111a11bb Version 1-bb11aa11a0aa1a11a011a1aaaa11a1bb Locked false
-
Cree una clave de API para el ID de servicio. Sustituya
<api-key-name>
por un nombre para la clave de API y sustituya<service_ID_name>
por el nombre del ID de servicio que ha creado. Asegúrese de guardar la clave de API, ya que no se puede recuperar más tarde. Esta clave de API se almacena en un secreto de Kubernetes en el clúster en un paso posterior.ibmcloud iam service-api-key-create <api_key_name> <service_ID_name>
-
Recupera una lista de servicios habilitados por IAM en la cuenta y anote el nombre de la instancia de Key Protect que ha creado.
ibmcloud resource service-instances
-
Recupere el GUID de la instancia de Key Protect. El ID se utiliza para crear una política de servicio de IAM para el ID de servicio.
ibmcloud resource service-instance "<instance_name>" | grep GUID
-
Cree una política de servicio de IAM para otorgar su acceso de ID de servicio a su instancia de Key Protect. El mandato siguiente otorga el acceso de
Reader
de ID de servicio a la instancia de Key Protect. El rol de acceso de Lector es el rol de acceso al servicio mínimo que el ID de servicio debe tener para recuperar las claves de Key Protect. Para obtener más información, consulte Gestión de acceso de usuario para Key Protect.ibmcloud iam service-policy-create <service_ID_name> --roles Reader --service-name kms --service-instance <service_instance_GUID>
-
Cree otra política de acceso de servicio de IAM para dar acceso de ID de servicio al clúster. El siguiente mandato otorga el rol de acceso a la plataforma Visor y el rol de acceso al servicio Escritor al ID de servicio para el clúster. Puede recuperar el ID de clúster ejecutando
ibmcloud ks cluster get <cluster_name>
.ibmcloud iam service-policy-create <service_ID_name> --roles Writer,Viewer --service-name containers-kubernetes --service-instance <cluster_ID>
-
Si ya tiene instalado el diagrama de Helm
ibmcloud-block-storage-plugin
, debe eliminar el diagrama de Helm e instalar una nueva versión.
Si ha instalado el plugin sin utilizar Helm, debe eliminar manualmente el despliegue del plugin de almacenamiento en bloque y todos los recursos asociados antes de instalar una nueva versión.
helm uninstall <name> <namespace>
- Instale el diagrama de Helm
ibmcloud-block-storage-plugin
.
helm install <name> iks-charts/ibmcloud-block-storage-plugin
- Cree un espacio de nombres
ibm-block-secrets
.
kubectl create ns ibm-block-secrets
- Cree un enlace de rol en el espacio de nombres
ibm-block-secrets
para el plugin de almacenamiento en bloque.
kubectl create rolebinding ibmcloud-block-storage-plugin-byok --clusterrole=ibmcloud-block-storage-plugin-byok --serviceaccount=kube-system:ibmcloud-block-storage-plugin --group system:nodes --namespace=ibm-block-secrets
-
Cree un secreto de Kubernetes denominado
secret.yaml
y que incluya las credenciales para acceder a la clave raíz en la instancia de servicio de Key Protect. -
Cree un archivo de configuración para el secreto.
apiVersion: v1 kind: Secret metadata: labels: kmsConfig: kpc-secretLabel name: <secret_name> # Enter a name for your secret. Example: my_secret namespace: <namespace> # Enter the name of the namespace where you want to create the secret. The secret must be in same namespace where your app is deployed. Example: default stringData: config: |- { "api_key":"<service_id_api_key>", # Enter the API key for the service ID that you created. Example: "AA1aAAaA1a21AAaA1aAAaAa-AA-1AAaaA1aA1aAaaaAA" "iam_endpoint":"https://iam.cloud.ibm.com", "key_protect_endpoint":"https://<region>.kms.cloud.ibm.com", # Example: "https://us-east.kms.cloud.ibm.com" "root_key_crn":"<rook_key_crn>", # Example: "crn:v1:bluemix:public:kms:<region>:a/1ab011ab2b11111aaa1a1111aa1aa111:11aa111a-1111-11a1-a111-a11a111aa111:key:11a11111-1a1a-111a-111a-11111a1a1aa1", "version":"" } type: ibm.io/kms-config
stringData.config.key_protect_endpoint
- Especifique el punto final regional de la instancia de Key Protect. Para ver una lista de puntos finales de Key Protect, consulte Regiones y puntos finales.
stringData.config.root_key_crn
- Especifique el CRN de la clave raíz que ha creado. Para recuperar el CRN de clave raíz, siga estos pasos.
- Vaya a la Lista de recursos en la consola de IBM Cloud.
- Pulse Servicios y, a continuación, pulse la instancia de Key Protect.
- Busque la clave raíz en el Menú Acciones y, a continuación, pulse Ver CRN.
- Pulse el botón Copiar para copiar el CRN.
-
Cree el secreto en el clúster.
kubectl apply -f secret.yaml
-
Verifique que se ha creado el secreto.
kubectl get secrets
-
Elija entre las siguientes opciones para crear una instancia de cifrado de datos ( Block Storage for Classic ) que cifre los datos con su clave raíz.
- Cree su propia clase de almacenamiento que haga referencia al secreto Key Protect.
- Defina el secreto en un PVC y utilice una de las clases de almacenamiento proporcionadas.
Cifrar datos de volumen utilizando su propia clase de almacenamiento
Puede implementar aplicaciones que utilicen volúmenes cifrados creando primero su propia clase de almacenamiento.
Los siguientes pasos explican cómo crear una clase de almacenamiento cifrada personalizada que puede utilizar para crear varias instancias de almacenamiento en bloque cifradas con la misma configuración. Si desea crear un PVC cifrado utilizando una de las clases de almacenamiento proporcionado por IBM, puede hacerlo haciendo referencia a las credenciales Key Protect directamente en el PVC.
-
Cree su propia clase de almacenamiento que aprovisione una instancia de almacenamiento en bloque cifrada utilizando como base una de las clases de almacenamiento proporcionadas por IBM. Puede recuperar los detalles de una clase de almacenamiento ejecutando
kubectl get sc <storageclass_name> -o yaml
. El siguiente ejemplo se basa en la clase de almacenamientoibmc-block-retain-bronze
.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: <name> # Enter the name of the storage class. Example: my_custom_storageclass parameters: billingType: hourly classVersion: "2" fsType: ext4 iopsPerGB: "2" sizeRange: '[20-12000]Gi' type: Endurance encrypted: "true" # Enter "true" to enable encryption. encryptionKeySecret: <secret_name> # # #nter the name of the secret that you created earlier.Example: my_secret encryptionKeyNamespace: <namespace> # # #nter the namespace where you created your secret. Example: default provisioner: ibm.io/ibmc-block reclaimPolicy: Delete volumeBindingMode: Immediate
-
Cree una clase de almacenamiento en el clúster.
kubectl apply -f storageclass.yaml
-
Verifique el cifrado de los volúmenes de Block Storage for Classic.
Cree una PVC que haga referencia a su secreto de Block Storage for Classic
Puede suministrar Block Storage for Classic cifrado creando una PVC que especifique el secreto de Kubernetes que contiene las credenciales de Key Protect.
En los pasos siguientes se muestra cómo puede hacer referencia a las credenciales de Key Protect en la PVC para crear una instancia de Block Storage for Classic cifrada. Para crear varios volúmenes cifrados sin especificar las credenciales de Key Protect en cada PVC, puede crear una clase de almacenamiento cifrada personalizada.
-
Revise las clases de almacenamiento de Block Storage for Classic para determinar qué clase de almacenamiento se ajusta mejor a los requisitos de su app. Si las clases de almacenamiento proporcionadas no cumplen los requisitos de la aplicación, puede crear su propia clase de almacenamiento personalizada.
-
Cree un archivo de configuración de PVC con el nombre
pvc.yaml
y que haga referencia al secreto de Kubernetes en el que ha almacenado las credenciales de servicio de Key Protect. Para crear este secreto, consulte Configuración del cifrado para Block Storage for Classic.kind: PersistentVolumeClaim apiVersion: v1 metadata: name: <pvc_name> # Enter a name for your PVC. annotations: volume.beta.kubernetes.io/storage-class: "<storage_class>" # Enter a storage class. To see a list of storageclasses run `kubectl get storageclasses`. labels: encrypted: "true" encryptionKeyNamespace: <namespace> # Enter the namespace where your secret was created. encryptionKeySecret: <secret_name> # Enter the name of the secret you created. spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi
-
Cree la PVC en el clúster.
kubectl apply -f pvc.yaml
-
Compruebe el estado de la PVC.
kubectl get pvc
-
Espere a que la PVC se enlace y, a continuación, cree un despliegue que utilice la PVC.
-
Verifique el cifrado de los volúmenes de Block Storage for Classic.
Verificación del cifrado de los volúmenes de Block Storage for Classic
Puede verificar el cifrado de los volúmenes comprobando la vía de acceso de montaje del volumen.
-
Inicie una sesión en el pod de app. Sustituya
<pod_name>
por el nombre del pod que monta el volumen de Block Storage for Classic cifrado.kubectl exec <pod_name> -it bash
-
Liste el sistema de archivos del pod.
df -h
-
Revise la vía de acceso del sistema de archivos para el volumen de Block Storage for Classic cifrado.
-
Los volúmenes cifrados tienen una estructura de vía de acceso de
/dev/mapper/<pvc-ID_encrypted>
. En este ejemplo, el volumen cifrado se monta en la vía de acceso del archivo/test
en el pod.Filesystem Size Used Avail Use% Mounted on overlay 98G 8.2G 85G 9% / tmpfs 64M 0 64M 0% /dev tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup /dev/mapper/pvc-a011a111-1111-1111-111a-aaa1a1111a11_encrypted 20G 45M 20G 1% /test
-
Los volúmenes no cifrados tienen una estructura de vía de acceso de
dev/mapper/<random_string>
.Filesystem Size Used Avail Use% Mounted on overlay 98G 16G 78G 17% / tmpfs 64M 0 64M 0% /dev tmpfs 7.9G 0 7.9G 0% /sys/fs/cgroup /dev/mapper/3600a09803830476e733f4e477370716e 24G 45M 24G 1% /test
-
Eliminar el secreto de Kubernetes no revoca el acceso a los datos de volumen. Si ha creado un despliegue solo de pod, debe suprimir el pod. Si ha creado un despliegue, debe suprimir el despliegue.
Adición de almacenamiento en bloques a apps
Cree una solicitud de volumen persistente (PVC) para aprovisionar dinámicamente el almacenamiento en bloque para su clúster. El suministro dinámico crea automáticamente el volumen persistente (PV) adecuado y solicita el dispositivo de almacenamiento real en la cuenta de infraestructura de IBM Cloud.
El almacenamiento en bloque se suministra con la modalidad de acceso ReadWriteOnce
. Solo puede montarlo en un pod en un nodo trabajador en el clúster al mismo tiempo.
Antes de empezar:
- Si tiene un cortafuegos, permita el acceso de salida para los rangos de IP de la infraestructura de IBM Cloud de las zonas en las que están en los clústeres, de modo que pueda crear las PVC.
- Instale el plugin de almacenamiento en bloque de IBM Cloud.
- Decida si desea utilizar una clase de almacenamiento predefinida o crear una clase de almacenamiento personalizada.
¿Desea desplegar almacenamiento en bloque en un conjunto con estado? Para obtener más información, consulte Uso del almacenamiento por bloques en un conjunto con estado.
Para añadir almacenamiento en bloque:
-
Cree un archivo de configuración para definir su reclamación de volumen persistente (PVC) y guarde la configuración como archivo
.yaml
.-
Ejemplo de clases de almacenamiento bronce, plata y oro: El siguiente archivo
.yaml
crea una reclamación denominadablock-storage-pvc
de la clase de almacenamiento"ibmc-block-silver"
, facturada por hora, con un tamaño de gigabyte de24Gi
.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: block-storage-pvc labels: billingType: "hourly" region: us-south zone: dal13 spec: accessModes: - ReadWriteOnce resources: requests: storage: 24Gi storageClassName: ibmc-block-silver
-
Ejemplo para utilizar su propia clase de almacenamiento: El siguiente archivo
.yaml
crea una reclamación denominadablock-storage-pvc
de la clase de almacenamientoibmc-block-retain-custom
, facturada por hora, con un tamaño de gigabyte de45Gi
y un valor de IOPS de"300"
.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: block-storage-pvc labels: billingType: "hourly" region: us-south zone: dal13 spec: accessModes: - ReadWriteOnce resources: requests: storage: 45Gi iops: "300" storageClassName: ibmc-block-retain-custom
name
- Escriba el nombre de la PVC.
billingType
- En la sección de etiquetas de metadatos, especifique la frecuencia con la que desea que se calcule la factura de almacenamiento, los valores son "monthly" u "hourly". El valor predeterminado es "hourly".
region
- En la sección de etiquetas de metadatos, especifique la región en la que desea suministrar el almacenamiento en bloque. Si especifica la región, también debe especificar una zona. Si no especifica una región o no se encuentra la región especificada, el almacenamiento se crea en la misma región que el clúster. Esta opción solo recibe soporte con el plugin IBM Cloud Block Storage versión 1.0.1 o superior. Para las versiones anteriores del plugin, si tiene un clúster multizona, la zona en la que se suministra el almacenamiento se selecciona en una iteración cíclica para equilibrar las solicitudes de volumen de forma uniforme entre todas las zonas. Para especificar la zona para el almacenamiento, puede crear en primer lugar una clase de almacenamiento personalizada. A continuación, cree una PVC con la clase de almacenamiento personalizada.
zone
- En la sección de etiquetas de metadatos, especifique la zona en la que desea suministrar el almacenamiento en bloque. Si especifica la zona, también debe especificar una región. Si no especifica una zona o la zona especificada no se encuentra en un clúster multizona, la zona se selecciona mediante iteración cíclica. Esta opción solo recibe soporte con el plugin IBM Cloud Block Storage versión 1.0.1 o superior. Para las versiones anteriores del plugin, si tiene un clúster multizona, la zona en la que se suministra el almacenamiento se selecciona en una iteración cíclica para equilibrar las solicitudes de volumen de forma uniforme entre todas las zonas. Para especificar la zona para el almacenamiento, puede crear en primer lugar una clase de almacenamiento personalizada. A continuación, cree una PVC con la clase de almacenamiento personalizada.
storage
- En la sección de solicitudes de recursos de especificación, especifique el tamaño del almacenamiento en bloque, en gigabytes (Gi). Una vez que se ha suministrado el almacenamiento, no puede cambiar el tamaño del almacenamiento en bloque. Asegúrese de especificar un tamaño que coincida con la cantidad de datos que desea almacenar.
iops
- Esta opción solo está disponible para sus propias clases de almacenamiento personalizadas (
ibmc-block-custom / ibmc-block-retain-custom
). En la sección de solicitudes de recursos de especificaciones, especifique el total de IOPS para el almacenamiento, seleccionando un múltiplo de 100 dentro del rango permitido. Si elige un IOPS distinto del que aparece en la lista, el IOPS se redondea. storageClassName
- En la sección de especificación, especifique el nombre de la clase de almacenamiento que desea utilizar para suministrar almacenamiento en bloque. Puede optar por utilizar una de las clases de almacenamiento proporcionadas por IBM o crear su propia clase de almacenamiento. Si no especifica ninguna clase de almacenamiento, el PV se crea con la clase de almacenamiento predeterminada
ibmc-file-bronze
.
Si desea utilizar una clase de almacenamiento personalizada, cree su PVC con el nombre de clase de almacenamiento correspondiente, unas IOPS válidas y un tamaño.
-
-
Cree la PVC.
kubectl apply -f block-storage.yaml
-
Verifique que la PVC se ha creado y se ha vinculado al PV. Este proceso puede tardar unos minutos.
kubectl get pvc
Salida de ejemplo
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE block-storage-pvc Bound pvc-1aa1aaaa-11a1-48d1-ab11-11b11111f3bc 45Gi RWO ibmc-block-silver 150m
-
Para montar el PV en el despliegue, cree un archivo
.yaml
de configuración y especifique la PVC que enlaza el PV.apiVersion: apps/v1 kind: Deployment metadata: name: <deployment_name> labels: app: <deployment_label> spec: selector: matchLabels: app: <app_name> template: metadata: labels: app: <app_name> spec: containers: - image: <image_name> name: <container_name> volumeMounts: - name: <volume_name> mountPath: /<file_path> volumes: - name: <volume_name> persistentVolumeClaim: claimName: <pvc_name>
app
- En los metadatos, especifique una etiqueta para el despliegue.
matchLabels.app
ylabels.app
- En el selector de especificación y en los metadatos de la plantilla, especifique una etiqueta para la app.
image
- El nombre de la imagen de contenedor que desea utilizar. Para ver una lista de todas las imágenes disponibles en su cuenta de IBM Cloud Container Registry, ejecute
ibmcloud cr image-list
. name
- El nombre del contenedor que desea desplegar en el clúster.
mountPath
- En la sección de montajes de volúmenes de contenedor, especifique la vía de acceso absoluta del directorio en el que está montado el volumen dentro del contenedor. Los datos grabados en la vía de acceso de montaje se almacenan en el directorio raíz en la instancia física de almacenamiento en bloque. Si desea compartir un volumen entre diferentes aplicaciones, puede especificar subrutas de volumen para cada una de sus aplicaciones.
name
- En la sección de montajes de volúmenes de contenedor, especifique el nombre del volumen que se va a montar en el pod.
name
- En la sección de volúmenes, especifique el nombre del volumen que se va a montar en el pod. Normalmente, este nombre es el mismo que
volumeMounts/name
. claimName
- En la sección de reclamación de volúmenes persistentes, especifique el nombre de la PVC que enlaza el PV que desea utilizar.
-
Cree el despliegue.
kubectl apply -f <local_yaml_path>
-
Verifique que el PV se ha montado correctamente.
kubectl describe deployment <deployment_name>
El punto de montaje se muestra en el campo Volume Mounts y el volumen se muestra en el campo Volumes.
Volume Mounts: /var/run/secrets/kubernetes.io/serviceaccount from default-token-tqp61 (ro) /volumemount from myvol (rw) ... Volumes: myvol: Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace) ClaimName: block-storage-pvc ReadOnly: false
Utilización de almacenamiento en bloque existente en el clúster
Si tiene un dispositivo de almacenamiento físico existente que desea utilizar en su clúster, puede crear manualmente el PV y el PVC para aprovisionar estáticamente el almacenamiento.
Antes de empezar a montar el almacenamiento existente en una app, debe recuperar toda la información necesaria para su PV.
Recuperación de la información del almacenamiento en bloque existente
-
Recupere o genere una clave de API para su cuenta de infraestructura de IBM Cloud.
- Inicie sesión en el portal de infraestructura IBM Cloud.
- Seleccione Cuenta, Usuarios y, a continuación, Lista de usuarios.
- Encuentre su ID de usuario.
- En la columna de Clave de API, pulse Generar para generar una clave de API o Ver para ver su clave de API existente.
-
Recupere el nombre de usuario de API de su cuenta de infraestructura de IBM Cloud.
- Desde el menú Lista de usuarios, seleccione su ID de usuario.
- En la sección Información de acceso de API, busque su Nombre de usuario de API.
-
Inicie una sesión en el plugin de CLI de la infraestructura de IBM Cloud.
ibmcloud sl init
-
Elija autenticarse utilizando el nombre de usuario y la clave de API de su cuenta de infraestructura de IBM Cloud.
-
Especifique el nombre de usuario y la clave de API que recuperó en los pasos anteriores.
-
Obtenga una lista de los dispositivos de almacenamiento en bloque disponibles.
ibmcloud sl block volume-list
Salida de ejemplo
id username datacenter storage_type capacity_gb bytes_used lunId 11111111 IBM01AAA1111111-1 wdc07 endurance_block_storage 45 - 2
-
Recupere los detalles del volumen. Sustituya
<volume_ID>
por el ID del volumen de almacenamiento en bloque que ha recuperado en el paso 6.ibmcloud sl block volume-detail <volume_ID>
Salida de ejemplo
ID 11111111 User name IBM01AAA1111111-1 Type endurance_block_storage Capacity (GB) 45 LUN Id 2 IOPs 100 Datacenter wdc07 Target IP 10.XXX.XX.XXX # of Active Transactions 0 Replicant Count 0
-
Anote los valores de
ID
,Capacity
,LUN Id
,Datacenter
yTarget IP
del volumen que desea montar en el clúster. Nota: para montar el almacenamiento existente en un clúster, debe tener un nodo trabajador en la misma zona que el almacenamiento. Para verificar la zona del nodo de trabajador, ejecuteibmcloud ks worker ls --cluster <cluster_name_or_ID>
.
Creación de un volumen persistente (PV) y una reclamación de volumen persistente (PVC) correspondiente
-
Opcional: si tiene almacenamiento que ha suministrado con una clase de almacenamiento
retain
, cuando elimina la PVC, el PV y el dispositivo de almacenamiento físico no se eliminan. Para volver a utilizar el almacenamiento en el clúster, primero debe eliminar el PV. Liste los PV existentes y busque el PV que pertenezca a su almacenamiento persistente. El PV está en el estadoreleased
.kubectl get pv
-
Elimine el PV.
kubectl delete pv <pv_name>
-
Verifique que el PV se haya eliminado.
kubectl get pv
-
Cree un archivo de configuración para el PV. Incluya los parámetros que ha recuperado anteriormente.
apiVersion: v1 kind: PersistentVolume metadata: name: "block-storage-pv" # Enter a name for your PV. For example, my-static-pv. labels: failure-domain.beta.kubernetes.io/region: "<region>" # Example us-east. failure-domain.beta.kubernetes.io/zone: "<zone>" # Example: wdc04. See /docs/containers?topic=containers-regions-and-zones#zones-sz spec: capacity: storage: "<storage>" accessModes: - ReadWriteOnce flexVolume: driver: "ibm/ibmc-block" fsType: "<fs_type>" # Enter ext or xfs options: "Lun": "<Lun_ID>" "TargetPortal": "<TargetPortal>" "VolumeID": "<VolumeID>" "volumeName": "block-storage-pv" # Enter the same value as your PV name from metadata.name
name
- Asigne un nombre a su PV. Por ejemplo,
block-storage-pv
. Tenga en cuenta que también debe especificar este valor enspec.FlexVolume.options
comovolumeName
. labels
- Especifique la región y la zona que ha recuperado anteriormente. Debe tener al menos un nodo trabajador en la misma región y zona que el almacenamiento persistente para montar el almacenamiento en el clúster. Para recuperar los detalles
del volumen, ejecute
ibmcloud sl block volume-list
para obtener el ID de volumen y, a continuación, ejecuteibmcloud sl block volume-detail <volume_ID>
para obtener los detalles del volumen. region
- Especifique la región en la que se encuentra el almacenamiento en bloque. Tenga en cuenta que el clúster y el almacenamiento en bloque deben estar en la misma región. Para buscar la ubicación del clúster, ejecute
ibmcloud ks cluster ls
. Para obtener más información sobre las regiones y zonas disponibles, consulte regiones y zonas. Por ejemplo,us-east
. zone
- Especifique la zona en la que se encuentra el volumen de almacenamiento. Para recuperar los detalles del volumen, ejecute
ibmcloud sl block volume-list
para obtener el ID de volumen y, a continuación, ejecuteibmcloud sl block volume-detail <volume_ID>
para obtener los detalles del volumen. Tenga en cuenta que, para conectar el almacenamiento en bloque al clúster, debe tener un nodo de trabajador disponible en la misma zona que el volumen que desea conectar. Para buscar las zonas de los nodos de trabajador, ejecuteibmcloud ks worker ls -c <cluster>
. Por ejemplo,wdc04
. storage
- Especifique el tamaño de almacenamiento del volumen de almacenamiento en bloque existente que desea conectar al clúster. El tamaño de almacenamiento se debe especificar en gigabytes, por ejemplo, 20Gi (20 GB) o 1000Gi (1 TB). Para recuperar
los detalles del volumen, ejecute
ibmcloud sl block volume-list
para obtener el ID de volumen y, a continuación, ejecuteibmcloud sl block volume-detail <volume_ID>
para obtener los detalles del volumen. fsType
- Especifique el tipo de sistema de archivos que está configurado para el almacenamiento en bloques existente. Elija entre
ext4
yxfs
. Si no especifica esta opción, el valor predeterminado de PV esext4
. Cuando se define elfsType
erróneo, se sigue creando el PV, sin embargo, el montaje del PV para el pod fallará. Para recuperar los detalles del volumen, ejecuteibmcloud sl block volume-list
para obtener el ID de volumen y, a continuación, ejecuteibmcloud sl block volume-detail <volume_ID>
para obtener los detalles del volumen. Lun
- Especifique el ID de LUN del volumen de almacenamiento en bloque. Para recuperar los detalles del volumen, ejecute
ibmcloud sl block volume-list
para obtener el ID de volumen y, a continuación, ejecuteibmcloud sl block volume-detail <volume_ID>
para obtener los detalles del volumen. TargetPortal
- Especifique la dirección IP del almacenamiento en bloque. Para recuperar el parámetro
TargetPortal
, ejecuteibmcloud sl block volume-list
para obtener el ID de volumen y, a continuación, ejecuteibmcloud sl block volume-detail <volume_ID>
y anote el valor deTarget IP
de la salida. VolumeId
- Especifique el ID del almacenamiento en bloque. Para recuperar los detalles del volumen, ejecute
ibmcloud sl block volume-list
. volumeName
- Especifique el mismo valor que el nombre de PV. Por ejemplo,
block-storage-pv
.
-
Cree el PV en el clúster.
kubectl apply -f pv.yaml
-
Verifique que se ha creado el PV.
kubectl get pv
-
Cree otro archivo de configuración para crear la PVC. Para que la PVC coincida con el PV que ha creado anteriormente, debe elegir el mismo valor para
storage
yaccessMode
. El campostorage-class
debe ser una serie vacía. Si alguno de estos campos no coincide con el PV, se crea automáticamente un nuevo PV.kind: PersistentVolumeClaim apiVersion: v1 metadata: name: block-storage-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: "20Gi" storageClassName: ""
-
Cree la PVC.
kubectl apply -f static-pvc.yaml
-
Verifique que la PVC se ha creado y se ha enlazado al PV que ha creado con anterioridad. Este proceso puede tardar unos minutos.
kubectl describe pvc static-pvc
Salida de ejemplo
Name: static-pvc Namespace: default StorageClass: Status: Bound
-
Opcional Guarde la siguiente configuración de pod de ejemplo como un archivo denominado
pod.yaml
.
apiVersion: v1
kind: Pod
metadata:
name: block-storage
labels:
app: block-storage
spec:
containers:
- name: block-storage
image: nginx
command: ["/bin/sh"]
args: ["-c", "while true; do date \"+%Y-%m-%d %H:%M:%S\"; sleep 3600; done"]
workingDir: /home
imagePullPolicy: Always
ports:
- containerPort: 80
volumeMounts:
- name: block-storage-pv
mountPath: /home
volumes:
- name: block-storage-pv
persistentVolumeClaim:
claimName: block-storage-pvc
- Cree el pod en el clúster.
kubectl create -f pod.yaml
- Cuando el pod esté en estado
Running
, obtenga los registros.
kubectl logs
Salida de ejemplo
2022-01-21 16:11:00
Ha creado correctamente un PV y lo ha enlazado a una PVC. A continuación, ha desplegado una aplicación que utiliza almacenamiento en bloque. Los usuarios de clúster pueden ahora montar la PVC en sus despliegues y empezar a leer y escribir en el volumen persistente.
Utilización del almacenamiento en bloque en un conjunto con estado
Si tiene una app con estado como, por ejemplo, una base de datos, puede crear conjuntos con estado que utilicen el almacenamiento en bloque para almacenar los datos de la app. Como alternativa, puede utilizar una base de datos como servicio de IBM Cloud y almacenar los datos en la nube.
- ¿Qué debo tener en cuenta al agregar almacenamiento en bloque a un conjunto con estado?
- Para añadir almacenamiento a un conjunto con estado, debe especificar la configuración del almacenamiento en la sección
volumeClaimTemplates
del archivo YAML del conjunto con estado.volumeClaimTemplates
constituye la base para la PVC y puede incluir la clase de almacenamiento y el tamaño o IOPS del almacenamiento en bloque que desea suministrar. Sin embargo, si desea incluir etiquetas envolumeClaimTemplates
, Kubernetes no incluye estas etiquetas al crear la PVC. En su lugar, debe añadir las etiquetas directamente al conjunto con estado.
No puede desplegar dos conjuntos con estado al mismo tiempo. Si intenta crear un conjunto con estado antes de que otro se despliegue por completo, el despliegue de su conjunto con estado puede dar lugar a resultados inesperados.
- ¿Cómo puedo crear mi conjunto con estado en una zona específica?
- En un clúster multizona, puede especificar la zona y la región en las que desea crear el conjunto con estado en la sección
spec.selector.matchLabels
y en la secciónspec.template.metadata.labels
del archivo YAML del conjunto con estado. Como alternativa, puede añadir estas etiquetas a una clase de almacenamiento personalizada y utilizar esta clase de almacenamiento en la secciónvolumeClaimTemplates
de su conjunto con estado. - ¿Puedo retrasar la vinculación de un PV a mi pod con estado hasta que el pod esté listo?
- Sí, puede crear su propia clase de almacenamiento para la PVC que incluye el campo
volumeBindingMode: WaitForFirstConsumer
. - ¿Qué opciones tengo para añadir almacenamiento en bloque a un conjunto con estado?
- Si desea crear automáticamente la PVC al crear el conjunto con estado, utilice el suministro dinámico. También puede optar por realizar un suministro previo de las PVC o utilizar PVC existentes con su conjunto con estado.
Creación de la PVC utilizando el suministro dinámico al crear un conjunto con estado
Utilice esta opción si desea crear automáticamente la PVC al crear el conjunto con estado.
Antes de empezar: Inicie una sesión en su cuenta. If applicable, target the appropriate resource group. Establezca el contexto para el clúster.
Realice los pasos siguientes para verificar que todos los conjuntos con estado existentes en el clúster están totalmente desplegados. Si todavía se está desplegando un conjunto con estado, no puede empezar a crear el conjunto con estado. Debe esperar a que todos los conjuntos con estado del clúster se hayan desplegado por completo para evitar resultados inesperados.
-
Obtenga una lista de los conjuntos con estado existentes en el clúster.
kubectl get statefulset --all-namespaces
Salida de ejemplo
NAME DESIRED CURRENT AGE mystatefulset 3 3 6s
-
Visualice el estado de los pods de cada conjunto con estado para asegurarse de que el despliegue del conjunto con estado haya finalizado.
kubectl describe statefulset <statefulset_name>
Salida de ejemplo
Name: nginx Namespace: default CreationTimestamp: Fri, 05 Oct 2022 13:22:41 -0400 Selector: app=nginx,billingType=hourly,region=us-south,zone=dal10 Labels: app=nginx billingType=hourly region=us-south zone=dal10 Annotations: kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"apps/v1","kind":"StatefulSet","metadata":{"annotations":{},"name":"nginx","namespace":"default"},"spec":{"podManagementPolicy":"Par..." Replicas: 3 desired | 3 total Pods Status: 0 Running / 3 Waiting / 0 Succeeded / 0 Failed Pod Template: Labels: app=nginx billingType=hourly region=us-south zone=dal10 ...
Un conjunto con estado se ha desplegado por completo cuando el número de réplicas que encuentra en la sección Replicas de la salida de CLI es igual al número de pods con el estado Running en la sección Pods Status. Si un conjunto con estado aún no se ha desplegado por completo, espere hasta que el despliegue haya finalizado antes de continuar.
-
Cree un archivo de configuración para el conjunto con estado y el servicio que utiliza para exponer el conjunto con estado. En el ejemplo siguiente se muestra cómo desplegar NGINX como un conjunto con estado con tres réplicas. Para cada réplica, se proporciona un dispositivo de almacenamiento en bloque de 20 gigabytes en función de las especificaciones definidas en la clase de almacenamiento
ibmc-block-retain-bronze
. Todos los dispositivos de almacenamiento se suministran en la zonadal10
. Dado que no se puede acceder al almacenamiento en bloque desde otras zonas, todas las réplicas del conjunto con estado también se despliegan en los nodos de trabajador que se encuentran endal10
.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: nginx spec: serviceName: "nginx" replicas: 3 podManagementPolicy: Parallel selector: matchLabels: app: nginx billingType: "hourly" region: "us-south" # Enter the region where your cluster is located. zone: "dal10" template: metadata: labels: app: nginx billingType: "hourly" region: "us-south" zone: "dal10" spec: containers: - name: nginx image: nginx ports: - containerPort: 80 name: web volumeMounts: - name: myvol mountPath: /usr/share/nginx/html volumeClaimTemplates: - metadata: name: myvol spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi iops: "300" #required only for performance storage storageClassName: ibmc-block-retain-bronze
En el ejemplo siguiente se muestra cómo desplegar NGINX como un conjunto con estado con tres réplicas. El conjunto con estado no especifica la región y la zona en las que se ha creado el almacenamiento en bloque. En su lugar, el conjunto con estado utiliza una regla de antiafinidad para asegurarse de que los pods se distribuyen entre nodos trabajadores y zonas. Al definir
topologykey: failure-domain.beta.kubernetes.io/zone
, el planificador de Kubernetes no puede planificar un pod en un nodo de trabajador si el nodo de trabajador está en la misma zona que un pod que tiene la etiquetaapp: nginx
. Para cada pod de conjunto con estado, se crean dos PVC definidas en la secciónvolumeClaimTemplates
, pero la creación de las instancias de almacenamiento en bloque se retrasa hasta que se planifica un pod de conjunto con estado que utiliza el almacenamiento. Esta configuración se conoce como programación de volumen con reconocimiento de topología.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: ibmc-block-bronze-delayed parameters: billingType: hourly classVersion: "2" fsType: ext4 iopsPerGB: "2" sizeRange: '[20-12000]Gi' type: Endurance provisioner: ibm.io/ibmc-block reclaimPolicy: Delete volumeBindingMode: WaitForFirstConsumer --- 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: serviceName: "nginx" replicas: 3 podManagementPolicy: "Parallel" selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: affinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 100 podAffinityTerm: labelSelector: matchExpressions: - key: app operator: In values: - nginx topologyKey: failure-domain.beta.kubernetes.io/zone containers: - name: nginx image: k8s.gcr.io/nginx-slim:0.8 ports: - containerPort: 80 name: web volumeMounts: - name: myvol1 mountPath: /usr/share/nginx/html - name: myvol2 mountPath: /tmp1 volumeClaimTemplates: - metadata: name: myvol1 spec: accessModes: - ReadWriteOnce # access mode resources: requests: storage: 20Gi storageClassName: ibmc-block-bronze-delayed - metadata: name: myvol2 spec: accessModes: - ReadWriteOnce # access mode resources: requests: storage: 20Gi storageClassName: ibmc-block-bronze-delayed
name
- Especifique un nombre para el conjunto con estado. El nombre que especifique se utilizará para crear el nombre de la PVC con el formato:
<volume_name>-<statefulset_name>-<replica_number>
. serviceName
- Especifique el nombre del servicio que desea utilizar para exponer el conjunto con estado.
replicas
- Especifique el número de réplicas para el conjunto con estado.
podManagementPolicy
- Especifique la política de gestión de pod que desea utilizar para su conjunto con estado.
- OrderedReady: Con esta opción, las réplicas del conjunto con estado se despliegan una después de otra. Por ejemplo, si ha especificado tres réplicas, Kubernetes crea el PVC para la primera réplica, espera hasta que
el PVC esté enlazado, despliegue la réplica del conjunto con estado y monta el PVC en la réplica. Una vez que haya finalizado el despliegue, se despliega la segunda réplica. Para obtener más información sobre esta opción, consulte
OrderedReady
Gestión de Pods - Parallel: Con esta opción, todos los despliegues de las réplicas de conjunto con estado se inician al mismo tiempo. Si la app da soporte al despliegue de réplicas en paralelo, utilice esta opción para ahorrar tiempo de despliegue para las PVC y las réplicas de conjuntos con estado.
- OrderedReady: Con esta opción, las réplicas del conjunto con estado se despliegan una después de otra. Por ejemplo, si ha especificado tres réplicas, Kubernetes crea el PVC para la primera réplica, espera hasta que
el PVC esté enlazado, despliegue la réplica del conjunto con estado y monta el PVC en la réplica. Una vez que haya finalizado el despliegue, se despliega la segunda réplica. Para obtener más información sobre esta opción, consulte
matchLabels
- En la sección de selector de especificación, especifique todas las etiquetas que desee incluir en el conjunto con estado y en la PVC. Kubernetes no reconoce las etiquetas que se incluyen en
volumeClaimTemplates
del conjunto con estado. Ejemplos de etiquetas que quizás desee incluir:- región y zona: si desea que todas las réplicas de conjunto con estado y las PVC se creen en una zona específica, añada ambas etiquetas. También puede especificar la zona y la región en la clase de almacenamiento que utiliza. Si no especifica una zona y región y tiene un clúster multizona, la zona en la que se suministra el almacenamiento se selecciona mediante iteración cíclica para equilibrar las solicitudes de volumen de forma uniforme en todas las zonas.
billingType
: Introduzca el tipo de facturación que desea utilizar para sus PVC. Elija entrehourly
omonthly
. Si no especifica esta etiqueta, todas las PVC se crean con un tipo de facturación por hora.
labels
- En la sección de metadatos de la plantilla de especificación, especifique las mismas etiquetas que ha añadido a la sección
spec.selector.matchLabels
. affinity
- En la sección de especificación de plantilla de especificación, escriba la regla de antiafinidad para asegurarse de que los pods de conjunto con estado se distribuyen entre nodos trabajadores y zonas. El ejemplo muestra una regla de
antiafinidad en la que el pod del conjunto con estado prefiere no estar planificado en un nodo trabajador en el que se ejecuta un pod que tiene la etiqueta
app: nginx
. La clavetopologykey: failure-domain.beta.kubernetes.io/zone
restringe aún más esta regla antiafinidad e impide que el pod se planifique en un nodo trabajador si este está en la misma zona que un pod con la etiquetaapp: nginx
. Mediante esta regla antiafinidad, puede lograr la afinidad entre los nodos trabajadores y las zonas. name
- En la sección de metadatos de plantillas de reclamación de volúmenes de especificación, especifique un nombre para el volumen. Utilice el mismo nombre que ha definido en la sección
spec.containers.volumeMount.name
. El nombre que especifique aquí se utilizará para crear el nombre de la PVC con el siguiente formato:<volume_name>-<statefulset_name>-<replica_number>
. storage
- En la sección de solicitudes de recursos de especificación de plantillas de reclamación de volúmenes de especificación, escriba el tamaño del almacenamiento en bloque en gigabytes (Gi).
iops
- En la sección de solicitudes de recursos de especificación de plantillas de reclamación de volúmenes de especificación, si desea suministrar almacenamiento de rendimiento, especifique el número de IOPS. Si utiliza una clase de almacenamiento de resistencia y especifica un número de IOPS, se pasa por alto el número de IOPS. En su lugar se utiliza el número de IOPS especificado en la clase de almacenamiento.
storageClassName
- En la sección de especificación de plantillas de reclamación de volúmenes de especificación, escriba la clase de almacenamiento que desea utilizar. Para ver una lista de las clases de almacenamiento existentes, ejecute
kubectl get sc | grep block
. Si no especifica una clase de almacenamiento, la PVC se crea con la clase de almacenamiento predeterminada establecida en el clúster. Asegúrese de que la clase de almacenamiento predeterminada utiliza el suministradoribm.io/ibmc-block
para que el conjunto con estado se suministre con almacenamiento en bloque.
-
Cree su conjunto con estado.
kubectl apply -f statefulset.yaml
-
Espere a que se despliegue el conjunto con estado.
kubectl describe statefulset <statefulset_name>
Para ver el estado actual de los PVC, ejecute
kubectl get pvc
. El nombre de su PVC tiene este formato<volume_name>-<statefulset_name>-<replica_number>
.
Aprovisionamiento estático mediante el uso de PVC existentes con un conjunto con estado
Puede realizar un suministro previo de las PVC antes de crear el conjunto con estado o utilizar PVC existentes con su conjunto con estado.
Cuando suministre dinámicamente las PVC al crear el conjunto con estado, el nombre de la PVC se asigna en función de los valores que ha utilizado en el archivo YAML de conjunto con estado. Para que el conjunto con estado utilice las PVC existentes, el nombre de las PVC debe coincidir con el nombre que se crearía automáticamente si se utilizara el suministro dinámico.
Antes de empezar: Inicie una sesión en su cuenta. If applicable, target the appropriate resource group. Establezca el contexto para el clúster.
-
Si desea suministrar la PVC del conjunto con estado antes de crear el conjunto con estado, siga los pasos del 1 al 3 de la sección Adición de almacenamiento en bloque a apps para crear un PVC para cada réplica del conjunto con estado. Cree la PVC con un nombre que respete el siguiente formato:
<volume_name>-<statefulset_name>-<replica_number>
.volume_name
- Utilice el nombre que desee especificar en la sección
spec.volumeClaimTemplates.metadata.name
de su conjunto con estado, como por ejemplonginxvol
. statefulset_name
- Utilice el nombre que desee especificar en la sección
metadata.name
de su conjunto con estado, como por ejemplonginx_statefulset
. replica_number
- Especifique el número de la réplica, empezando por 0.
Por ejemplo, si tiene que crear tres réplicas del conjunto con estado, cree tres PVC con los siguientes nombres:
nginxvol-nginx_statefulset-0
,nginxvol-nginx_statefulset-1
ynginxvol-nginx_statefulset-2
.¿Está buscando crear un PVC y un PV para un dispositivo de almacenamiento existente? Cree la PVC y el PV mediante suministro estático.
-
Siga los pasos de Suministro dinámico: Creación de la PVC al crear un conjunto con estado para crear el conjunto con estado. El nombre de la PVC sigue el formato
<volume_name>-<statefulset_name>-<replica_number>
. Asegúrese de utilizar los siguientes valores de nombre de PVC en la especificación del conjunto con estado:spec.volumeClaimTemplates.metadata.name
: Escriba el<volume_name>
del nombre de la PVC.metadata.name
- Escriba el
<statefulset_name>
del nombre de la PVC. spec.replicas
- Especifique el número de réplicas que desea crear para el conjunto con estado. El número de réplicas debe ser igual al número de PVC que ha creado anteriormente.
Si las PVC están en zonas diferentes, no incluya ninguna etiqueta de región o zona en el conjunto con estado.
-
Verifique que las PVC se utilizan en los pods de réplica de conjunto con estado listando los pods en el clúster. Identifique los pods que pertenecen a su conjunto con estado.
kubectl get pods
-
Verifique que la PVC existente esté montada en la réplica del conjunto con estado. Revise el valor de
ClaimName
en la secciónVolumes
de la salida de la CLI.kubectl describe pod <pod_name>
Salida de ejemplo
Name: nginx-0 Namespace: default Node: 10.xxx.xx.xxx/10.xxx.xx.xxx Start Time: Fri, 05 Oct 2022 13:24:59 -0400 ... Volumes: myvol: Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace) ClaimName: myvol-nginx-0 ...
Cambio del tamaño e IOPS del dispositivo de almacenamiento existente
Si desea aumentar la capacidad de almacenamiento o el rendimiento, puede modificar el volumen existente.
Para ver preguntas sobre la facturación y encontrar los pasos sobre cómo utilizar la consola de IBM Cloud para modificar el almacenamiento, consulte Ampliación de la capacidad de almacenamiento en bloque y Ajuste de IOPS. Las actualizaciones que realice desde la consola no se reflejan en el volumen persistente (PV). Para añadir esta información al PV, ejecute kubectl patch pv <pv_name>
y actualice manualmente el tamaño y el valor de IOPS en la sección Etiquetas y Anotación del PV.
-
Liste las PVC del clúster y tome nota del nombre del PV asociado en la columna VOLUME.
kubectl get pvc
Salida de ejemplo
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE myvol Bound pvc-01ac123a-123b-12c3-abcd-0a1234cb12d3 20Gi RWO ibmc-block-bronze 147d
-
Si desea cambiar el valor de IOPS y el tamaño del almacenamiento en bloque, edite primero el valor de IOPS en la sección
metadata.labels.IOPS
de su PV. Puede aumentar o disminuir el valor de IOPS. Asegúrese de especificar un IOPS que reciba soporte del tipo de almacenamiento que tiene. Por ejemplo, si tiene almacenamiento en bloque resistente con 4 IOPS, puede cambiar el valor de IOPS por 2 ó 10. Para ver los valores de IOPS admitidos, consulte Cómo decidir la configuración del almacenamiento en bloque.kubectl edit pv <pv_name>
Para cambiar el valor de IOPS desde la CLI, también debe cambiar el tamaño del almacenamiento en bloque. Si solo desea cambiar modificar IOPS, pero no el tamaño, debe solicitar el cambio de IOPS desde la consola.
-
Edite la PVC y añada el nuevo tamaño en la sección
spec.resources.requests.storage
de la PVC. Puede cambiar por un tamaño mayor solo hasta la capacidad máxima establecida por la clase de almacenamiento. No puede reducir el tamaño del almacenamiento existente. Para ver los tamaños válidos para la clase de almacenamiento, consulte Cómo decidir la configuración del almacenamiento en bloque.kubectl edit pvc <pvc_name>
-
Verifique que se solicita la ampliación del volumen. La ampliación de volumen se solicita correctamente cuando se ve el mensaje
FileSystemResizePending
en la sección Conditions de la salida de la CLI.kubectl describe pvc <pvc_name>
Salida de ejemplo
... Conditions: Type Status LastProbeTime LastTransitionTime Reason Message ---- ------ ----------------- ------------------ ------ ------- FileSystemResizePending True Mon, 01 Jan 0001 00:00:00 +0000 Thu, 25 Apr 2022 15:52:49 -0400 Waiting for user to (re-)start a pod to finish file system resize of volume on node.
-
Obtenga una lista de los pods que montan la PVC. Si la PVC está montada mediante un pod, la ampliación de volumen se procesa automáticamente. Si la PVC no está montada mediante un pod, debe montar la PVC en un pod para que se pueda procesar la ampliación de volumen.
kubectl get pods --all-namespaces -o=jsonpath='{range .items[*]}{"\n"}{.metadata.name}{":\t"}{range .spec.volumes[*]}{.persistentVolumeClaim.claimName}{" "}{end}{end}' | grep "<pvc_name>"
Los pods montados se devuelven en el formato:
<pod_name>: <pvc_name>
. -
Si la PVC no está montada mediante un pod, cree un pod o un despliegue y monte la PVC. Si la PVC está montada mediante un pod, continúe en el paso siguiente.
-
Verifique que el tamaño y el número de IOPS se han modificado en la sección Labels de la salida de la CLI. El proceso puede tardar varios minutos en completarse.
kubectl describe pv <pv_name>
Salida de ejemplo
... Labels: CapacityGb=50 Datacenter=dal10 IOPS=500
-
Inicie una sesión en el pod que monta el PVC.
kubectl exec <pod-name> -it -- bash
-
Ejecute el mandato siguiente para utilizar los binarios de host.
chroot /host
-
Redimensione el sistema de archivos.
sudo resize2fs <filesystem-path>
Mandato de ejemplo
sudo resize2fs /dev/vdg
-
Verifique que el sistema de archivos se ha redimensionado.
df -h
Copia de seguridad y restauración de datos
El almacenamiento en bloque se suministra en la misma ubicación que los nodos trabajadores del clúster. IBM aloja el almacenamiento en servidores en clúster para proporcionar disponibilidad en el caso de que un servidor deje de funcionar. Sin embargo, no se realizan automáticamente copias de seguridad del almacenamiento en bloque, y puede dejar de ser accesible si falla toda la ubicación. Para evitar que los datos que se pierdan o se dañen, puede configurar copias de seguridad periódicas que puede utilizar para restaurar los datos cuando sea necesario.
Consulte las opciones siguientes de copia de seguridad y restauración para el almacenamiento en bloque:
Configuración de instantáneas periódicas
Puede configurar instantáneas periódicas para el almacenamiento en bloque, que son imágenes de solo lectura que capturan el estado de la instancia en un punto en el tiempo.
Para almacenar la instantánea, debe solicitar espacio de instantáneas en el almacenamiento en bloque. Las instantáneas se almacenan en la instancia de almacenamiento existente dentro de la misma zona. Puede restaurar datos de una instantánea si un usuario elimina accidentalmente datos importantes del volumen. \n \n **Para crear una instantánea para el volumen, realice los pasos siguientes.
-
Inicie una sesión en la CLI de
ibmcloud sl
.ibmcloud sl init
-
Liste los PV en su clúster.
kubectl get pv
-
Obtenga los detalles de los PV para los que desea crear espacio de instantáneas y anote el ID de volumen, el tamaño y las IOPS. El tamaño y el número de IOPS se muestran en la sección Labels de la salida de la CLI.
kubectl describe pv <pv_name>
-
Para encontrar el ID de volumen, revise la anotación
ibm.io/network-storage-id
de la salida de la CLI. -
Cree el tamaño de instantánea para el volumen existente con los parámetros que ha recuperado en el paso anterior.
ibmcloud sl block snapshot-order <volume_ID> --size <size> --tier <iops>
-
Espere a que se haya creado el tamaño de la instantánea. El tamaño de la instantánea se suministra de forma correcta cuando el valor de Snapshot Size (GB) en la salida de la CLI pasa de 0 al tamaño solicitado.
ibmcloud sl block volume-detail <volume_ID>
-
Cree la instantánea para el volumen y anote el ID de la instantánea que se crea para usted.
ibmcloud sl block snapshot-create <volume_ID>
-
Verifique que la instantánea se haya creado correctamente.
ibmcloud sl block snapshot-list <volume_ID>
-
Establezca la planificación de instantánea. Para obtener más información sobre las opciones disponibles para la planificación de instantáneas, consulte la documentación de CLI.
ibmcloud sl block snapshot-enable VOLUME_ID <OPTIONS>
-
Para restaurar los datos de una instantánea en un volumen existente, ejecute el comando siguiente.
ibmcloud sl block snapshot-restore <volume_ID> <snapshot_ID>
Replicación de instantáneas en otra zona
Para proteger los datos ante un error de la zona, puede replicar instantáneas en una instancia de almacenamiento en bloque configurada en otra zona.
Los datos únicamente se pueden replicar desde el almacenamiento primario al almacenamiento de copia de seguridad. No puede montar una instancia de almacenamiento en bloque replicada en un clúster. Cuando el almacenamiento primario falla, puede establecer de forma manual el almacenamiento de copia de seguridad replicado para que sea el primario. A continuación, puede montarla en el clúster. Una vez restaurado el almacenamiento primario, puede restaurar los datos del almacenamiento de copia de seguridad.
Duplicación del almacenamiento
Puede duplicar la instancia de almacenamiento en bloque en la misma zona que la instancia de almacenamiento original.
La instancia duplicada tiene los mismos datos que la instancia de almacenamiento original en el momento de duplicarla. A diferencia de las réplicas, utilice los duplicados como una instancia de almacenamiento independiente de la original. Para duplicar, primero configure instantáneas para el volumen.
Copia de seguridad de los datos en IBM Cloud® Object Storage
Puede utilizar el diagrama de Helm ibm-backup-restore para utilizar un pod de copia de seguridad y restauración en el clúster.
Este pod contiene un script para ejecutar una copia de seguridad puntual o periódico para cualquier reclamación de volumen persistente (PVC) en el clúster. Los datos se almacenan en la instancia de IBM Cloud® Object Storage que ha configurado en una zona.
El almacenamiento en bloque se monta con la modalidad de acceso RWO. This access allows only one pod to be mounted to the block storage at a time. Para hacer una copia de seguridad de los datos, debe desmontar el pod de la app desde el almacenamiento, montarlo en el pod de copia de seguridad, realizar una copia de seguridad de los datos y volver a montar el almacenamiento en el pod de la app.
Para aumentar la alta disponibilidad de los datos y proteger la app ante un error de la zona, configure una segunda instancia de Object Storage y replique los datos entre las zonas. Si necesita restaurar datos desde la instancia de Object Storage, utilice el pod de restauración que se proporciona con el diagrama de Helm.
Copia de datos desde y hacia pods y contenedores
Puedes utilizar el kubectl cp
comando para copiar archivos y directorios hacia y desde pods o contenedores
específicos en su clúster.
Cuando se ejecuta el mandato kubectl cp
, si no se especifica un contenedor con -c
, el mandato utiliza el primer contenedor disponible en el pod.
Copie los datos de la máquina local en un pod del clúster.
kubectl cp <local_filepath>/<filename> <namespace>/<pod>:<pod_filepath>
Copie los datos de un pod del clúster en la máquina local.
kubectl cp <namespace>/<pod>:<pod_filepath>/<filename> <local_filepath>/<filename>
Copie los datos de la máquina local en un contenedor concreto que ejecute en un pod del clúster.
kubectl cp <local_filepath>/<filename> <namespace>/<pod>:<pod_filepath> -c CONTAINER
Referencia de clases de almacenamiento
Bronce
- Nombre
ibmc-block-bronze
ibmc-block-retain-bronze
- Tipo
- Almacenamiento resistente
- Sistema de archivos
ext4
- IOPS por gigabyte
- 2
- Rango de tamaño en gigabytes
- 20-12000 Gi
- Disco duro
- SSD
- Política de reclamación
ibmc-block-bronze
: Suprimiribmc-block-retain-bronze
: Retener
Plata
- Nombre
ibmc-block-silver
ibmc-block-retain-silver
- Tipo
- Almacenamiento resistente
- Sistema de archivos
ext4
- IOPS por gigabyte
- 4
- Rango de tamaño en gigabytes
- 20-12000 Gi
- Disco duro
- SSD
- Política de reclamación
ibmc-block-silver
: Suprimiribmc-block-retain-silver
: Retener
Oro
- Nombre
ibmc-block-gold
ibmc-block-retain-gold
- Tipo
- Almacenamiento resistente
- Sistema de archivos
ext4
- IOPS por gigabyte
- 10
- Rango de tamaño en gigabytes
- 20-4000 Gi
- Disco duro
- SSD
- Política de reclamación
ibmc-block-gold
: Suprimiribmc-block-retain-gold
: Retener
Personalizado
- Nombre
ibmc-block-custom
ibmc-block-retain-custom
- Tipo
- Sistema de archivos de rendimiento
ext4
- IOPS y tamaño
- Rango de tamaños en gigabytes / Rango de IOPS en múltiplos de 100
- 20-39 Gi / 100-1000 IOPS
- 40-79 Gi / 100-2000 IOPS
- 80-99 Gi / 100-4000 IOPS
- 100-499 Gi / 100-6000 IOPS
- 500-999 Gi / 100-10000 IOPS
- 1000-1999 Gi / 100-20000 IOPS
- 2000-2999 Gi / 200-40000 IOPS
- 3000-3999 Gi / 200-48000 IOPS
- 4000-7999 Gi / 300-48000 IOPS
- 8000-9999 Gi / 500-48000 IOPS
- 10000-12000 Gi / 1000-48000 IOPS
- Disco duro
- La proporción entre IOPS y gigabytes determina el tipo de disco duro que se suministra. Para determinar la proporción entre IOPS y gigabytes, divida el número de IOPS por el tamaño de su almacenamiento.
- Ejemplo: ha seleccionado 500Gi de almacenamiento con 100 IOPS. La proporción es de 0,2 (100 IOPS/500 Gi).
- Visión general de los tipos de disco duro por proporción:
- Menor o igual que 0,3: SATA
- Mayor que 0,3: SSD
- Política de reclamación
ibmc-block-custom
: Suprimiribmc-block-retain-custom
: Retener
Clases de almacenamiento personalizadas de ejemplo
Puede crear una clase de almacenamiento personalizada y utilizar la clase de almacenamiento en la PVC.
IBM Cloud Kubernetes Service proporciona clases de almacenamiento predefinidas para suministrar almacenamiento en bloque con un nivel y una configuración determinados. A veces, es posible que desee suministrar almacenamiento con una configuración diferente que no esté cubierta en las clases de almacenamiento predefinidas. Puede utilizar los ejemplos de este tema para encontrar clases de almacenamiento personalizadas de ejemplo.
Para crear la clase de almacenamiento personalizada, consulte Personalización de una clase de almacenamiento. A continuación, utilice la clase de almacenamiento personalizada en la PVC.
Creación de almacenamiento que tenga en cuenta la topología
Para utilizar el almacenamiento en bloque en un clúster multizona, su pod debe estar planificado en la misma zona que la instancia de almacenamiento en bloque para que pueda leer y escribir en el volumen. Antes de que Kubernetes incorporara la planificación del volumen que tiene en cuenta la topología, el suministro dinámico del almacenamiento creaba automáticamente la instancia de almacenamiento en bloque al crear una PVC. A continuación, cuando creaba el pod, el planificador de Kubernetes intentaba desplegar el pod en el mismo centro de datos que la instancia de almacenamiento en bloque.
La creación de la instancia de almacenamiento en bloque sin conocer las restricciones del pod puede llevar a resultados no deseados. Por ejemplo, es posible que el pod no pueda planificarse en el mismo nodo trabajador que el almacenamiento porque el nodo trabajador no tiene recursos suficientes o porque el nodo trabajador está marcado y no permite que se planifique el pod. Con la planificación de volumen que tiene en cuenta la topología, la instancia de almacenamiento en bloque se retrasa hasta que se crea el primer pod que utiliza el almacenamiento.
Para utilizar la planificación del volumen que tiene en cuenta la topología, asegúrese de que ha instalado el plugin IBM Cloud Block Storage versión 1.2.0 o posterior.
En los siguientes ejemplos se muestra cómo crear clases de almacenamiento que retrasan la creación de la instancia de almacenamiento en bloque hasta que el primer pod que utiliza este almacenamiento esté listo para ser planificado. Para retrasar
la creación, debe incluir la opción volumeBindingMode: WaitForFirstConsumer
. Si no incluye esta opción, volumeBindingMode
se establece automáticamente en Immediate
y la instancia de almacenamiento en
bloque se crea al crear la PVC.
Ejemplo de almacenamiento en bloques de resistencia.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ibmc-block-bronze-delayed
parameters:
billingType: hourly
classVersion: "2"
fsType: ext4
iopsPerGB: "2"
sizeRange: '[20-12000]Gi'
type: Endurance
provisioner: ibm.io/ibmc-block
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
Ejemplo de almacenamiento en bloques de rendimiento.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ibmc-block-performance-storageclass
labels:
kubernetes.io/cluster-service: "true"
provisioner: ibm.io/ibmc-block
parameters:
billingType: "hourly"
classVersion: "2"
sizeIOPSRange: |-
"[20-39]Gi:[100-1000]"
"[40-79]Gi:[100-2000]"
"[80-99]Gi:[100-4000]"
"[100-499]Gi:[100-6000]"
"[500-999]Gi:[100-10000]"
"[1000-1999]Gi:[100-20000]"
"[2000-2999]Gi:[200-40000]"
"[3000-3999]Gi:[200-48000]"
"[4000-7999]Gi:[300-48000]"
"[8000-9999]Gi:[500-48000]"
"[10000-12000]Gi:[1000-48000]"
type: "Performance"
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
Especificación de la zona y de la región
Si desea crear el almacenamiento en bloque en una zona específica, puede especificar la zona y la región en una clase de almacenamiento personalizada.
Utilice la clase de almacenamiento personalizada si utiliza el plugin IBM Cloud Block Storage versión 1.0.0 o si desea suministrar almacenamiento en bloque de forma estática en una zona específica. En todos los demás casos, especifique la zona directamente en la PVC.
El siguiente archivo .yaml
personaliza una clase de almacenamiento que se basa en la clase de almacenamiento sin retención ibm-block-silver
: el valor de type
es "Endurance"
, el
valor de iopsPerGB
es 4
, el valor de sizeRange
es "[20-12000]Gi"
y el valor de reclaimPolicy
está establecido en "Delete"
. La zona especificada
es dal12
. Para utilizar otra clase de almacenamiento como base, consulte la Referencia de clases de almacenamiento.
Cree la clase de almacenamiento en la misma región y zona que el clúster y los nodos trabajadores. Para obtener la región del clúster, ejecute ibmcloud ks cluster get --cluster <cluster_name_or_ID>
y busque el prefijo de
región en el URL maestro, como eu-de
en https://c2.eu-de.containers.cloud.ibm.com:11111
. Para obtener la zona del nodo de trabajador, ejecute ibmcloud ks worker ls --cluster <cluster_name_or_ID>
.
Ejemplo de almacenamiento en bloques de resistencia.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ibmc-block-silver-mycustom-storageclass
labels:
kubernetes.io/cluster-service: "true"
provisioner: ibm.io/ibmc-block
parameters:
zone: "dal12"
region: "us-south"
type: "Endurance"
iopsPerGB: "4"
sizeRange: "[20-12000]Gi"
reclaimPolicy: "Delete"
Ejemplo de almacenamiento en bloques de rendimiento.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ibmc-block-performance-storageclass
labels:
kubernetes.io/cluster-service: "true"
provisioner: ibm.io/ibmc-block
parameters:
zone: "dal12"
region: "us-south"
type: "Performance"
sizeIOPSRange: |-
"[20-39]Gi:[100-1000]"
"[40-79]Gi:[100-2000]"
"[80-99]Gi:[100-4000]"
"[100-499]Gi:[100-6000]"
"[500-999]Gi:[100-10000]"
"[1000-1999]Gi:[100-20000]"
"[2000-2999]Gi:[200-40000]"
"[3000-3999]Gi:[200-48000]"
"[4000-7999]Gi:[300-48000]"
"[8000-9999]Gi:[500-48000]"
"[10000-12000]Gi:[1000-48000]"
reclaimPolicy: "Delete"
Montaje de almacenamiento en bloque con un sistema de archivos XFS
En los ejemplos siguientes se crea una clase de almacenamiento que proporciona almacenamiento en bloque con un sistema de archivos XFS
.
Ejemplo de almacenamiento en bloques de resistencia.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ibmc-block-custom-xfs
labels:
addonmanager.kubernetes.io/mode: Reconcile
provisioner: ibm.io/ibmc-block
parameters:
type: "Endurance"
iopsPerGB: "4"
sizeRange: "[20-12000]Gi"
fsType: "xfs"
reclaimPolicy: "Delete"
Ejemplo de almacenamiento en bloques de rendimiento.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ibmc-block-custom-xfs
labels:
addonmanager.kubernetes.io/mode: Reconcile
provisioner: ibm.io/ibmc-block
parameters:
classVersion: "2"
type: "Performance"
sizeIOPSRange: |-
[20-39]Gi:[100-1000]
[40-79]Gi:[100-2000]
[80-99]Gi:[100-4000]
[100-499]Gi:[100-6000]
[500-999]Gi:[100-10000]
[1000-1999]Gi:[100-20000]
[2000-2999]Gi:[200-40000]
[3000-3999]Gi:[200-48000]
[4000-7999]Gi:[300-48000]
[8000-9999]Gi:[500-48000]
[10000-12000]Gi:[1000-48000]
fsType: "xfs"
reclaimPolicy: "Delete"
Eliminación del almacenamiento persistente de un clúster
Cuando configura el almacenamiento persistente en el clúster, tiene tres componentes principales: la reclamación de volumen persistente (PVC) de Kubernetes que solicita almacenamiento, el volumen persistente (PV) de Kubernetes que se monta en un pod y se describe en el PVC y la instancia de infraestructura de IBM Cloud, como por ejemplo el almacenamiento clásico de archivos o en bloque. En función de cómo haya creado el almacenamiento, es posible que los tenga que suprimir los tres componentes por separado.
Visión general de la eliminación del almacenamiento
La eliminación del almacenamiento persistente de la cuenta de IBM Cloud varía en función de cómo haya suministrado el almacenamiento y de los componentes que ya haya eliminado.
- ¿Se elimina mi almacenamiento persistente cuando borro mi clúster?
- Durante la supresión del clúster, tiene la opción de eliminar el almacenamiento persistente. Sin embargo, en función de cómo se haya suministrado el almacenamiento, es posible que la eliminación del almacenamiento no incluya todos los componentes
de almacenamiento. Si ha aprovisionado dinámicamente almacenamiento con una clase de almacenamiento que establece
reclaimPolicy: Delete
, su PVC, PV y la instancia de almacenamiento se eliminan automáticamente al eliminar el clúster. Para el almacenamiento que se aprovisionó estáticamente o el almacenamiento que aprovisionó con una clase de almacenamiento que establecereclaimPolicy: Retain
, el PVC y el PV se eliminan cuando elimina el clúster, pero su instancia de almacenamiento y sus datos permanecen. Se le sigue facturando la instancia de almacenamiento. Además, si ha suprimido el clúster que no está en buen estado, es posible que el almacenamiento siga existiendo incluso si ha elegido eliminarlo. - ¿Cómo elimino el almacenamiento cuando quiero conservar mi clúster?
- Cuando se ha suministrado el almacenamiento de forma dinámica con una clase de almacenamiento que establece
reclaimPolicy: Delete
, puede eliminar la PVC para iniciar el proceso de supresión de su almacenamiento persistente. La PVC, el PV y la instancia de almacenamiento se eliminan automáticamente. Para el almacenamiento que se aprovisionó estáticamente o el almacenamiento que aprovisionó con una clase de almacenamiento que establecereclaimPolicy: Retain
, debe eliminar manualmente el PVC, el PV y la instancia de almacenamiento para evitar cargos adicionales. - ¿Cómo se detiene la facturación después de que elimino mi almacenamiento?
- En función de los componentes de almacenamiento que suprima y de cuándo lo haga, es posible que el ciclo de facturación no se detenga inmediatamente. Si suprime la PVC y el PV, pero no la instancia de almacenamiento de la cuenta de IBM Cloud, dicha instancia sigue existiendo y se le sigue facturando por la misma.
Si suprime la PVC, el PV y la instancia de almacenamiento, el ciclo de facturación se detiene en función del valor de billingType
que haya elegido al suministrar el almacenamiento y de cómo haya elegido suprimir el almacenamiento.
-
Cuando cancela manualmente la instancia de almacenamiento persistente desde la consola de IBM Cloud o la CLI, la facturación se detiene de la siguiente manera:
- Almacenamiento por hora: la facturación se detiene inmediatamente. Una vez que se haya cancelado el almacenamiento, es posible que siga viendo la instancia de almacenamiento en la consola durante 72 horas más.
- Almacenamiento mensual: puede elegir entre cancelación inmediata o cancelación al cumplirse el año. En ambos casos, se le factura hasta el final del ciclo de facturación actual y la facturación se detiene en el siguiente ciclo de facturación. Una vez que se haya cancelado el almacenamiento, es posible que siga viendo la instancia de almacenamiento en la consola o la CLI durante 72 horas más.
- Cancelación inmediata: elija esta opción para eliminar el almacenamiento de inmediato. Ni usted ni sus usuarios pueden seguir utilizando el almacenamiento ni recuperar los datos.
- Fecha de aniversario: elija esta opción para cancelar el almacenamiento en la fecha del próximo aniversario. Las instancias de almacenamiento permanecen activas hasta la fecha del siguiente aniversario y puede seguir utilizándolas hasta dicha fecha, por ejemplo para dar tiempo a su equipo para que realice copias de seguridad de los datos.
-
Si ha suministrado el almacenamiento de forma dinámica con una clase de almacenamiento que establece
reclaimPolicy: Delete
y elige eliminar la PVC, el PV y la instancia de almacenamiento se eliminan inmediatamente. En el caso del almacenamiento que se factura por hora, la facturación se detiene inmediatamente. En el caso del almacenamiento que se factura mensualmente, se le factura el resto del mes. Una vez que se haya eliminado el almacenamiento y se detiene la facturación, es posible que siga viendo la instancia de almacenamiento en la consola o la CLI durante 72 horas más.
- ¿Qué debo tener en cuenta antes de eliminar el almacenamiento persistente?
- Cuando se limpia el almacenamiento persistente, se suprimen todos los datos almacenados en el mismo. Si necesita una copia de los datos, haga una copia de seguridad.
- He eliminado mi instancia de almacenamiento. ¿Por qué sigo viendo mi instancia?
- Después de eliminar el almacenamiento persistente, pueden pasar hasta 72 horas hasta que la eliminación se procese por completo y el almacenamiento desaparezca de la consola o de la CLI de IBM Cloud.
Limpieza del almacenamiento persistente
Elimine la PVC, el PV y la instancia de almacenamiento de la cuenta de IBM Cloud para evitar cargos adicionales de almacenamiento persistente.
Antes de empezar:
- Asegúrese de que ha realizado una copia de seguridad de los datos que desea conservar.
- Inicie una sesión en la cuenta. If applicable, target the appropriate resource group. Establezca el contexto para el clúster.
Para limpiar los datos persistentes:
-
Obtenga una lista de las PVC del clúster y anote el nombre (
NAME
) de la PVC, suSTORAGECLASS
y el nombre del PV vinculado a la PVC que se muestra comoVOLUME
.kubectl get pvc
Salida de ejemplo
NAME STATUS VOLUME CAPACITY ACCESSMODES STORAGECLASS AGE claim1 Bound pvc-06886b77-102b-11e8-968a-f6612bb731fb 20Gi RWO class 78d claim2 Bound pvc-457a2b96-fafc-11e7-8ff9-b6c8f770356c 4Gi RWX class 105d claim3 Bound pvc-1efef0ba-0c48-11e8-968a-f6612bb731fb 24Gi RWX class 83d
-
Revise los valores
ReclaimPolicy
ybillingType
para la clase de almacenamiento.kubectl describe storageclass <storageclass_name>
Si la política de reclamación indica
Delete
, el PV y el almacenamiento físico se eliminan cuando se elimina la PVC. Si la política de reclamación indicaRetain
, o si ha suministrado el almacenamiento sin una clase de almacenamiento, el PV y el almacenamiento físico no se eliminan cuando se elimina la PVC. Debe eliminar la PVC, el PV y el almacenamiento físico por separado.Si el almacenamiento se carga de forma mensual, se le facturará todo el mes, aunque elimine el almacenamiento antes de que finalice el ciclo de facturación.
-
Elimine los pods que montan la PVC. Obtenga una lista de los pods que montan la PVC. Si no se devuelve ningún pod en la salida de la CLI, no tiene ningún pod que utilice la PVC.
kubectl get pods --all-namespaces -o=jsonpath='{range .items[*]}{"\n"}{.metadata.name}{":\t"}{range .spec.volumes[*]}{.persistentVolumeClaim.claimName}{" "}{end}{end}' | grep "<pvc_name>"
Salida de ejemplo
depl-12345-prz7b: claim1
-
Elimine el pod que utiliza la PVC. Si el pod forma parte de un despliegue, elimine el despliegue.
kubectl delete pod <pod_name>
-
Verifique que el pod se ha eliminado.
kubectl get pods
-
Elimine la PVC.
kubectl delete pvc <pvc_name>
-
Revise el estado de su PV. Utilice el nombre del PV que ha recuperado antes como
VOLUME
. Cuando se elimina la PVC, se libera el PV vinculado a la PVC. En función de cómo haya suministrado el almacenamiento, el PV entra en estadoDeleting
si el PV se suprime automáticamente o en estadoReleased
si debe suprimir manualmente el PV. Nota: para los PV que se suprimen automáticamente, el estado puede indicar brevementeReleased
antes de que se suprima. Vuelva a ejecutar el mandato después de unos minutos para ver si se ha eliminado el PV.kubectl get pv <pv_name>
-
Si su PV no se ha suprimido, elimine manualmente el PV.
kubectl delete pv <pv_name>
-
Verifique que el PV se ha eliminado.
kubectl get pv
-
Obtenga una lista de la instancia de almacenamiento físico a la que apuntaba su PV y anote el
id
de la instancia de almacenamiento físico.ibmcloud sl block volume-list --columns id --columns notes | grep <pv_name>
Salida de ejemplo
12345678 {"plugin":"ibmcloud-block-storage-plugin-689df949d6-4n9qg","region":"us-south","cluster":"aa1a11a1a11b2b2bb22b22222c3c3333","type":"Endurance","ns":"default","pvc":"block-storage-pvc","pv":"pvc-d979977d-d79d-77d9-9d7d-d7d97ddd99d7","storageclass":"ibmc-block-silver","reclaim":"Delete"}
Visión general de la información del campo Notes:
"plugin":"ibm-file-plugin-5b55b7b77b-55bb7"
- El plugin de almacenamiento que utiliza el clúster.
"region":"us-south"
- La región en la que se encuentra el clúster.
"cluster":"aa1a11a1a11b2b2bb22b22222c3c3333"
- El ID de clúster que está asociado con la instancia de almacenamiento.
"type":"Endurance"
- El tipo de almacenamiento de archivos o en bloque,
Endurance
oPerformance
. "ns":"default"
- El espacio de nombres en el que se despliega la instancia de almacenamiento.
"pvc":"block-storage-pvc"
- El nombre del PVC que está asociado a la instancia de almacenamiento.
"pv":"pvc-d979977d-d79d-77d9-9d7d-d7d97ddd99d7"
- El PV que está asociado con la instancia de almacenamiento.
"storageclass":"ibmc-file-gold"
- El tipo de clase de almacenamiento: bronce, plata, oro o personalizado.
-
Elimine la instancia de almacenamiento físico.
ibmcloud sl block volume-cancel <classic_block_id>
-
Verifique que se ha eliminado la instancia de almacenamiento físico.
El proceso de supresión puede tardar hasta 72 horas en completarse.
ibmcloud sl block volume-list
Configuración de la supervisión para los PV de conectividad de limited
Cuando crea un pod y una PVC que utilizan Block Storage for Classic, se asignan 2 puertos de destino al volumen persistente (PV) subyacente donde se monta el almacenamiento. Varios puertos de destino permiten la migración tras error en caso de que un puerto pase a estar inactivo.
En versiones anteriores del controlador Block Storage for Classic, la imposibilidad de encontrar 2 puertos de destino al montar un PV durante el despliegue provocaba un error de despliegue.
Sin embargo, a veces, como durante las ventanas de mantenimiento de IaaS, es posible que desee que los pods se desplieguen correctamente con sólo 1 puerto de destino disponible en el volumen persistente.
A partir de la versión 2.4.12
del controlador Block Storage for Classic, los pods se desplegarán correctamente aunque el PV solo pueda asignar 1 puerto de destino. Además de este cambio de comportamiento, los PV ahora incluyen una
nueva etiqueta para indicar la disponibilidad de red donde una etiqueta de healthy
significa que se han asignado 2 puertos de destino y limited
significa que solo se ha podido asignar 1 puerto de destino durante el
montaje.
Para supervisar las instancias en las que la conectividad de pod con Block Storage for Classic está limitada, puede configurar una alerta personalizada que busque la etiqueta limited
. A continuación, configure el umbral de alerta
en >0
.
-
En el panel de control IBM Cloud Monitoring, seleccione Nueva alerta > Métrica.
-
Seleccione Consulta Prom y especifique
kube_persistentvolume_labels{label_ibm_io_pv_connectivity_status='limited'}
. -
Establezca el umbral en
>0
y establezca la gravedad que desea utilizar para esta alerta. -
Seleccione el canal de notificación y guarde la alerta.