Nesta página, explicamos como provisionar armazenamento SSD local nos clusters do Google Kubernetes Engine (GKE) e como configurar cargas de trabalho para consumir dados do armazenamento temporário via SSD local anexado aos nós no cluster.
Para saber mais sobre o suporte ao SSD local no GKE, consulte Sobre o armazenamento SSD local.
Antes de começar
Antes de começar, verifique se você realizou as tarefas a seguir:
- Ativar a API Google Kubernetes Engine. Ativar a API Google Kubernetes Engine
- Se você quiser usar a Google Cloud CLI para essa tarefa,
instale e, em seguida,
inicialize a
CLI gcloud. Se você instalou a CLI gcloud anteriormente, instale a versão
mais recente executando
gcloud components update
.
Criar um cluster ou pool de nós com armazenamento temporário via SSD local
Use a CLI do Google Cloud para criar um cluster ou pool de nós com armazenamento temporário via SSD local.
Use a opção --ephemeral-storage-local-ssd
para anexar o armazenamento temporário local totalmente gerenciado por volumes SSD locais. Esse armazenamento é vinculado ao ciclo de vida dos pods.
Quando os pods solicitam armazenamento temporário, o GKE programa-os para serem executados em nós que tenham volumes SSD locais configurados como armazenamento temporário. Se você quiser um controle mais especializado ou granular sobre os SSDs locais, recomendamos o uso do armazenamento em blocos bruto com suporte de SSD local.
Se o escalonamento automático de clusters estiver ativado, o GKE fará o escalonamento automático dos nós quando o cluster precisar de mais espaço de armazenamento temporário. Seus pods podem acessar dados em volumes SSD locais pelo volume emptyDir
.
O comando da gcloud CLI que você executa para criar o cluster ou o pool de nós depende da geração da série do tipo de máquina selecionado. Por exemplo, os tipos de máquina N1 e N2 pertencem a uma série de primeira e segunda geração, respectivamente, enquanto os tipos de máquina C3 pertencem a uma série de terceira geração.
Criar um cluster com SSD local
1ª ou 2ª geração
Se você estiver usando um tipo de máquina com uma série de primeira ou segunda geração,
crie seu cluster especificando a
opção --ephemeral-storage-local-ssd count=NUMBER_OF_DISKS
. Essa opção provisiona o número especificado de volumes SSD locais
em cada nó a ser usado para armazenamento temporário do kubelet.
Essas configurações se aplicam apenas ao pool de nós padrão. Se os pools de nós subsequentes precisarem de SSD local, especifique isso durante a criação do pool de nós.
Para criar um cluster em execução no GKE versão 1.25.3-gke.1800 ou posterior em que o pool padrão usa volumes SSD locais, execute o seguinte comando:
gcloud container clusters create CLUSTER_NAME \
--ephemeral-storage-local-ssd count=NUMBER_OF_DISKS \
--machine-type=MACHINE_TYPE \
--release-channel CHANNEL_NAME
Substitua:
CLUSTER_NAME
: o nome do cluster.NUMBER_OF_DISKS
: o número dos volumes SSD locais a serem provisionados em cada nó. Esses volumes são combinados em um único volume lógico durante a configuração do nó. O número máximo de volumes varia de acordo com o tipo de máquina e região. Lembre-se que uma parte da capacidade do SSD local é reservada para uso do sistema.MACHINE_TYPE
: o tipo de máquina a ser usado. Esse campo é obrigatório, já que o SSD local não pode ser usado com o tipoe2-medium
padrão.CHANNEL_NAME
: um canal de lançamento que inclui versões do GKE posteriores à 1.25.3-gke.1800. Se preferir não usar um canal de lançamento, use a flag--cluster-version
no lugar de--release-channel
, especificando uma versão válida posterior à 1.25.3-gke.1800. Para determinar as versões válidas, use o comandogcloud container get-server-config
.
3ª geração
Se você usar um tipo de máquina com uma série de terceira geração, não precisará especificar uma opção de SSD local ao criar um cluster. O número de discos anexados a cada nó depende do tipo de máquina.
Para criar um cluster, execute o seguinte comando:
gcloud container clusters create CLUSTER_NAME \
--machine-type=MACHINE_TYPE \
--cluster-version CLUSTER_VERSION
Substitua:
CLUSTER_NAME
: o nome do cluster.MACHINE_TYPE
: o tipo de máquina a ser usado com uma série de terceira geração.CLUSTER_VERSION
: uma versão do cluster do GKE que permite SSD local em tipos de máquina com uma série de terceira geração.
Criar um pool de nós com SSD local
1ª ou 2ª geração
Para criar um pool de nós em execução no GKE versão 1.25.3-gke.1800 ou posterior que usa volumes SSD locais, execute o seguinte comando:
gcloud container node-pools create POOL_NAME \
--cluster=CLUSTER_NAME \
--ephemeral-storage-local-ssd count=NUMBER_OF_DISKS \
--machine-type=MACHINE_TYPE
Substitua:
POOL_NAME
: o nome do novo pool de nós.CLUSTER_NAME
: o nome do cluster.NUMBER_OF_DISKS
: o número dos volumes SSD locais a serem provisionados em cada nó. Esses volumes são combinados em um único volume lógico durante a configuração do nó. O número máximo de volumes varia de acordo com o tipo de máquina e região. Lembre-se que uma parte da capacidade do SSD local é reservada para uso do sistema.MACHINE_TYPE
: o tipo de máquina a ser usado. Esse campo é obrigatório, já que o SSD local não pode ser usado com o tipoe2-medium
padrão.
3ª geração
Se você usar um tipo de máquina com uma série de terceira geração, não precisará especificar uma opção de SSD local ao criar um pool de nós. O número de volumes anexados a cada nó depende do tipo de máquina.
Para criar um pool de nós, execute o comando a seguir:
gcloud container node-pools create POOL_NAME \
--cluster=CLUSTER_NAME \
--machine-type=MACHINE_TYPE \
--node-version NODE_VERSION
Substitua:
POOL_NAME
: o nome do novo pool de nós.CLUSTER_NAME
: o nome do cluster.MACHINE_TYPE
: o tipo de máquina a ser usado com uma série de terceira geração.NODE_VERSION
: uma versão do pool de nós do GKE que permite SSD local em tipos de máquina com uma série de terceira geração.
Os nós no pool de nós são criados com um rótulo
cloud.google.com/gke-ephemeral-storage-local-ssd=true
. Você pode verificar os rótulos executando o seguinte comando:
kubectl describe node NODE_NAME
Usar armazenamento temporário com SSD local com clusters do Autopilot
É possível usar o SSD local nas seguintes classes de computação do Autopilot:
Performance
Accelerator
Para a classe Performance
, siga as instruções para usar SSDs locais em pods da classe de desempenho.
Na classe de computação Accelerator
, é possível usar o SSD local para armazenamento temporário
se estiver usando GPUs NVIDIA L4 e executar o patch do GKE versão
1.28.6-gke.1369000 e posterior ou 1.29.1-gke.1575000 e mais recentes. As GPUs NVIDIA H100 (80 GB) e NVIDIA A100 (80 GB) sempre usam SSDs locais para armazenamento temporário, e não é possível especificar o seletor de nós a seguir para essas GPUs.
Se quiser usar o SSD local para armazenamento temporário, adicione o nodeSeletor da cloud.google.com/gke-ephemeral-storage-local-ssd: "true"
ao seu manifesto de carga de trabalho. A especificação do pod será semelhante ao exemplo
a seguir:
apiVersion: v1
kind: Pod
metadata:
name: l4-localssd-pod
spec:
containers:
- name: my-gpu-container
image: nvidia/cuda:11.0.3-runtime-ubuntu20.04
command: ["/bin/bash", "-c", "--"]
args: ["while true; do sleep 600; done;"]
resources:
requests:
cpu: 16
memory: 64Gi
ephemeral-storage: 800Gi
limits:
cpu: 16
memory: 64Gi
ephemeral-storage: 800Gi
nvidia.com/gpu: 8
nodeSelector:
cloud.google.com/gke-accelerator: nvidia-l4
cloud.google.com/compute-class: Accelerator
cloud.google.com/gke-ephemeral-storage-local-ssd: "true"
Como usar o parâmetro de API legada
A opção --local-ssd-count
é um parâmetro de API legada compatível com o SSD local SCSI.
A série de máquina de terceira geração do Compute Engine não é compatível com SCSI e só permite NVMe. Use essa opção somente com clusters do Windows Server.
Se você estiver usando o parâmetro de API legada em clusters do Linux, recomendamos que use a opção --ephemeral-storage-local-ssd
.
SSD local em clusters do Windows Server
Ao usar SSD local com seus clusters que executam pools de nós do Windows Server, é possível fazer login no nó e formatar o volume antes de usá-lo. No exemplo a seguir, o volume SSD local é formatado com o sistema de arquivos NTFS. Também é possível criar diretórios no volume. Neste exemplo, os diretórios estão no disco D.
PS C:\> Get-Disk | Where partitionstyle -eq 'raw' | Initialize-Disk -PartitionStyle MBR -PassThru | New-Partition -AssignDriveLetter -UseMaximumSize | Format-Volume -FileSystem ntfs -Confirm:$false
PS C:\> mkdir D:\test-ssd
Acessar volumes SSD locais
O exemplo a seguir mostra como acessar o armazenamento temporário via SSD local.
Armazenamento temporário como um volume emptyDir
Um pool de nós do GKE pode ser configurado para usar o SSD local para armazenamento temporário, incluindo volumes emptyDir
.
O manifesto do pod a seguir usa um emptyDir
e um seletor de nós de cloud.google.com/gke-ephemeral-storage-local-ssd
. Aplique uma técnica semelhante aos manifestos de implantação ou aos manifestos StatefulSet.
Ao escolher a solicitação de recurso de armazenamento temporário, considere a capacidade do SSD local reservada para uso do sistema.
apiVersion: v1
kind: Pod
metadata:
name: POD_NAME
spec:
containers:
- name: CONTAINER_NAME
image: "registry.k8s.io/pause"
resources:
requests:
ephemeral-storage: "200Gi"
volumeMounts:
- mountPath: /cache
name: scratch-volume
nodeSelector:
cloud.google.com/gke-ephemeral-storage-local-ssd: "true"
volumes:
- name: scratch-volume
emptyDir: {}
Solução de problemas
Para instruções sobre solução de problemas, consulte Como resolver problemas de armazenamento no GKE.