Esta página mostra como usar hardware de armazenamento externo, como Persistent Disks do Compute Engine, como volumes efémeros nas suas cargas de trabalho do Google Kubernetes Engine (GKE). Já deve estar familiarizado com os Volumes Kubernetes e as StorageClasses.
Quando usar o armazenamento efémero no Kubernetes
O armazenamento efémero é útil em qualquer situação em que as suas cargas de trabalho apenas precisem dos dados durante o ciclo de vida da aplicação, como para pipelines de processamento de dados, tarefas de aprendizagem automática, processamento em lote, colocação em cache local ou estatísticas. Por predefinição, parte do disco de arranque do nó do GKE está disponível para utilização como armazenamento efémero nos seus pods. Esta abordagem requer frequentemente um planeamento cuidadoso do espaço.
Os volumes efémeros genéricos do Kubernetes permitem-lhe pedir explicitamente armazenamento efémero para os seus pods através de PersistentVolumeClaims. O GKE aprovisiona dinamicamente discos persistentes do Compute Engine e anexa-os aos seus nós. Este tipo de armazenamento efémero é útil em situações como as seguintes:
- As suas cargas de trabalho têm requisitos de desempenho elevados, pelo que tem de controlar o hardware de armazenamento.
- Precisa de armazenamento efémero de curto prazo específico do contentor.
- Quer evitar usar
emptyDir
para aprovisionar armazenamento temporário.emptyDir
Os volumes continuam a ser úteis em situações em que quer que vários contentores partilhem os dados no armazenamento efémero. - Quiser uma capacidade de armazenamento efémero superior aos predefinições incorporadas do GKE.
- Quer evitar ter de planear o tamanho e o tipo do disco de arranque do nó antecipadamente para clusters do GKE no modo Standard.
Tipos de armazenamento temporário no GKE
Em geral, pode usar a capacidade de armazenamento do disco de arranque ou os discos persistentes dedicados como armazenamento efémero nos seus pods e contentores. A tabela seguinte descreve as diferenças:
Tipo de armazenamento | Como usar | Descrição |
---|---|---|
Disco de arranque – Discos persistentes | Monte um volume com Para ver instruções, consulte a secção Criar volumes. |
O armazenamento efémero pedido é retirado de uma parte reservada do disco de arranque do nó. Esta é a predefinição nos clusters do Autopilot e Standard. Use quando os pods têm pequenos pedidos de armazenamento efémero ou quando quer partilhar os dados efémeros entre vários contentores no pod. Autopilot
Padrão Sem limite de tamanho, mas requer um planeamento cuidadoso do tamanho do disco de arranque do nó e do tipo de hardware de armazenamento. Para ver detalhes sobre como o GKE calcula a reserva de armazenamento efémero no disco de arranque do nó, consulte o artigo Reserva de armazenamento efémero local. |
Discos SSD locais |
Para ver instruções, consulte o artigo Aprovisione armazenamento efémero com SSDs locais. |
Os discos SSD locais usam incrementos fixos de 375 GB suportados
em clusters do GKE no modo padrão e em nós
do Autopilot que executam GPUs A100 (80 GB).
Use quando precisar de armazenamento efémero com um elevado débito. Para ver detalhes, consulte o artigo Acerca dos SSDs locais para o GKE. |
Discos persistentes dedicados |
Este documento fornece instruções para pedir este tipo de armazenamento efémero. |
Google Cloud aprovisiona dinamicamente o hardware externo pedido, anexa-o aos seus nós e monta o volume pedido no seu pod. Use quando os pods tiverem pedidos de armazenamento temporário grandes ou quando quiser controlar o tipo de disco persistente subjacente. Estes volumes têm as seguintes propriedades:
Para ver detalhes acerca deste tipo de volume efémero, consulte o artigo Volumes efémeros genéricos. |
Preços
O armazenamento aprovisionado através de volumes efémeros genéricos, conforme descrito neste guia, é faturado com base nos preços dos discos do Compute Engine.
Antes de começar
Antes de começar, certifique-se de que realizou as seguintes tarefas:
- Ative a API Google Kubernetes Engine. Ative a API Google Kubernetes Engine
- Se quiser usar a CLI gcloud para esta tarefa,
instale-a e, em seguida,
inicialize-a. Se instalou anteriormente a CLI gcloud, execute
gcloud components update
para obter a versão mais recente.
- Certifique-se de que tem um cluster do GKE Autopilot ou Standard a executar a versão 1.23 ou posterior.
- Certifique-se de que tem quota suficiente no seu Google Cloud projeto para o hardware de armazenamento. Para gerir a sua quota, consulte o artigo Veja e faça a gestão das quotas.
Crie uma StorageClass
A criação de uma StorageClass do Kubernetes personalizada permite-lhe especificar o tipo de armazenamento a aprovisionar com base nos seus requisitos de preço e desempenho. Este passo é opcional, mas recomendado. Se quiser usar a StorageClass predefinida do GKE, que tem o tipo de disco persistente pd-balanced
, ignore este passo.
Guarde o seguinte manifesto como
ephemeral-pd-class.yaml
:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: ephemeral-ssd provisioner: pd.csi.storage.gke.io volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true parameters: type: STORAGE_TYPE
Substitua
STORAGE_TYPE
pelo nome do tipo de disco persistente que quer, comopd-ssd
. Para ver uma lista dos tipos suportados, consulte o artigo Tipos de Persistent Disk na documentação do Compute Engine.Crie a StorageClass:
kubectl create -f ephemeral-pd-class.yaml
Peça capacidade de armazenamento efémero num agrupamento
Para aprovisionar, anexar e usar hardware externo como armazenamento efémero, adicione o volume correspondente ao manifesto do pod e adicione uma montagem de volume à especificação do contentor.
Guarde o seguinte manifesto como
ephemeral-ssd-deployment.yaml
:apiVersion: apps/v1 kind: Deployment metadata: name: ephemeral-deployment spec: replicas: 1 selector: matchLabels: storage: ephemeral template: metadata: labels: storage: ephemeral spec: containers: - name: ephemeral-container image: nginx resources: requests: cpu: 500m memory: 2Gi ephemeral-storage: 2Gi volumeMounts: - mountPath: "/short-term" name: ephemeral-volume volumes: - name: ephemeral-volume ephemeral: volumeClaimTemplate: metadata: labels: type: ephemeral spec: accessModes: ["ReadWriteOnce"] storageClassName: "ephemeral-ssd" resources: requests: storage: 1Ti
Este manifesto cria um novo Kubernetes PersistentVolumeClaim que pede um novo PersistentVolume denominado
ephemeral-volume
com as seguintes propriedades:spec.volumes.ephemeral
: oephemeral
tipo de volume..spec.accessModes
: o modo de acesso ao volume, que determina o acesso de leitura/escrita dos pods e a partilha de volumes entre nós. Estes exemplos usamReadWriteOnce
, que monta o PersistentVolume num único nó para acesso por um ou mais pods no nó. Para ver detalhes, consulte a secção Modos de acesso..spec.storageClassName
: opcionalmente, o nome da StorageClass que criou. Se omitir este campo, o GKE usa a StorageClass predefinida e aprovisiona um disco persistentepd-balanced
..spec.resources.requests.storage
: a capacidade de armazenamento que quer.
Crie a implementação:
kubectl create -f ephemeral-ssd-deployment.yaml
O GKE aprovisiona um disco do Compute Engine que cumpre os requisitos do PersistentVolumeClaim e associa o disco ao nó. O GKE monta o volume no pod e fornece a capacidade pedida ao contentor.
Confirme se o GKE montou um volume efémero
Crie uma sessão de shell no pod:
kubectl exec -it deploy/ephemeral-deployment -- bash
Verifique os volumes montados:
df -h
O resultado é semelhante ao seguinte:
Filesystem Size Used Available Use% Mounted on ... /dev/sdb 1006.9G 28.0K 1006.8G 0% /short-term /dev/sda1 94.3G 3.6G 90.6G 4% /etc/hosts /dev/sda1 94.3G 3.6G 90.6G 4% /dev/termination-log /dev/sda1 94.3G 3.6G 90.6G 4% /etc/hostname /dev/sda1 94.3G 3.6G 90.6G 4% /etc/resolv.conf ...
Sair da sessão de shell:
exit