Este guia mostra como usar partilhas múltiplas do Filestore para o Google Kubernetes Engine com o controlador CSI do Filestore do GKE.
Antes de começar
Antes de começar, conclua os passos de configuração necessários para usar o Filestore.
Ative o controlador CSI do GKE Filestore, versão 1.23 ou posterior:
As versões 1.23 a 1.26 dos controladores suportam até 10 partilhas por instância.
As versões 1.27 ou posteriores dos controladores suportam até 80 partilhas por instância.
Para ver os requisitos mais recentes do controlador CSI do GKE Filestore, consulte o artigo Aceda a instâncias do Filestore com o controlador CSI do Filestore.
Use partilhas múltiplas do Filestore com várias aplicações
Esta secção mostra como implementar duas aplicações, uma implementação e um conjunto com estado, cada uma a usar uma StorageClass de partilhas múltiplas do Filestore. Também verá como o GKE agrupa os contentores (um processo para agrupar eficientemente as aplicações nos seus nós do GKE) todos os volumes na mesma instância empresarial subjacente do Filestore.
Use a StorageClass fornecida pelo GKE,
enterprise-multishare-rwx
, para criar instâncias que suportam até 10 partilhas.- Se quiser criar instâncias que suportem até 80 partilhas, tem de criar uma StorageClass personalizada. Para os fins deste guia, vai usar uma StorageClass com um limite de dez partilhas por instância.
Depois de o controlador CSI do GKE Filestore estar ativado, os utilizadores podem aceder à StorageClass de partilha múltipla fornecida pelo GKE
enterprise-multishare-rwx
com a seguinte configuração. Ao fazer referência a esta StorageClass, o controlador CSI do GKE Filestore usa o aprovisionamento dinâmico de volumes para criar automaticamente volumes persistentes (PVs) para novas reivindicações de volumes persistentes (PVCs) conforme a procura de cargas de trabalho do GKE exige: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>
Crie uma StorageClass personalizada
Se quiser tirar partido do limite de capacidade mais recente de até 80 partilhas por instância do Filestore, crie uma StorageClass personalizada 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 mudar o nome da StorageClass, considere os seguintes requisitos:
O nome StorageClass tem de ser um nome de subdomínio DNS válido.
O nome da StorageClass de partilha múltipla também é usado como uma etiqueta de instância e deve seguir as diretrizes de nomenclatura de etiquetas.
Se a sua aplicação exigir o aprovisionamento imediato de volume, inclua o
Immediate
modo de associação de volume:volumeBindingMode: Immediate
Use esta especificação, por exemplo, se não quiser que o aprovisionamento de volumes dependa da criação de pods no cluster do GKE.
A partir da versão 1.27 do controlador, se quiser atribuir mais de 10 ações por instância, inclua o parâmetro
max-volume-size
e atribua-lhe um dos valores aceites da primeira coluna:Tamanho máximo do volume (tamanho da partilha) Número máximo de partilhas por instância 128 GiB 80 256 GiB 40 512 GiB 20 1024 GiB 10 Por exemplo, a adição do par chave-valor
max-volume-size: "128Gi"
garante que a StorageClass é mapeada para 80 partilhas, cada uma com um tamanho que varia entre 10 GiB e 128 GiB, para uma única instância de nível empresarial de 10 TiB.Esta capacidade é retrocompatível com instâncias do Filestore criadas pelas versões 1.23 a 1.26 do controlador CSI do Filestore do GKE.
As instâncias existentes podem criar novos PVCs ou partilhas com o tamanho mínimo de partilha alargado de 10 GiB.
A versão 1.27 ou posterior do controlador CSI do GKE Filestore reconhece instâncias empresariais antigas e atribui-lhes um tamanho máximo de partilha predefinido de 1024 GiB (1 TiB). Como resultado, as instâncias antigas estão limitadas a um máximo de 10 partilhas por instância.
Para mais informações, consulte o artigo Partilhas múltiplas do Filestore para o GKE.
Crie uma implementação com várias réplicas de pods usando um único PVC.
Crie um ficheiro 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 de pods.
a. Na linha de comandos, execute o seguinte comando para verificar o estado do PVC:
kubectl get pvc
Deve ver algo semelhante à 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 comandos, execute o seguinte comando para verificar o estado do pod:
kubectl get pod
Deve ver algo semelhante à 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 à escala.
a. Na linha de comandos, execute o seguinte comando para editar a implementação:
kubectl edit deployment web-server-multishare
b. O ficheiro é aberto na linha de comandos. Encontre o campo
spec.replicas
e atualize o valor para10
.c. Na linha de comandos, execute o seguinte comando para ver a alteração aplicada:
kubectl get pod
Deve ver algo semelhante à 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
Repare que estão a ser executados 10 agrupamentos.
d. Na linha de comandos, execute o seguinte comando:
kubectl get deployment
Deve ver algo semelhante à seguinte resposta:
NAME READY UP-TO-DATE AVAILABLE AGE web-server-multishare 10/10 10 10 36m
e. Na linha de comandos, execute o seguinte comando para verificar o estado de associação do PVC:
kubectl get pvc
Deve ver algo semelhante à 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 comandos, execute o seguinte comando para editar a implementação:
kubectl edit deployment web-server-multishare
g. O ficheiro é aberto na linha de comandos. Encontre o campo
spec.replicas
e atualize o valor para2
.h. Na linha de comandos, execute o seguinte comando para ver a alteração aplicada:
kubectl get pod
Deve ver algo semelhante à 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
Implemente um Statefulset.
Implemente uma segunda aplicação que partilhe a instância do Filestore subjacente.
Para tal, aprovisione 200 GiB de espaço e valide se usa a mesma instância subjacente do Filestore que a primeira aplicação.
Em seguida, vai dimensionar a aplicação para nove réplicas com um total de 900 GiB (9 réplicas com 100 GiB cada) e verificar se o GKE usa a mesma instância do Filestore partilhando a instância.
Crie um ficheiro 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 comandos, execute o seguinte comando:
kubectl get pod
Deve ver algo semelhante à 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
Repare que os dois primeiros pods estão associados ao Statefulset. Os dois últimos pods estão associados à implementação.
Na linha de comandos, execute o seguinte comando:
kubectl get statefulset
Deve ver algo semelhante à seguinte resposta:
NAME READY AGE web 2/2 2m8s
Na linha de comandos, execute o seguinte comando:
kubectl get pvc
Deve ver algo semelhante à 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 PVC
test-pvc-fs
está associado à implementaçãoweb-server-multishare
.Os PVCs
test-pvc-multishare-web-0
etest-pvc-multishare-web-1
estão associados ao Statefulset.Aumente a escala das réplicas do Statefulset.
Aumentar o número de réplicas para nove. À medida que a contagem aumenta, são criados os PVCs correspondentes.
a. Na linha de comandos, execute o seguinte comando:
kubectl edit statefulset web
b. O ficheiro é aberto na linha de comandos. Encontre o campo
spec.replicas
e atualize o valor para9
.c. Na linha de comandos, execute o seguinte comando para ver a alteração aplicada:
kubectl get statefulset
Deve ver algo semelhante à seguinte resposta:
NAME READY AGE web 9/9 13m
d. Na linha de comandos, execute o seguinte comando:
kubectl get deployment
Deve ver algo semelhante à seguinte resposta:
NAME READY UP-TO-DATE AVAILABLE AGE web-server-multishare 2/2 2 2 65m
e. Na linha de comandos, execute o seguinte comando:
kubectl get pvc
Deve ver algo semelhante à 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
Valide o estado da instância do Filestore.
Agora, tem uma implementação com dois pods de réplica, um Statefulset com nove pods de réplica e um total de 10 PVCs, cada um com 100 GiB. Todos os volumes estão compactados numa única instância de partilha múltipla do Filestore.
a. Na linha de comandos, execute o seguinte comando
instances list
:gcloud beta filestore instances list --project=YOUR_PROJECT_ID --region=REGION
where:
YOUR_PROJECT_ID é o nome do projeto que está a ser usado. Por exemplo,
my-project
.REGION é o nome da região que está a ser usada. Por exemplo,
us-central1
.
Deve ver algo semelhante à 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 comandos, 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
where:
Expanda um PVC e valide a instância do Filestore
Esta secção mostra como expandir um PVC existente e validar o tamanho da instância do Filestore.
Expanda um PVC.
Os PVCs, suportados por partilhas numa instância de partilha múltipla do Filestore, podem crescer até ao tamanho máximo especificado no parâmetro
max-volume-size
. Para validar esta situação, expanda um dos volumes associados ao Statefulset enquanto o pod o estiver a usar.Na linha de comandos, 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 comandos, execute o seguinte comando para aumentar o tamanho para 500 GiB:
kubectl edit pvc test-pvc-multishare-web-0
O ficheiro é aberto na linha de comandos. Encontre o campo
spec.resources.requests.storage
e atualize o valor para500Gi
.Na linha de comandos, execute o seguinte comando para ver a alteração aplicada:
kubectl get pvc test-pvc-multishare-web-0
Deve ver algo semelhante à 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 controlador CSI do Filestore aceitou o pedido, primeiro, expandindo a instância do Filestore subjacente e, em seguida, expandindo a partilha que suporta o PVC.
Especificamente, o controlador CSI do Filestore expandiu automaticamente a instância para 1536 Gi para acomodar o novo tamanho da partilha de 500 Gi.
Na linha de comandos, 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
where:
Aprovisionamento dinâmico numa VPC partilhada
O controlador CSI do Filestore para o GKE suporta o aprovisionamento dinâmico de volumes num projeto de serviço numa VPC partilhada. A secção seguinte mostra como usar o controlador CSI do Filestore para aprovisionar dinamicamente volumes em instâncias de partilha múltipla do Filestore num projeto de serviço numa rede de VPC partilhada.
Conclua os passos de configuração para uma rede de VPC partilhada e acesso a serviços privados.
Crie uma StorageClass para aprovisionar dinamicamente volumes suportados por uma instância de partilhas múltiplas do Filestore numa VPC partilhada.
Execute o seguinte comando para implementar 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
where:
HOST_PROJECT_ID é o ID ou o nome do projeto do anfitrião da rede VPC partilhada. Por exemplo,
my-host-project
.SHARED_VPC_NAME o nome da rede VPC partilhada. Por exemplo,
my-shared-vpc
.
Se quiser implementar o seu recurso num intervalo de endereços IP reservados, adicione a seguinte linha aos parâmetros usados no comando:
reserved-ip-range: RESERVED_NAME
Onde RESERVED_NAME é o nome do intervalo de endereços IP reservados no qual é possível aprovisionar uma instância do Filestore. Por exemplo,
filestore-reserved-ip-range
. Se for especificado um intervalo de IPs reservado, tem de ser um intervalo de endereços com nome em vez de um valor CIDR direto.Para mais informações, consulte os artigos Atribua intervalos de endereços IP ou Configure um intervalo de endereços IP reservados. Para ver um exemplo de como criar um nome reservado através da Google Cloud consola, consulte o artigo Crie uma atribuição de IP.
Crie uma implementaçã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 com CMEK ativadas
Pode criar volumes do GKE alojados em instâncias de partilha múltipla do Filestore com CMEK ativada. Nesta secção, vai ver como configurar uma chave de encriptação gerida pelo cliente (CMEK) para a sua instância do Filestore.
Os detalhes da chave gerida pelo cliente podem ser fornecidos na StorageClass. Qualquer instância criada dinamicamente pelo controlador CSI do Filestore, que faça referência a esta StorageClass, terá a CMEK ativada.
Crie uma StorageClass com CMEK ativada.
a. Execute o seguinte 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
where:
Crie uma implementaçã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
Mapeie PVCs para instâncias do Filestore
Nesta secção, vai ver como mapear os seus PVCs para as suas instâncias do Filestore.
Com as instâncias de partilha múltipla do Filestore, cada PVC é alojado numa instância do Filestore pelo controlador CSI do Filestore. Os detalhes da instância do Filestore subjacente que aloja o volume e a partilha que representa o volume do Kubernetes são capturados no campo volumeHandle
da especificação de volumes persistentes. O formato do identificador de volume é o seguinte:
modeMultishare/<storageclass-prefix>/<project>/<region>/<filestore-instance-name>/<filestore-share-name>
Pode usar o seguinte comando kubectl
para determinar rapidamente os mapeamentos entre um PVC, um PV, uma instância do Filestore e uma partilha do Filestore.
Na linha de comandos, execute o seguinte comando:
kubectl get pv -o jsonpath='{range .items[*]}{"pv="}{.metadata.name}{",pvc="}{.spec.claimRef.name}{",volumeHandle="}{.spec.csi.volumeHandle}{"\n"}{end}'
Deve ver algo semelhante à 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
where:
- YOUR_PROJECT_ID é o nome do projeto
que está a ser usado. Por exemplo,
my-project
.
Repare que dois volumes persistentes no cluster estão alojados numa única instância do Filestore.
O que se segue?
- Crie uma instância numa rede VPC partilhada em projetos de serviço.
- Compare as vantagens relativas do armazenamento em bloco, de ficheiros e de objetos.
- Opções de armazenamento para cargas de trabalho de HPC no Google Cloud.