Usa el controlador de CSI de Persistent Disk de Compute Engine

En esta página, se explica cómo usar el controlador de CSI de Persistent Disk de Compute Engine.

Google Kubernetes Engine (GKE) proporciona una forma sencilla de implementar y administrar de forma automática el Controlador de interfaz de almacenamiento de contenedores (CSI) de Persistent Disk de Google Compute Engine en tus clústeres.

La versión del controlador de CSI de Persistent Disk de Compute Engine está vinculada a los números de la versión de la instancia principal de Kubernetes de GKE. Por lo general, este es el controlador más reciente disponible en el momento en que se lanza la versión de GKE. Los controladores se actualizan de forma automática cuando el clúster se actualiza al último parche de GKE.

Beneficios del uso del controlador de CSI de Persistent Disk de Compute Engine

El uso del controlador de CSI de Persistent Disk de Compute Engine en lugar del complemento de volumen de gcePersistentDisk de Kubernetes en configuración de árbol proporciona los siguientes beneficios:

  • Los controladores de CSI son el futuro de la extensión de almacenamiento en Kubernetes y reemplazan los complementos de volumen de árbol. Kubernetes anunció que se espera que los complementos de volumen de árbol se quiten de Kubernetes en la versión 1.21. Para obtener más información, consulta La migración de Kubernetes de árbol a volumen de CSI pasa a versión Beta. Después de esto, los volúmenes existentes que usen complementos de volumen de árbol se comunicarán mediante controladores de CSI.
  • Esto permite la implementación y la administración automáticas del controlador de disco persistente sin tener que configurarlo de forma manual ni usar el complemento de volumen de árbol.
  • Proporciona características de disco persistente adicionales en GKE. Las claves de encriptación administradas por el cliente (CMEK), que se usan para encriptar las claves de encriptación de datos que encriptan tus datos, están disponibles en el controlador de CSI de Persistent Disk de Compute Engine, pero no en el complemento de volumen de árbol. Para obtener más información sobre las CMEK, consulta Usa CMEK.
  • La corrección de errores y la actualización de funciones se lanzan de forma independiente de las actualizaciones secundarias de Kubernetes. Por lo general, esto da como resultado una cadencia de actualización más rápida.

Requisitos

Para usar esta característica, debes usar versiones de instancias principales y nodos de Kubernetes que sean 1.14 o posteriores.

Habilita el controlador de CSI de Persistent Disk de Compute Engine en un clúster nuevo

Para usar el controlador de CSI de Persistent Disk de Compute Engine en clústeres nuevos, habilita la característica mediante gcloud o Google Cloud Console. Este es el único paso necesario.

gcloud

De forma predeterminada, el controlador de CSI de Persistent Disk de Compute Engine no se habilita cuando creas un clúster. Para habilitar el controlador en la creación del clúster, ejecuta el siguiente comando:

gcloud beta container clusters create cluster-name \
  --addons=GcePersistentDiskCsiDriver \
  --cluster-version=version

En el ejemplo anterior, se ilustra lo siguiente:

  • cluster-name es el nombre del clúster nuevo.
  • version es el número de versión de GKE. Debes seleccionar la versión 1.14 o una versión posterior para usar esta característica.

Para ver la lista completa de marcas opcionales, consulta la documentación de gcloud container clusters create.

Console

De forma predeterminada, el controlador de CSI de Persistent Disk de Compute Engine no se habilita cuando creas un clúster. Para habilitar el controlador en la creación del clúster, sigue estos pasos:

  1. Visita el menú Google Kubernetes Engine en Cloud Console.

    Ir al menú Google Kubernetes Engine

  2. Haz clic en el botón Crear clúster.

  3. Configura tu clúster como desees. Para obtener más información sobre los tipos de clústeres que puedes crear, consulta Tipos de clústeres.

  4. En el panel de navegación, en Clúster, haz clic en Funciones.

  5. Selecciona la casilla de verificación Habilita el controlador de CSI de Persistent Disk para Compute Engine.

  6. Haz clic en Crear.

Una vez que hayas habilitado el controlador de CSI de Persistent Disk de Compute Engine, este se puede usar en volúmenes de Kubernetes mediante el nombre del aprovisionador y el controlador: pd.csi.storage.gke.io.

Habilita el controlador de CSI de Persistent Disk de Compute Engine en un clúster existente.

El controlador también se puede habilitar en un clúster existente, siempre que las versiones de la instancia principal y de los nodos sean la 1.14 o versiones posteriores.

gcloud

Para habilitar el controlador en un clúster existente, ejecuta el siguiente comando:

gcloud beta container clusters update cluster-name \
  --update-addons=GcePersistentDiskCsiDriver=ENABLED

En el ejemplo anterior, cluster-name es el nombre del clúster existente.

Console

Para habilitar el controlador en un clúster existente, sigue estos pasos:

  1. Visita el menú de Google Kubernetes Engine en Cloud Console.

    Ir al menú Google Kubernetes Engine

  2. Haz clic en el botón Editar del clúster, que tiene forma de lápiz.

  3. Expande Complementos.

  4. En el menú desplegable Controlador de CSI de Persistent Disk para Compute Engine, selecciona Habilitado.

  5. Haz clic en Guardar.

Inhabilita el controlador de CSI de Persistent Disk de Compute Engine

También tienes la opción de inhabilitar el controlador.

gcloud

Para habilitar el controlador en un clúster existente, ejecuta el siguiente comando:

gcloud beta container clusters update cluster-name \
  --update-addons=GcePersistentDiskCsiDriver=DISABLED

En el ejemplo anterior, cluster-name es el nombre del clúster existente.

Console

Para habilitar el controlador en un clúster existente, sigue estos pasos:

  1. Visita el menú de Google Kubernetes Engine en Cloud Console.

    Ir al menú Google Kubernetes Engine

  2. Haz clic en el botón Editar del clúster, que tiene forma de lápiz.

  3. Expande Complementos.

  4. En el menú desplegable Controlador de CSI de Persistent Disk para Compute Engine, selecciona Inhabilitado.

  5. Haz clic en Guardar.

Usa el controlador de CSI de Persistent Disk de Compute Engine

En las siguientes secciones, se describe el proceso típico para usar un volumen de Kubernetes respaldado por un controlador de CSI en GKE.

Crea un StorageClass

Una vez que habilites el controlador de CSI de Persistent Disk de Compute Engine, GKE preinstala de forma automática un StorageClass. El nombre del StorageClass es standard-rwo. Sin embargo, algunas versiones anteriores del clúster pueden tener uno de los siguientes nombres: + singlewriter-standard + standard-singlewriter

Para encontrar el nombre del StorageClass instalado, ejecuta el siguiente comando:

kubectl get sc

También puedes instalar un StorageClass diferente. Por ejemplo, puedes crear un StorageClass mediante el siguiente archivo llamado pd-example-class.yaml:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: pd-example
provisioner: pd.csi.storage.gke.io
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
parameters:
  type: pd-ssd

Después de crear el archivo pd-example-class.yaml, ejecuta el siguiente comando:

kubectl create -f pd-example-class.yaml

Crea una PersistentVolumeClaim

También puedes crear una PersistentVolumeClaim. En el siguiente ejemplo, se usa la clase de almacenamiento singlewriter-standard preinstalada.

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: podpvc
spec:
  accessModes:
  - ReadWriteOnce
  storageClassName: singlewriter-standard
  resources:
    requests:
      storage: 6Gi

Después de crear el manifiesto de PersistentVolumeClaim, ejecuta el siguiente comando:

kubectl create -f filename.yaml

En el StorageClass preinstalado, singlewriter-standard, volumeBindingMode se configura como WaitForFirstConsumer. Cuando volumeBindingMode se establece como WaitForFirstConsumer, el PersistentVolume no se aprovisiona hasta que se programa un pod que haga referencia a la PersistentVolumeClaim. Si volumeBindingMode en el StorageClass se configura como Immediate (o se omite), se aprovisiona un PersistentVolume respaldado por el disco persistente luego de que se crea la PersistentVolumeClaim.

Crea un pod que consuma el volumen

Cuando uses pods con PersistentVolumes, te recomendamos que uses un controlador de carga de trabajo (como Deployment o StatefulSet). Si bien no se suele usar un pod independiente, en el siguiente ejemplo, se usa uno para mayor simplicidad.

Puedes convertir el siguiente archivo YAML en una plantilla de pod.

apiVersion: v1
kind: Pod
metadata:
  name: web-server
spec:
  containers:
   - name: web-server
     image: nginx
     volumeMounts:
       - mountPath: /var/lib/www/html
         name: mypvc
  volumes:
   - name: mypvc
     persistentVolumeClaim:
       claimName: podpvc
       readOnly: false

Próximos pasos