En esta guía se explica cómo usar la función multicompartir de Filestore en Google Kubernetes Engine con el controlador de CSI de Filestore para GKE.
Antes de empezar
Antes de empezar, completa los pasos de configuración necesarios para usar Filestore.
Habilita el controlador de CSI para Filestore de GKE, versión 1.23 o posterior:
Las versiones del controlador de la 1.23 a la 1.26 admiten hasta 10 recursos compartidos por instancia.
Las versiones 1.27 o posteriores del controlador admiten hasta 80 recursos compartidos por instancia.
Para consultar los requisitos más recientes del controlador de CSI para Filestore de GKE, consulta el artículo Acceder a instancias de Filestore con el controlador de CSI para Filestore.
Usar multirecursos compartidos de Filestore con varias aplicaciones
En esta sección se muestra cómo desplegar dos aplicaciones, una Deployment y una Statefulset, cada una de las cuales usa una StorageClass de Filestore multishares. También verás cómo GKE empaqueta en contenedores (un proceso para empaquetar de forma eficiente las aplicaciones en tus nodos de GKE) todos los volúmenes en la misma instancia de Filestore Enterprise subyacente.
Usa la clase de almacenamiento
enterprise-multishare-rwx
proporcionada por GKE para crear instancias que admitan hasta 10 recursos compartidos.- Si quieres crear instancias que admitan hasta 80 recursos compartidos, tendrás que crear una StorageClass personalizada. En esta guía, usarás una StorageClass con un límite de diez shares por instancia.
Una vez que se haya habilitado el controlador de CSI de Filestore de GKE, los usuarios podrán acceder a la clase de almacenamiento multishare proporcionada por GKE
enterprise-multishare-rwx
con la siguiente configuración. Al hacer referencia a esta StorageClass, el controlador CSI de Filestore de GKE usa el aprovisionamiento dinámico de volúmenes para crear automáticamente volúmenes persistentes (PVs) para las nuevas reclamaciones de volumen persistente (PVCs) según lo requiera la demanda de la carga de trabajo de GKE:kubectl describe sc enterprise-multishare-rwx Name: enterprise-multishare-rwx IsDefaultClass: No Annotations: components.gke.io/component-name=filestorecsi,components.gke.io/component-version=0.7.2,components.gke.io/layer=addon Provisioner: filestore.csi.storage.gke.io Parameters: instance-storageclass-label=enterprise-multishare-rwx,multishare=true,tier=enterprise AllowVolumeExpansion: True MountOptions: <none> ReclaimPolicy: Delete VolumeBindingMode: WaitForFirstConsumer Events: <none>
Crear un StorageClass personalizado
Si quieres aprovechar el límite de capacidad más reciente de hasta 80 recursos compartidos por instancia de Filestore, crea una StorageClass personalizada basada en la siguiente plantilla:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: csi-filestore-multishare-128
provisioner: filestore.csi.storage.gke.io
parameters:
tier: enterprise
multishare: "true"
max-volume-size: "128Gi"
network: default
allowVolumeExpansion: true
Cuando cambies el nombre de StorageClass, ten en cuenta los siguientes requisitos:
El nombre de StorageClass debe ser un nombre de subdominio DNS válido.
El nombre de StorageClass de multishare también se usa como etiqueta de instancia y debe seguir las directrices de nomenclatura de etiquetas.
Si tu aplicación requiere aprovisionamiento de volumen inmediato, incluye el
Immediate
modo de vinculación de volumen:volumeBindingMode: Immediate
Usa esta especificación, por ejemplo, si no quieres que el aprovisionamiento de volúmenes dependa de la creación de pods en el clúster de GKE.
A partir de la versión 1.27 del controlador, si quieres asignar más de 10 recursos compartidos por instancia, incluye el parámetro
max-volume-size
y asígnale uno de los valores aceptados de la primera columna:Tamaño máximo del volumen (tamaño del recurso compartido) Número máximo de recursos compartidos por instancia 128 GiB 80 256 GiB 40 512 GiB 20 1024 GiB 10 Por ejemplo, si añade el par clave-valor
max-volume-size: "128Gi"
, se asignarán hasta 80 recursos compartidos (cada uno de entre 10 y 128 GiB) a una sola instancia de nivel Enterprise de 10 TiB.Esta función es compatible con las instancias de Filestore creadas por las versiones 1.23 a 1.26 del controlador de CSI de Filestore de GKE.
Las instancias que ya tengas pueden crear nuevos PVCs o recursos compartidos con el tamaño mínimo ampliado de 10 GiB.
La versión 1.27 o posterior del controlador CSI de Filestore de GKE reconoce las instancias Enterprise antiguas y les asigna un tamaño máximo de recurso compartido predeterminado de 1024 GiB (1 TiB). Por lo tanto, las instancias antiguas solo pueden tener un máximo de 10 recursos compartidos por instancia.
Para obtener más información, consulta Filestore multishares para GKE.
Crea un Deployment con varias réplicas de pods usando un solo PVC.
Crea un archivo de configuración YAML similar al siguiente:
cat <<EOF | kubectl apply -f - apiVersion: apps/v1 kind: Deployment metadata: name: web-server-multishare labels: app: nginx spec: replicas: 5 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx volumeMounts: - mountPath: /usr/share/nginx/html name: mypvc volumes: - name: mypvc persistentVolumeClaim: claimName: test-pvc-fs --- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: test-pvc-fs spec: accessModes: - ReadWriteMany storageClassName: enterprise-multishare-rwx resources: requests: storage: 100Gi EOF
Comprueba las réplicas de los pods.
a. En la línea de comandos, ejecuta el siguiente comando para comprobar el estado del PVC:
kubectl get pvc
Debería ver una respuesta similar a la siguiente:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE test-pvc-fs Bound pvc-056d769d-a709-4bb2-b6d3-0361871b27a2 100Gi RWX enterprise-multishare-rwx 35m
b. Desde la línea de comandos, ejecuta el siguiente comando para comprobar el estado del pod:
kubectl get pod
Debería ver una respuesta similar a la siguiente:
NAME READY STATUS RESTARTS AGE web-server-multishare-76c9ffb4b5-2dhml 1/1 Running 0 35m web-server-multishare-76c9ffb4b5-7mtcb 1/1 Running 0 35m web-server-multishare-76c9ffb4b5-csdbd 1/1 Running 0 35m web-server-multishare-76c9ffb4b5-rgx82 1/1 Running 0 35m web-server-multishare-76c9ffb4b5-zjl27 1/1 Running 0 35m
Escala las réplicas.
a. En la línea de comandos, ejecuta el siguiente comando para editar el Deployment:
kubectl edit deployment web-server-multishare
b. El archivo se abrirá en la línea de comandos. Busca el campo
spec.replicas
y cambia el valor a10
.c. En la línea de comandos, ejecuta el siguiente comando para ver el cambio aplicado:
kubectl get pod
Debería ver una respuesta similar a la siguiente:
NAME READY STATUS RESTARTS AGE web-server-multishare-76c9ffb4b5-2dhml 1/1 Running 0 36m web-server-multishare-76c9ffb4b5-5ctkf 1/1 Running 0 3s web-server-multishare-76c9ffb4b5-7mtcb 1/1 Running 0 36m web-server-multishare-76c9ffb4b5-8dwmw 1/1 Running 0 2s web-server-multishare-76c9ffb4b5-csdbd 1/1 Running 0 36m web-server-multishare-76c9ffb4b5-lndcq 1/1 Running 0 2s web-server-multishare-76c9ffb4b5-rgx82 1/1 Running 0 36m web-server-multishare-76c9ffb4b5-vtd6p 1/1 Running 0 3s web-server-multishare-76c9ffb4b5-xm49s 1/1 Running 0 3s web-server-multishare-76c9ffb4b5-zjl27 1/1 Running 0 36m
Observa que hay 10 pods en ejecución.
d. En la línea de comandos, ejecuta el siguiente comando:
kubectl get deployment
Debería ver una respuesta similar a la siguiente:
NAME READY UP-TO-DATE AVAILABLE AGE web-server-multishare 10/10 10 10 36m
e. En la línea de comandos, ejecuta el siguiente comando para comprobar el estado de la PVC enlazada:
kubectl get pvc
Debería ver una respuesta similar a la siguiente:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE test-pvc-fs Bound pvc-056d769d-a709-4bb2-b6d3-0361871b27a2 100Gi RWX enterprise-multishare-rwx 37m
f. En la línea de comandos, ejecuta el siguiente comando para editar el Deployment:
kubectl edit deployment web-server-multishare
g. El archivo se abrirá en la línea de comandos. Busca el campo
spec.replicas
y cambia el valor a2
.h. En la línea de comandos, ejecuta el siguiente comando para ver el cambio aplicado:
kubectl get pod
Debería ver una respuesta similar a la siguiente:
NAME READY STATUS RESTARTS AGE web-server-multishare-76c9ffb4b5-2dhml 1/1 Running 0 38m web-server-multishare-76c9ffb4b5-7mtcb 1/1 Running 0 38m
Despliega un StatefulSet.
Despliega una segunda aplicación que comparta la instancia de Filestore subyacente.
Para ello, aprovisiona 200 GiB de espacio y valida que utiliza la misma instancia de Filestore subyacente que la primera aplicación.
A continuación, escalará la aplicación a nueve réplicas con un total de 900 GiB (9 réplicas con 100 GiB cada una) y verificará que GKE usa la misma instancia de Filestore compartiendo la instancia.
Crea un archivo de configuración YAML similar al siguiente:
cat <<EOF | kubectl apply -f - apiVersion: apps/v1 kind: StatefulSet metadata: name: web spec: serviceName: "nginx" replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: registry.k8s.io/nginx-slim:0.8 ports: - containerPort: 80 name: web volumeMounts: - name: test-pvc-multishare mountPath: /usr/share/nginx/html volumeClaimTemplates: - metadata: name: test-pvc-multishare spec: accessModes: [ "ReadWriteMany" ] storageClassName: enterprise-multishare-rwx resources: requests: storage: 100Gi EOF
Comprueba las réplicas y los volúmenes de StatefulSet.
En la línea de comandos, ejecuta el siguiente comando:
kubectl get pod
Debería ver una respuesta similar a la siguiente:
NAME READY STATUS RESTARTS AGE web-0 1/1 Running 0 4m48s web-1 1/1 Running 0 3m32s web-server-multishare-76c9ffb4b5-2dhml 1/1 Running 0 57m web-server-multishare-76c9ffb4b5-7mtcb 1/1 Running 0 57m
Observa que los dos primeros pods están asociados al StatefulSet. Los dos últimos pods están asociados a la implementación.
En la línea de comandos, ejecuta el siguiente comando:
kubectl get statefulset
Debería ver una respuesta similar a la siguiente:
NAME READY AGE web 2/2 2m8s
En la línea de comandos, ejecuta el siguiente comando:
kubectl get pvc
Debería ver una respuesta similar a la siguiente:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE test-pvc-fs Bound pvc-056d769d-a709-4bb2-b6d3-0361871b27a2 100Gi RWX enterprise-multishare-rwx 54m test-pvc-multishare-web-0 Bound pvc-7aa21b5a-5343-4547-b7d7-414c16af15a7 100Gi RWX enterprise-multishare-rwx 114s test-pvc-multishare-web-1 Bound pvc-8b37cd6e-d764-4d38-80d7-d74228536cfe 100Gi RWX enterprise-multishare-rwx 38s
El PVC
test-pvc-fs
está asociado a la implementaciónweb-server-multishare
.Los PVCs
test-pvc-multishare-web-0
ytest-pvc-multishare-web-1
están asociados al StatefulSet.Escala las réplicas de StatefulSet.
Aumenta el número de réplicas a nueve. A medida que aumenta el recuento, se crean los PVCs correspondientes.
a. En la línea de comandos, ejecuta el siguiente comando:
kubectl edit statefulset web
b. El archivo se abrirá en la línea de comandos. Busca el campo
spec.replicas
y cambia el valor a9
.c. En la línea de comandos, ejecuta el siguiente comando para ver el cambio aplicado:
kubectl get statefulset
Debería ver una respuesta similar a la siguiente:
NAME READY AGE web 9/9 13m
d. En la línea de comandos, ejecuta el siguiente comando:
kubectl get deployment
Debería ver una respuesta similar a la siguiente:
NAME READY UP-TO-DATE AVAILABLE AGE web-server-multishare 2/2 2 2 65m
e. En la línea de comandos, ejecuta el siguiente comando:
kubectl get pvc
Debería ver una respuesta similar a la siguiente:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE test-pvc-fs Bound pvc-056d769d-a709-4bb2-b6d3-0361871b27a2 100Gi RWX enterprise-multishare-rwx 65m test-pvc-multishare-web-0 Bound pvc-7aa21b5a-5343-4547-b7d7-414c16af15a7 100Gi RWX enterprise-multishare-rwx 13m test-pvc-multishare-web-1 Bound pvc-8b37cd6e-d764-4d38-80d7-d74228536cfe 100Gi RWX enterprise-multishare-rwx 12m test-pvc-multishare-web-2 Bound pvc-3fcbd132-939f-4364-807a-7c8ac6a3e64e 100Gi RWX enterprise-multishare-rwx 5m12s test-pvc-multishare-web-3 Bound pvc-5894afa5-2502-4ee7-9d5c-b7378cb85479 100Gi RWX enterprise-multishare-rwx 4m57s test-pvc-multishare-web-4 Bound pvc-ebbe452b-bc8f-4624-a830-a2094cce0d67 100Gi RWX enterprise-multishare-rwx 4m36s test-pvc-multishare-web-5 Bound pvc-5a73a698-d174-44cb-a3a1-e767966c3417 100Gi RWX enterprise-multishare-rwx 4m20s test-pvc-multishare-web-6 Bound pvc-102da6a9-2ca6-4f9e-9896-8fe14709db7a 100Gi RWX enterprise-multishare-rwx 3m55s test-pvc-multishare-web-7 Bound pvc-160e81cd-c5bf-4ae6-966e-518e8249e02d 100Gi RWX enterprise-multishare-rwx 3m38s test-pvc-multishare-web-8 Bound pvc-9b52d773-2e9a-40de-881c-dc06945ba3d7 100Gi RWX enterprise-multishare-rwx 118s
Verifica el estado de la instancia de Filestore.
Ahora tienes un Deployment con dos pods de réplica, un StatefulSet con nueve pods de réplica y un total de 10 PVCs, cada uno de 100 GiB. Todos los volúmenes se empaquetan en una sola instancia de Filestore multishare.
a. En la línea de comandos, ejecuta el siguiente comando
instances list
:gcloud beta filestore instances list --project=YOUR_PROJECT_ID --region=REGION
donde:
YOUR_PROJECT_ID es el nombre del proyecto que se está usando. Por ejemplo,
my-project
.REGION es el nombre de la región que se está usando. Por ejemplo,
us-central1
.
Debería ver una respuesta similar a la siguiente:
INSTANCE_NAME LOCATION TIER CAPACITY_GB FILE_SHARE_NAME IP_ADDRESS STATE CREATE_TIME fs-a767cef8-738e-4c8e-b70b-09cbb872d016 us-central1 ENTERPRISE 1024 N/A 10.192.53.2 READY 2022-06-21T21:15:30
b. En la línea de comandos, ejecuta el siguiente comando
instances describe
:gcloud filestore instances describe fs-a767cef8-738e-4c8e-b70b-09cbb872d016 --project=YOUR_PROJECT_ID --region=REGION capacityGb: '1024' capacityStepSizeGb: '256' createTime: '2022-06-21T21:15:30.464237089Z' labels: storage_gke_io_created-by: filestore_csi_storage_gke_io storage_gke_io_storage-class-id: enterprise-multishare-rwx maxCapacityGb: '10240' maxShareCount: '10' multiShareEnabled: true name: projects/YOUR_PROJECT_ID/locations/REGION/instances/fs-a767cef8-738e-4c8e-b70b-09cbb872d016 networks: - connectMode: DIRECT_PEERING ipAddresses: - 10.192.53.2 modes: - MODE_IPV4 network: csi-filestore-test-network reservedIpRange: 10.192.53.0/26 state: READY tier: ENTERPRISE
donde:
Expande un PVC y verifica la instancia de Filestore
En esta sección se muestra cómo ampliar un PVC y verificar el tamaño de la instancia de Filestore.
Amplía un PVC.
Los PVCs, respaldados por recursos compartidos en una instancia de Filestore multishare, pueden alcanzar el tamaño máximo especificado en el parámetro
max-volume-size
. Para verificarlo, expande uno de los volúmenes asociados al StatefulSet mientras el pod lo esté usando.En la línea de comandos, ejecuta el siguiente comando para comprobar el tamaño actual del PVC de la réplica 0:
kubectl get pvc test-pvc-multishare-web-0 -o json { "apiVersion": "v1", "kind": "PersistentVolumeClaim", "metadata": { "annotations": { "pv.kubernetes.io/bind-completed": "yes", "pv.kubernetes.io/bound-by-controller": "yes", "volume.beta.kubernetes.io/storage-provisioner": "filestore.csi.storage.gke.io", "volume.kubernetes.io/storage-provisioner": "filestore.csi.storage.gke.io" }, "creationTimestamp": "2022-06-21T22:07:42Z", "finalizers": [ "kubernetes.io/pvc-protection" ], "labels": { "app": "nginx" }, "name": "test-pvc-multishare-web-0", "namespace": "default", "resourceVersion": "48395", "uid": "7aa21b5a-5343-4547-b7d7-414c16af15a7" }, "spec": { "accessModes": [ "ReadWriteMany" ], "resources": { "requests": { "storage": "100Gi" } }, "storageClassName": "enterprise-multishare-rwx", "volumeMode": "Filesystem", "volumeName": "pvc-7aa21b5a-5343-4547-b7d7-414c16af15a7" }, "status": { "accessModes": [ "ReadWriteMany" ], "capacity": { "storage": "100Gi" }, "phase": "Bound" } }
En la línea de comandos, ejecuta el siguiente comando para aumentar el tamaño a 500 GiB:
kubectl edit pvc test-pvc-multishare-web-0
El archivo se abrirá en la línea de comandos. Busca el campo
spec.resources.requests.storage
y cambia el valor a500Gi
.En la línea de comandos, ejecuta el siguiente comando para ver el cambio aplicado:
kubectl get pvc test-pvc-multishare-web-0
Debería ver una respuesta similar a la siguiente:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE test-pvc-multishare-web-0 Bound pvc-7aa21b5a-5343-4547-b7d7-414c16af15a7 500Gi RWX enterprise-multishare-rwx 28m
El controlador de CSI para Filestore ha aceptado la solicitud. Primero, ha ampliado la instancia de Filestore subyacente y, después, ha ampliado el recurso compartido que respalda el PVC.
En concreto, el controlador de CSI de Filestore ha ampliado automáticamente la instancia a 1536 Gi para adaptarse al nuevo tamaño del recurso compartido, que es de 500 Gi.
En la línea de comandos, ejecuta el siguiente comando
instances describe
para verificar la capacidad de la instancia de Filestore:gcloud filestore instances describe fs-a767cef8-738e-4c8e-b70b-09cbb872d016 --project=YOUR_PROJECT_ID --region=REGION capacityGb: '1536' capacityStepSizeGb: '256' createTime: '2022-06-21T21:15:30.464237089Z' labels: storage_gke_io_created-by: filestore_csi_storage_gke_io storage_gke_io_storage-class-id: enterprise-multishare-rwx maxCapacityGb: '10240' maxShareCount: '10' multiShareEnabled: true name: projects/YOUR_PROJECT_ID/locations/us-central1/instances/fs-a767cef8-738e-4c8e-b70b-09cbb872d016 networks: - connectMode: DIRECT_PEERING ipAddresses: - 10.192.53.2 modes: - MODE_IPV4 network: csi-filestore-test-network reservedIpRange: 10.192.53.0/26 state: READY tier: ENTERPRISE
donde:
Aprovisionamiento dinámico en una VPC compartida
El controlador CSI de Filestore para GKE admite el aprovisionamiento dinámico de volúmenes en un proyecto de servicio de una VPC compartida. En la siguiente sección se muestra cómo usar el controlador de CSI de Filestore para aprovisionar dinámicamente volúmenes en instancias de multirecurso compartido de Filestore en un proyecto de servicio de una red de VPC compartida.
Completa los pasos de configuración de una red de VPC compartida y del acceso privado a los servicios.
Crea un objeto StorageClass para aprovisionar dinámicamente volúmenes respaldados por una instancia de Filestore multishares en una VPC compartida.
Ejecuta el siguiente comando para implementar un recurso
StorageClass
:cat <<EOF | kubectl apply -f - apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: csi-filestore-multishare-sharedvpc provisioner: filestore.csi.storage.gke.io parameters: network: "projects/HOST_PROJECT_ID/global/networks/SHARED_VPC_NAME" connect-mode: PRIVATE_SERVICE_ACCESS tier: enterprise multishare: "true" allowVolumeExpansion: true EOF
donde:
HOST_PROJECT_ID es el ID o el nombre del proyecto host de la red de VPC compartida. Por ejemplo,
my-host-project
.SHARED_VPC_NAME el nombre de la red de VPC compartida. Por ejemplo,
my-shared-vpc
.
Si quieres implementar tu recurso en un intervalo de direcciones IP reservado, añade la siguiente línea a los parámetros utilizados en el comando:
reserved-ip-range: RESERVED_NAME
Donde RESERVED_NAME es el nombre del intervalo de direcciones IP reservadas en el que se puede aprovisionar una instancia de Filestore. Por ejemplo,
filestore-reserved-ip-range
. Si se especifica un intervalo de IPs reservado, debe ser un intervalo de direcciones con nombre en lugar de un valor CIDR directo.Para obtener más información, consulta Asignar intervalos de direcciones IP o Configurar un intervalo de direcciones IP reservado. Para ver un ejemplo de cómo crear un nombre reservado con la consola de Google Cloud , consulta Crear una asignación de IP.
Crea un despliegue.
Ejecuta el siguiente comando para crear un recurso
Deployment
:cat <<EOF | kubectl apply -f - apiVersion: apps/v1 kind: Deployment metadata: name: web-server-multishare labels: app: nginx spec: replicas: 5 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx volumeMounts: - mountPath: /usr/share/nginx/html name: mypvc volumes: - name: mypvc persistentVolumeClaim: claimName: test-pvc-fs-sharedvpc --- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: test-pvc-fs-sharedvpc spec: accessModes: - ReadWriteMany storageClassName: csi-filestore-multishare-sharedvpc resources: requests: storage: 100Gi EOF
Instancias de Filestore habilitadas para CMEK
Puedes crear volúmenes de GKE alojados en instancias de Filestore con varios recursos compartidos y CMEK habilitado. En esta sección, se explica cómo configurar una clave de encriptado gestionada por el cliente (CMEK) para tu instancia de Filestore.
Los detalles de la clave gestionada por el cliente se pueden proporcionar en StorageClass. Cualquier instancia creada dinámicamente por el controlador CSI de Filestore que haga referencia a esta StorageClass tendrá habilitada la CMEK.
Crea un StorageClass con CMEK habilitado.
a. Ejecuta el siguiente comando:
cat <<EOF | kubectl apply -f - apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: csi-filestore-multishare-cmek provisioner: filestore.csi.storage.gke.io parameters: tier: enterprise multishare: "true" instance-encryption-kms-key: projects/KEY_PROJECT_ID/locations/REGION/keyRings/RING_NAME/cryptoKeys/KEY_NAME allowVolumeExpansion: true EOF
donde:
KEY_PROJECT_ID es el nombre del proyecto en el que se encuentra la clave. Por ejemplo,
my-key-project
.REGION es el nombre de la región que se está usando. Por ejemplo,
us-central1
.RING_NAME el nombre del conjunto de claves. Por ejemplo,
my-key-ring-name
.KEY_NAME el nombre de la clave. Por ejemplo,
my-key-name
.
Crea un despliegue.
b. Ejecuta el siguiente comando para crear un recurso
Deployment
:cat <<EOF | kubectl apply -f - apiVersion: apps/v1 kind: Deployment metadata: name: web-server-multishare labels: app: nginx spec: replicas: 5 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx volumeMounts: - mountPath: /usr/share/nginx/html name: mypvc volumes: - name: mypvc persistentVolumeClaim: claimName: test-pvc-fs-cmek --- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: test-pvc-fs-cmek spec: accessModes: - ReadWriteMany storageClassName: csi-filestore-multishare-cmek resources: requests: storage: 100Gi EOF
Asignar PVCs a instancias de Filestore
En esta sección, se explica cómo asignar tus PVCs a tus instancias de Filestore.
En las instancias multicompartir de Filestore, el controlador de CSI de Filestore aloja cada PVC en una instancia de Filestore. Los detalles de la instancia de Filestore subyacente que aloja el volumen y el recurso compartido que representa el volumen de Kubernetes se registran en el campo volumeHandle
de la especificación de volúmenes persistentes. El formato del identificador de volumen es el siguiente:
modeMultishare/<storageclass-prefix>/<project>/<region>/<filestore-instance-name>/<filestore-share-name>
Puedes usar el siguiente comando kubectl
para determinar rápidamente las asignaciones entre un PVC, un PV, una instancia de Filestore y un recurso compartido de Filestore.
En la línea de comandos, ejecuta el siguiente comando:
kubectl get pv -o jsonpath='{range .items[*]}{"pv="}{.metadata.name}{",pvc="}{.spec.claimRef.name}{",volumeHandle="}{.spec.csi.volumeHandle}{"\n"}{end}'
Debería ver una respuesta similar a la siguiente:
pv=pvc-67ad9abd-f25e-4130-b7ca-64d28bd29525,pvc=test-pvc-multishare,volumeHandle=modeMultishare/csi-filestore-multishare-sharedvpc/YOUR_PROJECT_ID/us-central1/fs-2109f680-3f04-4ada-b4bc-2a1c7fc47b88/pvc_67ad9abd_f25e_4130_b7ca_64d28bd29525
pv=pvc-c80f4de0-9916-4957-b8ae-b21206650ac0,pvc=test-pvc-fs-sharedvpc,volumeHandle=modeMultishare/csi-filestore-multishare-sharedvpc/YOUR_PROJECT_ID/us-central1/fs-2109f680-3f04-4ada-b4bc-2a1c7fc47b88/pvc_c80f4de0_9916_4957_b8ae_b21206650ac0
donde:
- YOUR_PROJECT_ID es el nombre del proyecto
que se está usando. Por ejemplo,
my-project
.
Ten en cuenta que dos volúmenes persistentes del clúster están alojados en una sola instancia de Filestore.
Siguientes pasos
- Crea una instancia en una red de VPC compartida en proyectos de servicio.
- Compara las ventajas relativas del almacenamiento en bloques, de archivos y de objetos.
- Opciones de almacenamiento para cargas de trabajo de HPC en Google Cloud