Neste guia, mostramos como usar os compartilhamentos múltiplos do Filestore para o Google Kubernetes Engine com o driver CSI do Filestore.
Antes de começar
Antes de começar, conclua as etapas de configuração necessárias para usar o Filestore.
Ative o driver CSI do GKE Filestore, versão 1.23 ou posterior:
As versões do driver 1.23 a 1.26 permitem até dez compartilhamentos por instância.
As versões do driver 1.27 e posteriores permitem até 80 compartilhamentos por instância.
Para conferir os requisitos mais recentes de driver CSI do GKE Filestore, consulte Acessar instâncias do Filestore com o driver CSI do Filestore.
Usar os multicompartilhamentos do Filestore com vários aplicativos
Essa seção mostra como implantar dois aplicativos, uma Implantação e um Statefulset, cada um usando um StorageClass de compartilhamentos múltiplos do Filestore. Você também vai conferir como os empacotamentos do GKE (um processo para empacotar aplicativos nos nós do GKE com eficiência) em todos os volumes na mesma instância do Filestore Enterprise.
Use o StorageClass fornecido pelo GKE,
enterprise-multishare-rwx
, para criar instâncias que permitem até dez compartilhamentos.- Se você quiser criar instâncias compatíveis com até 80 compartilhamentos, será necessário criar um StorageClass personalizado. Para os fins deste guia, você usará um StorageClass com um limite de 10 compartilhamentos por instância.
Depois que o driver CSI do GKE Filestore for ativado, os usuários poderão acessar o StorageClass
enterprise-multishare-rwx
de compartilhamento fornecido pelo GKE com a configuração a seguir. Ao fazer referência a esse StorageClass, o driver CSI do GKE Filestore usa o provisionamento de volume dinâmico para criar automaticamente volumes permanentes (PVs) para novas declarações de volume permanente (PVCs, na sigla em inglês) como o GKE. demanda de carga de trabalho: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>
Criar um StorageClass personalizado
Se você quiser aproveitar o limite de capacidade mais recente de até 80 compartilhamentos por instância do Filestore, crie um StorageClass personalizado com base no seguinte modelo:
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
Ao renomear o StorageClass, considere os seguintes requisitos:
O nome do StorageClass precisa ser um nome de subdomínio de DNS válido.
O nome StorageClass de compartilhamentos múltiplos também é usado como um rótulo de instância e precisa seguir as diretrizes de nomenclatura de rótulos.
Se o aplicativo exigir provisionamento imediato de volume, inclua o modo de vinculação de volume
Immediate
:volumeBindingMode: Immediate
Use essa especificação, por exemplo, se você não quiser que o provisionamento de volume dependa da criação do pod no cluster do GKE.
A partir da versão do driver 1.27, se você quiser atribuir mais de dez compartilhamentos por instância, inclua o parâmetro
max-volume-size
e atribua a ele um dos valores aceitos na primeira coluna:Tamanho máximo do volume (tamanho do compartilhamento) Número máximo de compartilhamentos por instância 128 GiB 80 256 GiB 40 512 GiB 20 1.024 GiB 10 Por exemplo, adicionar o par de chave-valor
max-volume-size: "128Gi"
garante que o StorageClass mapeie até 80 compartilhamentos, cada um variando de 10 GiB a 128 GiB de tamanho, para uma única instância de nível empresarial de 10 TiB.Esse recurso é compatível com versões anteriores das instâncias do Filestore criadas pelo driver CSI do Filestore nas versões 1.23 a 1.26.
As instâncias atuais podem criar novos PVCs, ou compartilhamentos, com o tamanho de compartilhamento mínimo estendido de 10 GiB.
A versão 1.27 do driver CSI do GKE Filestore reconhece instâncias corporativas legadas e atribui a elas o tamanho máximo de compartilhamento padrão de 1.024 GiB (1 TiB). Com isso, as instâncias legadas são limitadas a uma contagem máxima de dez compartilhamentos por instância.
Para mais informações, consulte Multicompartilhamentos do Filestore para o GKE.
Crie uma implantação com várias réplicas de pod usando um único PVC.
Crie um arquivo de configuração YAML semelhante ao seguinte:
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
Verifique as réplicas do pod.
a. Na linha de comando, execute o seguinte comando para verificar o status do PVC:
kubectl get pvc
Você verá algo parecido com a seguinte resposta:
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. Na linha de comando, execute o seguinte comando para verificar o status do pod:
kubectl get pod
Você verá algo parecido com a seguinte resposta:
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
Réplicas de escalonamento.
a. Na linha de comando, execute o seguinte para editar a implantação:
kubectl edit deployment web-server-multishare
b. O arquivo será aberto na linha de comando. Encontre o campo
spec.replicas
e atualize o valor para10
.c. Na linha de comando, execute o seguinte comando para conferir a alteração aplicada:
kubectl get pod
Você verá algo parecido com a seguinte resposta:
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
Observe que dez pods estão em execução.
d. Na linha de comando, execute o seguinte comando:
kubectl get deployment
Você verá algo parecido com a seguinte resposta:
NAME READY UP-TO-DATE AVAILABLE AGE web-server-multishare 10/10 10 10 36m
e. Na linha de comando, execute o seguinte comando para verificar o status da vinculação de PVC:
kubectl get pvc
Você verá algo parecido com a seguinte resposta:
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. Na linha de comando, execute o seguinte para editar a implantação:
kubectl edit deployment web-server-multishare
g. O arquivo será aberto na linha de comando. Encontre o campo
spec.replicas
e atualize o valor para2
.h. Na linha de comando, execute o seguinte comando para conferir a alteração aplicada:
kubectl get pod
Você verá algo parecido com a seguinte resposta:
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
Implantar um Statefulset.
Implante um segundo aplicativo que compartilhe a instância do Filestore.
Para fazer isso, provisione 200 GiB de espaço e confirme se ele usa a mesma instância do Filestore do primeiro aplicativo.
Em seguida, você escalonará o aplicativo para nove réplicas usando 900 GiB no total (9 réplicas usando 100 GiB cada) e verificará se o GKE usa a mesma instância do Filestore ao compartilhá-la.
Crie um arquivo de configuração YAML semelhante ao seguinte:
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
Verifique as réplicas e os volumes do Statefulset.
Na linha de comando, execute o seguinte comando:
kubectl get pod
Você verá algo parecido com a seguinte resposta:
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
Os dois primeiros pods esterão associados ao Statefulset. Os dois últimos pods estarão associados à implantação.
Na linha de comando, execute o seguinte comando:
kubectl get statefulset
Você verá algo parecido com a seguinte resposta:
NAME READY AGE web 2/2 2m8s
Na linha de comando, execute o seguinte comando:
kubectl get pvc
Você verá algo parecido com a seguinte resposta:
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
O
test-pvc-fs
do PVC está associado aoweb-server-multishare
de implantação.Os PVCs
test-pvc-multishare-web-0
etest-pvc-multishare-web-1
estão associados ao Statefulset.Escalone as réplicas do Statefulset.
Aumente a contagem de réplicas para nove. À medida que a contagem aumenta, os PVCs correspondentes são criados.
a. Na linha de comando, execute o seguinte comando:
kubectl edit statefulset web
b. O arquivo será aberto na linha de comando. Encontre o campo
spec.replicas
e atualize o valor para9
.c. Na linha de comando, execute o seguinte comando para conferir a alteração aplicada:
kubectl get statefulset
Você verá algo parecido com a seguinte resposta:
NAME READY AGE web 9/9 13m
d. Na linha de comando, execute o seguinte comando:
kubectl get deployment
Você verá algo parecido com a seguinte resposta:
NAME READY UP-TO-DATE AVAILABLE AGE web-server-multishare 2/2 2 2 65m
e. Na linha de comando, execute o seguinte comando:
kubectl get pvc
Você verá algo parecido com a seguinte resposta:
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
Verifique o estado da instância do Filestore.
Agora, você tem uma implantação com dois pods de réplica e um Statefulset com nove pods de réplica, além do total de dez PVCs, cada um com tamanho de 100 GiB. Todos os volumes são agrupados em uma única instância de compartilhamento múltiplo do Filestore.
a. Na linha de comando, execute o seguinte comando
instances list
:gcloud beta filestore instances list --project=YOUR_PROJECT_ID --region=REGION
em que:
YOUR_PROJECT_ID é o nome do projeto que está sendo usado. Por exemplo,
my-project
.REGION é o nome da região que está sendo usada. Por exemplo,
us-central1
.
Você verá algo parecido com a seguinte resposta:
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. Na linha de comando, execute o seguinte 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
em que:
Expanda um PVC e verifique a instância do Filestore
Nesta seção, mostramos como expandir um PVC atual e verificar o tamanho da instância do Filestore.
Expanda um PVC.
Os PVCs, apoiados por compartilhamentos em uma instância de compartilhamento múltiplo do Filestore, podem crescer até o tamanho máximo especificado no parâmetro
max-volume-size
. Para verificar isso, expanda um dos volumes associados ao Statefulset enquanto o pod estiver usando-o.Na linha de comando, execute o seguinte comando para verificar o tamanho atual do PVC da 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" } }
Na linha de comando, execute o seguinte comando para aumentar o tamanho para 500 GiB:
kubectl edit pvc test-pvc-multishare-web-0
O arquivo será aberto na linha de comando. Encontre o campo
spec.resources.requests.storage
e atualize o valor para500Gi
.Na linha de comando, execute o seguinte comando para conferir a alteração aplicada:
kubectl get pvc test-pvc-multishare-web-0
Você verá algo parecido com a seguinte resposta:
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
O driver CSI do Filestore aceitou a solicitação, primeiro expandindo a instância do Filestore e, em seguida, expandindo o compartilhamento do PVC.
Especificamente, o driver CSI do Filestore expandiu automaticamente a instância para 1.536 Gi para acomodar o novo tamanho de compartilhamento de 500 Gi.
Na linha de comando, execute o seguinte comando
instances describe
para verificar a capacidade da instância do 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
em que:
Provisionamento dinâmico em uma VPC compartilhada
O driver CSI do Filestore para GKE oferece suporte ao provisionamento dinâmico de volumes em um projeto de serviço em uma VPC compartilhada. A seção a seguir mostra como usar o driver CSI do Filestore para provisionar dinamicamente volumes nas instâncias de compartilhamento múltiplo do Filestore em um projeto de serviço em uma rede VPC compartilhada.
Conclua as etapas de configuração para uma rede VPC compartilhada e acesso a serviços particulares.
Crie um StorageClass para provisionar dinamicamente volumes com suporte de uma instância de compartilhamento múltiplo do Filestore em uma VPC compartilhada.
Execute o seguinte comando para implantar um 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
em que:
HOST_PROJECT_ID é o ID ou o nome do projeto host da rede VPC compartilhada. Por exemplo,
my-host-project
.SHARED_VPC_NAME o nome da rede rede VPC compartilhada. Por exemplo,
my-shared-vpc
.
Se você quiser implantar o recurso em um intervalo de endereços IP reservado, adicione a seguinte linha aos parâmetros usados no comando:
reserved-ip-range: RESERVED_NAME
Quando RESERVED_NAME é o nome do intervalo de endereços IP reservado, uma instância do Filestore pode ser provisionada. Por exemplo,
filestore-reserved-ip-range
. Se um intervalo de IP reservado for especificado, ele precisará ser um intervalo de endereços nomeado em vez de um valor de CIDR direto.Para mais informações, consulte Alocar intervalos de endereços IP ou Como configurar um intervalo de endereços IP reservados. Para conferir um exemplo de como criar um nome reservado usando o console do Google Cloud, consulte Criar uma alocação de IP.
Crie uma implantação.
Execute o seguinte comando para criar um 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
Instâncias do Filestore ativadas para CMEK
É possível criar volumes do GKE hospedados em instâncias de compartilhamento múltiplo do Filestore ativadas para CMEK. Nesta seção, você verá como configurar uma chave de criptografia gerenciada pelo cliente (CMEK) para a instância do Filestore.
Os detalhes da chave gerenciada pelo cliente podem ser obtidos no StorageClass. Qualquer instância criada dinamicamente pelo driver CSI do Filestore, que faz referência a esse StorageClass, terá a CMEK ativada.
Criar um StorageClass habilitado para CMEK.
a. Execute este 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
em que:
Crie uma implantação.
b. Execute o seguinte comando para criar um 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
Associar PVCs a instâncias do Filestore
Nesta seção, você verá como associar os PVCs às instâncias do Filestore.
Com as instâncias de compartilhamento múltiplo do Filestore, cada PVC é hospedado em uma
instância do Filestore pelo driver CSI do Filestore. Os
detalhes da instância do Filestore que hospeda o volume e
a parcela que representa o volume do Kubernetes são capturados no campo volumeHandle
da especificação de volumes permanentes. O formato do identificador de volume é o
seguinte:
modeMultishare/<storageclass-prefix>/<project>/<region>/<filestore-instance-name>/<filestore-share-name>
O comando kubectl
a seguir pode ser usado para determinar rapidamente os mapeamentos
entre um PVC, um PV, uma instância do Filestore e um compartilhamento
do Filestore.
Na linha de comando, execute o seguinte comando:
kubectl get pv -o jsonpath='{range .items[*]}{"pv="}{.metadata.name}{",pvc="}{.spec.claimRef.name}{",volumeHandle="}{.spec.csi.volumeHandle}{"\n"}{end}'
Você verá algo parecido com a seguinte resposta:
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
em que:
- YOUR_PROJECT_ID é o nome do projeto que está sendo usado. Por exemplo,
my-project
.
Os dois volumes permanentes no cluster são hospedados em uma única instância do Filestore.
A seguir
- Crie uma instância em uma rede VPC compartilhada em projetos de serviço.
- Compare as vantagens relativas de armazenamento de objetos, blocos e arquivos.
- Opções de armazenamento para cargas de trabalho de HPC no Google Cloud.