(kubectl) Creación de un PV a partir de un disco de EVS existente
Notes and Constraints
The following configuration example applies to clusters of Kubernetes 1.13 or earlier.
Procedimiento
- Inicie sesión en la consola de EVS, cree un disco de EVS y registre el ID de volumen, la capacidad y el tipo de disco del disco de EVS.
- Utilice kubectl para conectarse al clúster. Para obtener más información, véase Conexión a un clúster con kubectl.
- Cree dos archivos YAML para crear el PersistentVolume (PV) y el PersistentVolumeClaim (PVC). Suponga que los nombres de archivo son pv-evs-example.yaml y pvc-evs-example.yaml.
touch pv-evs-example.yaml pvc-evs-example.yaml
Versión de clúster de Kubernetes
Descripción
Ejemplo de YAML
1.11.7 ≤ versión de K8s ≤ 1.13
Clústeres de v1.11.7 a v1.13
1.11 ≤ versión de K8s < 1.11.7
Clústeres de v1.11 a v1.11.7
Versión de K8s = 1.9
Clústeres de v1.9
Clústeres de v1.11.7 a v1.13
- Ejemplo de archivo YAML para el PV:
apiVersion: v1 kind: PersistentVolume metadata: labels: failure-domain.beta.kubernetes.io/region: ap-southeast-1 failure-domain.beta.kubernetes.io/zone: ap-southeast-1a annotations: pv.kubernetes.io/provisioned-by: flexvolume-huawei.com/fuxivol name: pv-evs-example spec: accessModes: - ReadWriteOnce capacity: storage: 10Gi claimRef: apiVersion: v1 kind: PersistentVolumeClaim name: pvc-evs-example namespace: default flexVolume: driver: huawei.com/fuxivol fsType: ext4 options: disk-mode: SCSI fsType: ext4 volumeID: 0992dbda-6340-470e-a74e-4f0db288ed82 persistentVolumeReclaimPolicy: Delete storageClassName: sas
Tabla 1 Parámetros de clave Parámetro
Descripción
failure-domain.beta.kubernetes.io/region
La región donde se encuentra el clúster.
failure-domain.beta.kubernetes.io/zone
La AZ donde se crea el volumen de EVS. Debe ser la misma que la AZ prevista para la carga de trabajo.
storage
Capacidad de volumen de EVS en la unidad de Gi.
storageClassName
Tipo del disco de EVS. Valores admitidos: High I/O (SAS) and Ultra-high I/O (SSD)
driver
Controlador de almacenamiento.
Para los discos de EVS, establezca este parámetro en huawei.com/fuxivol.
volumeID
ID de volumen del disco de EVS.
Para obtener el ID de volumen, inicie sesión en la consola de CCE, elija Resource Management > Storage, haga clic en el nombre de PVC en la página de ficha EVS y copie el ID de PVC en la página de detalles de PVC.
disk-mode
Tipo de dispositivo del disco de EVS. El valor es VBD o SCSI.
Para clústeres de CCE anteriores a v1.11.7, no es necesario establecer este campo. El valor predeterminado es VBD.
Este campo es obligatorio para los clústeres de CCE de v1.11.7 a v1.13 que usan Linux x86. Como los volúmenes de EVS aprovisionados dinámicamente por un PVC se crean a partir de discos SCSI de EVS, se recomienda elegir SCSI al crear volúmenes manualmente (PV estáticos). Los volúmenes en el modo VBD todavía se pueden utilizar después de las actualizaciones del clúster.
spec.claimRef.apiVersion
El valor se fija en v1.
spec.claimRef.kind
El valor se fija en PersistentVolumeClaim.
spec.claimRef.name
Nombre de PVC. El valor es el mismo que el nombre del PVC creado en el siguiente paso.
spec.claimRef.namespace
Espacio de nombres del PVC. El valor es el mismo que el espacio de nombres del PVC creado en el siguiente paso.
- Ejemplo de archivo YAML para el PVC:
apiVersion: v1 kind: PersistentVolumeClaim metadata: annotations: volume.beta.kubernetes.io/storage-class: sas volume.beta.kubernetes.io/storage-provisioner: flexvolume-huawei.com/fuxivol labels: failure-domain.beta.kubernetes.io/region: ap-southeast-1 failure-domain.beta.kubernetes.io/zone: ap-southeast-1a name: pvc-evs-example namespace: default spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi volumeName: pv-evs-example
Tabla 2 Parámetros de clave Parámetro
Descripción
volume.beta.kubernetes.io/storage-class
Clase de almacenamiento, que debe ser la misma que la del PV existente.
volume.beta.kubernetes.io/storage-provisioner
El campo debe estar establecido en flexvolume-huawei.com/fuxivol.
failure-domain.beta.kubernetes.io/region
La región donde se encuentra el clúster.
failure-domain.beta.kubernetes.io/zone
La AZ donde se crea el volumen de EVS. Debe ser la misma que la AZ prevista para la carga de trabajo.
storage
Capacidad solicitada en el PVC, en Gi.
El valor debe ser el mismo que el tamaño de almacenamiento del PV existente.
volumeName
Nombre del PV.
Clústeres de v1.11 a v1.11.7
- Ejemplo de archivo YAML para el PV:
apiVersion: v1 kind: PersistentVolume metadata: labels: failure-domain.beta.kubernetes.io/region: ap-southeast-1 failure-domain.beta.kubernetes.io/zone: ap-southeast-1a name: pv-evs-example spec: accessModes: - ReadWriteOnce capacity: storage: 10Gi flexVolume: driver: huawei.com/fuxivol fsType: ext4 options: fsType: ext4 volumeID: 0992dbda-6340-470e-a74e-4f0db288ed82 persistentVolumeReclaimPolicy: Delete storageClassName: sas
Tabla 3 Parámetros de clave Parámetro
Descripción
failure-domain.beta.kubernetes.io/region
La región donde se encuentra el clúster.
failure-domain.beta.kubernetes.io/zone
La AZ donde se crea el volumen de EVS. Debe ser la misma que la AZ prevista para la carga de trabajo.
storage
Capacidad de volumen de EVS en la unidad de Gi.
storageClassName
Tipo del disco de EVS. Valores admitidos: High I/O (SAS) and Ultra-high I/O (SSD)
driver
Controlador de almacenamiento.
Para los discos de EVS, establezca este parámetro en huawei.com/fuxivol.
volumeID
ID de volumen del disco de EVS.
Para obtener el ID de volumen, inicie sesión en la consola de CCE, elija Resource Management > Storage, haga clic en el nombre de PVC en la página de ficha EVS y copie el ID de PVC en la página de detalles de PVC.
disk-mode
Tipo de dispositivo del disco de EVS. El valor es VBD o SCSI.
Para clústeres de CCE anteriores a v1.11.7, no es necesario establecer este campo. El valor predeterminado es VBD.
Este campo es obligatorio para los clústeres de CCE de v1.11.7 a v1.13 que usan Linux x86. Como los volúmenes de EVS aprovisionados dinámicamente por un PVC se crean a partir de discos SCSI de EVS, se recomienda elegir SCSI al crear volúmenes manualmente (PV estáticos). Los volúmenes en el modo VBD todavía se pueden utilizar después de las actualizaciones del clúster.
- Ejemplo de archivo YAML para el PVC:
apiVersion: v1 kind: PersistentVolumeClaim metadata: annotations: volume.beta.kubernetes.io/storage-class: sas volume.beta.kubernetes.io/storage-provisioner: flexvolume-huawei.com/fuxivol labels: failure-domain.beta.kubernetes.io/region: ap-southeast-1 failure-domain.beta.kubernetes.io/zone: ap-southeast-1a name: pvc-evs-example namespace: default spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi volumeName: pv-evs-example
Tabla 4 Parámetros de clave Parámetro
Descripción
volume.beta.kubernetes.io/storage-class
Clase de almacenamiento. El valor puede ser sas o ssd. El valor debe ser el mismo que el del PV existente.
volume.beta.kubernetes.io/storage-provisioner
El campo debe estar establecido en flexvolume-huawei.com/fuxivol.
failure-domain.beta.kubernetes.io/region
La región donde se encuentra el clúster.
failure-domain.beta.kubernetes.io/zone
La AZ donde se crea el volumen de EVS. Debe ser la misma que la AZ prevista para la carga de trabajo.
storage
Capacidad solicitada en el PVC, en Gi.
El valor debe ser el mismo que el tamaño de almacenamiento del PV existente.
volumeName
Nombre del PV.
Clústeres de v1.9
- Ejemplo de archivo YAML para el PV:
apiVersion: v1 kind: PersistentVolume metadata: labels: failure-domain.beta.kubernetes.io/region: ap-southeast-1 failure-domain.beta.kubernetes.io/zone: ap-southeast-1a name: pv-evs-example namespace: default spec: accessModes: - ReadWriteOnce capacity: storage: 10Gi flexVolume: driver: huawei.com/fuxivol fsType: ext4 options: fsType: ext4 kubernetes.io/namespace: default volumeID: 0992dbda-6340-470e-a74e-4f0db288ed82 persistentVolumeReclaimPolicy: Delete storageClassName: sas
Tabla 5 Parámetros de clave Parámetro
Descripción
failure-domain.beta.kubernetes.io/region
La región donde se encuentra el clúster.
failure-domain.beta.kubernetes.io/zone
La AZ donde se crea el volumen de EVS. Debe ser la misma que la AZ prevista para la carga de trabajo.
storage
Capacidad de volumen de EVS en la unidad de Gi.
storageClassName
Tipo del disco de EVS. Valores admitidos: High I/O (SAS) and Ultra-high I/O (SSD)
driver
Controlador de almacenamiento.
Para los discos de EVS, establezca este parámetro en huawei.com/fuxivol.
volumeID
ID de volumen del disco de EVS.
Para obtener el ID de volumen, inicie sesión en la consola de CCE, elija Resource Management > Storage, haga clic en el nombre de PVC en la página de ficha EVS y copie el ID de PVC en la página de detalles de PVC.
disk-mode
Tipo de dispositivo del disco de EVS. El valor es VBD o SCSI.
Para clústeres de CCE anteriores a v1.11.7, no es necesario establecer este campo. El valor predeterminado es VBD.
Este campo es obligatorio para los clústeres de CCE de v1.11.7 a v1.13 que usan Linux x86. Como los volúmenes de EVS aprovisionados dinámicamente por un PVC se crean a partir de discos SCSI de EVS, se recomienda elegir SCSI al crear volúmenes manualmente (PV estáticos). Los volúmenes en el modo VBD todavía se pueden utilizar después de las actualizaciones del clúster.
- Ejemplo de archivo YAML para el PVC:
apiVersion: v1 kind: PersistentVolumeClaim metadata: annotations: volume.beta.kubernetes.io/storage-class: sas volume.beta.kubernetes.io/storage-provisioner: flexvolume-huawei.com/fuxivol labels: failure-domain.beta.kubernetes.io/region: ap-southeast-1 failure-domain.beta.kubernetes.io/zone: ap-southeast-1a name: pvc-evs-example namespace: default spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi volumeName: pv-evs-example volumeNamespace: default
Tabla 6 Parámetros de clave Parámetro
Descripción
volume.beta.kubernetes.io/storage-class
Clase de almacenamiento, que debe ser la misma que la del PV existente.
volume.beta.kubernetes.io/storage-provisioner
El campo debe estar establecido en flexvolume-huawei.com/fuxivol.
failure-domain.beta.kubernetes.io/region
La región donde se encuentra el clúster.
failure-domain.beta.kubernetes.io/zone
La AZ donde se crea el volumen de EVS. Debe ser la misma que la AZ prevista para la carga de trabajo.
storage
Capacidad solicitada en el PVC, en Gi.
El valor debe ser el mismo que el tamaño de almacenamiento del PV existente.
volumeName
Nombre del PV.
- Ejemplo de archivo YAML para el PV:
- Cree un PV.
kubectl create -f pv-evs-example.yaml
- Cree un PVC.
kubectl create -f pvc-evs-example.yaml
Una vez que la operación se realice correctamente, elija Resource Management > Storage para ver el PVC creado. También puede ver el disco de EVS por su nombre en la consola de EVS.
- (Opcional) Agregue los metadatos asociados con el clúster para asegurarse de que el disco de EVS asociado con el PV estático montado no se elimina cuando se elimina el nodo o el clúster.
Si se omite este paso en este ejemplo o al crear un PV o PVC estático, asegúrese de que el disco de EVS asociado con el PV estático no está vinculado del nodo antes de eliminar el nodo.
- Obtain the tenant token. For details, see Obtaining a User Token.
- Obtain the EVS access address EVS_ENDPOINT. For details, see Regions and Endpoints.
- Agregue los metadatos asociados con el clúster al disco de EVS que respalda el PV estático.
curl -X POST ${EVS_ENDPOINT}/v2/${project_id}/volumes/${volume_id}/metadata --insecure \ -d '{"metadata":{"cluster_id": "${cluster_id}", "namespace": "${pvc_namespace}"}}' \ -H 'Accept:application/json' -H 'Content-Type:application/json;charset=utf8' \ -H 'X-Auth-Token:${TOKEN}'
Tabla 7 Parámetros de clave Parámetro
Descripción
EVS_ENDPOINT
Dirección de acceso de EVS. Establezca este parámetro en el valor obtenido en 6.b.
project_id
ID del proyecto.
volume_id
ID del disco de EVS asociado. Establezca este parámetro en volume_id del PV estático que se va a crear. También puede iniciar sesión en la consola de EVS, hacer clic en el nombre del disco de EVS que se va a importar y obtener el ID de Summary en la página de detalles del disco como se muestra en Figura 1.
cluster_id
ID del clúster donde se va a crear el PV de EVS. En la consola de CCE, elija Resource Management > Clusters. Haga clic en el nombre del clúster que se va a asociar. En la página de detalles del clúster, obtenga el identificador del clúster, tal como se muestra en Figura 2.
pvc_namespace
Espacio de nombres donde se debe vincular el PVC.
TOKEN
Token de usuario. Establezca este parámetro en el valor obtenido en 6.a.
Por ejemplo, ejecute los siguientes comandos:
curl -X POST https://evs.ap-southeast-1.myhuaweicloud.com:443/v2/060576866680d5762f52c0150e726aa7/volumes/69c9619d-174c-4c41-837e-31b892604e14/metadata --insecure \ -d '{"metadata":{"cluster_id": "71e8277e-80c7-11ea-925c-0255ac100442", "namespace": "default"}}' \ -H 'Accept:application/json' -H 'Content-Type:application/json;charset=utf8' \ -H 'X-Auth-Token:MIIPe******IsIm1ldG
Después de ejecutar la solicitud, ejecute los siguientes comandos para comprobar si el disco de EVS se ha asociado con los metadatos del clúster:
curl -X GET ${EVS_ENDPOINT}/v2/${project_id}/volumes/${volume_id}/metadata --insecure \ -H 'X-Auth-Token:${TOKEN}'
Por ejemplo, ejecute los siguientes comandos:
curl -X GET https://evs.ap-southeast-1.myhuaweicloud.com/v2/060576866680d5762f52c0150e726aa7/volumes/69c9619d-174c-4c41-837e-31b892604e14/metadata --insecure \ -H 'X-Auth-Token:MIIPeAYJ***9t1c31ASaQ=='
La salida del comando muestra los metadatos actuales del disco de EVS.
{ "metadata": { "namespace": "default", "cluster_id": "71e8277e-80c7-11ea-925c-0255ac100442", "hw:passthrough": "true" } }