O Cloud Run fornece um volume de disco temporário que persiste apenas durante a instância. Com esse recurso, é possível especificar a quantidade de disco necessária e o local para montá-lo. O Cloud Run vai alocar essa quantidade de disco ao seu recurso.
Os discos são provisionados automaticamente, pré-formatados para ext4 e criptografados com chaves específicas da instância na inicialização. O disco temporário cria seu volume para que qualquer usuário possa ler ou gravar nele. Como o armazenamento é efêmero, todos os dados são excluídos permanentemente
quando a instância é desligada. Isso inclui interrupções causadas por:
- Falhas de instâncias
- Escalonamento de serviços
- Migração de tráfego para uma nova revisão
Os discos são dedicados a uma instância específica e não são compartilhados entre outras instâncias ou revisões. Você tem controle sobre a estrutura do sistema de arquivos com um ponto de montagem configurável para cada volume.
Antes de encerrar uma instância, o Cloud Run envia um sinal SIGTERM
para todos os contêineres em uma instância, indicando o início de um período de 10 segundos
antes do encerramento real. Nesse ponto, o Cloud Run envia
um sinal SIGKILL. Use essa janela de 10 segundos para realizar operações de limpeza, como uma rodada final de cópia do conteúdo do disco para o armazenamento permanente.
Casos de uso
É possível usar o disco temporário para o seguinte:
- Cargas de trabalho de processamento de dados: ao processar arquivos de dados grandes no Cloud Run, normalmente você armazena o arquivo inteiro na memória ou orquestra a divisão dele em partes menores. Com o armazenamento efêmero, você não precisa pagar por grandes quantidades de memória para fazer uma cópia local temporária dos seus dados. Você também poderá processar conjuntos de dados maiores.
- Armazenamento em cache: em casos de uso de serviço da Web, o armazenamento em cache de dados no disco em vez de buscar do armazenamento remoto pode otimizar a latência do aplicativo.
Limites de armazenamento e de instâncias
Os seguintes limites são aplicáveis:
- Limite de armazenamento da instância: por padrão, cada instância é limitada a 10 GB de espaço total. Se necessário, solicite um aumento de cota.
- Limite de volume da instância: cada instância é limitada a um máximo de 10 volumes.
- Limite do projeto: por padrão, cada projeto tem um limite de 100 GB por região. Se necessário, solicite um aumento de cota.
Solicitar aumento de cota
Os projetos que usam um disco temporário do Cloud Run em uma região pela primeira vez recebem automaticamente 10 GB por instância, por limite de região e 100 GB por projeto, por limite de região.
Se você precisar de mais capacidade, solicite um aumento de cota para seu serviço do Cloud Run. Use os links fornecidos nos botões a seguir para solicitar a cota necessária.
| Cota atual | Link da cota |
|---|---|
| 10 GB por instância | Solicitar uma cota maior por instância |
| 100 GB por projeto | Solicitar uma cota maior por projeto |
Para mais informações sobre como solicitar aumentos de cota, consulte Como aumentar a cota.
Limitações
O disco temporário só está disponível no ambiente de execução de segunda geração.Caminhos não permitidos
O Cloud Run não permite montar um volume em /dev, /proc ou
/sys, ou nos subdiretórios deles.
Regiões compatíveis
O recurso de disco temporário está disponível nas seguintes regiões:
- Para cargas de trabalho que não são de GPU, o disco temporário está disponível em:
- Se você usa GPUs, o disco temporário está disponível em todas as regiões que oferecem suporte a GPUs.
Antes de começar
- Faça login na sua conta do Google Cloud . Se você começou a usar o Google Cloud, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- Instale e inicialize a CLI gcloud.
-
Atualize os componentes:
gcloud components update
- Consulte a página de preços do Cloud Run para CPU, memória e saída de rede. O tamanho total do disco provisionado e o ciclo de vida da instância que o usa contribuem para o custo.
Funções exigidas
Para receber as permissões necessárias para configurar um disco temporário, peça ao administrador que conceda a você os seguintes papéis do IAM:
-
Desenvolvedor do Cloud Run (
roles/run.developer) no serviço Cloud Run -
Usuário da conta de serviço (
roles/iam.serviceAccountUser) na identidade do serviço
Para uma lista de papéis e permissões do IAM associados ao Cloud Run, consulte Papéis do IAM do Cloud Run e Permissões do IAM do Cloud Run. Se o serviço do Cloud Run interage com APIsGoogle Cloud , como as bibliotecas de cliente do Cloud, consulte o guia de configuração de identidade de serviço. Para mais informações sobre como conceder papéis, consulte permissões de implantação e gerenciar acesso.
Criar e montar um disco temporário
É possível criar e montar um disco temporário usando o console Google Cloud , a Google Cloud CLI ou o Terraform:
Console
No Google Cloud console, acesse o Cloud Run:
Selecione Serviços no menu de navegação do Cloud Run e clique em Implantar contêiner para configurar um novo serviço. Se você estiver configurando um serviço atual, clique nele e em Editar e implantar nova revisão.
Ao configurar um novo serviço, preencha a página inicial de configurações de serviço e clique em Contêineres, redes e segurança para expandir essa página.
Clique na guia Contêiner.
- Em Recursos:
- Selecione Disco temporário.
- Especifique o tamanho do disco temporário no menu.
- Insira o caminho de ativação.
- Em Recursos:
Clique em Criar ou Implantar.
gcloud
Para adicionar um volume e montá-lo:
gcloud beta run services update SERVICE \
--execution-environment=gen2 \
--add-volume=name=VOLUME_NAME,type=ephemeral-disk,size=SIZE \
--add-volume-mount=volume=VOLUME_NAME,mount-path=MOUNT_PATH
Substitua:
- SERVICE: o nome do serviço.
- VOLUME_NAME: o nome que você quer dar ao volume.
- SIZE: o tamanho do disco, por exemplo,
100Gi. O tamanho precisa ser de pelo menos10Gipara volumes deephemeral-disk. - MOUNT_PATH: o caminho relativo em que você está montando o volume,
por exemplo,
/mnt/my-volume.
Terraform
Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.
Adicione o seguinte a um recursogoogle_cloud_run_v2_service
na configuração do Terraform: resource "google_cloud_run_v2_service" "default" {
name = "SERVICE"
location = "REGION"
launch_stage = "BETA"
deletion_protection = "true"
ingress = "INGRESS_TRAFFIC_ALL"
template {
containers {
image = "IMAGE_URL"
volume_mounts {
name = "VOLUME_NAME"
mount_path = "MOUNT_PATH"
}
}
volumes {
name = "VOLUME_NAME"
empty_dir {
medium = "DISK"
size_limit = "SIZE"
}
}
}
lifecycle {
ignore_changes = [
launch_stage,
]
}
}
Substitua:
- SERVICE: o nome do serviço.
- REGION: a Google Cloud região.
- IMAGE_URL: uma referência à imagem de contêiner, por
exemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest. Se você usa o Artifact Registry, o repositório REPO_NAME já precisará ter sido criado. O URL segue o formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. - VOLUME_NAME: o nome que você quer dar ao volume.
- MOUNT_PATH: o caminho relativo em que você está montando o volume,
por exemplo,
/mnt/my-volume. - SIZE: o tamanho do disco, por exemplo,
100Gi. O tamanho precisa ser de pelo menos10Gipara volumes deephemeral-disk.
Como ler e gravar em um volume
Se você usar o recurso de montagem de volume do Cloud Run, poderá acessar um volume usando as mesmas bibliotecas na linguagem de programação que você usa para ler e gravar arquivos no sistema de arquivos local.
Isso é especialmente útil se você estiver usando um contêiner existente em que espera os dados sejam armazenados no sistema de arquivos local e usa o sistema de arquivos para acessá-lo.
Os snippets a seguir pressupõem uma montagem de volume com mountPath definido como /mnt/my-volume.
Nodejs
Use o módulo "Sistema de arquivos" para criar um novo arquivo ou adicionar ao final de um arquivo
no volume, /mnt/my-volume:
var fs = require('fs');
fs.appendFileSync('/mnt/my-volume/sample-logfile.txt', 'Hello logs!', { flag: 'a+' });Python
Grave em um arquivo no volume, /mnt/my-volume:
f = open("/mnt/my-volume/sample-logfile.txt", "a")Go
Use o pacote os para criar um novo arquivo mantido no volume, /mnt/my-volume:
f, err := os.Create("/mnt/my-volume/sample-logfile.txt")Java
Use a classe Java.io.File para criar um arquivo de registro no volume, /mnt/my-volume:
import java.io.File;
File f = new File("/mnt/my-volume/sample-logfile.txt");Limpar e remover volumes e montagens de volume
Você pode limpar todos os volumes e montagens ou remover volumes e montagens individuais.
Limpar todos os volumes e as ativações de volumes
Para limpar todos os volumes e as montagens de volume do serviço de contêiner único, execute o seguinte comando:
gcloud run services update SERVICE \ --clear-volumes --clear-volume-mounts
Se você tiver vários contêineres, siga as convenções da CLI sidecars para limpar volumes e ativações de volume:
gcloud run services update SERVICE \ --container=container1 \ --clear-volumes -–clear-volume-mounts \ --container=container2 \ --clear-volumes \ -–clear-volume-mounts
Remover volumes e montagens de volume individuais
Para remover um volume, também é preciso remover todas as montagens de volume que o usam.
Para remover volumes ou ativações de volume individuais, use as flags remove-volume e remove-volume-mount:
gcloud run services update SERVICE \ --remove-volume VOLUME_NAME \ --container=container1 \ --remove-volume-mount MOUNT_PATH \ --container=container2 \ --remove-volume-mount MOUNT_PATH
Práticas recomendadas
Siga estas práticas recomendadas para gerenciar dados temporários de maneira eficaz e otimizar o desempenho do armazenamento.
Copiar para o armazenamento permanente
Se você pretende copiar o conteúdo do disco temporário para um armazenamento permanente, como
um bucket do Cloud Storage, recomendamos a cópia incremental em vez de depender
do período de carência de 10 segundos de SIGTERM para SIGKILL.
Consulte Contrato de ambiente de execução de contêineres
para mais informações sobre desligamentos de instâncias.
O Cloud Run pode ler e gravar no Cloud Storage sem nenhuma configuração de rede adicional. Para ter um desempenho ideal, recomendamos<<br> rotear o tráfego para e do Cloud Storage por meio de uma rede VPC usando Direct VPC.
Esse método funciona se você não precisar que o recurso do Cloud Run acesse a Internet. Se você precisar de acesso à Internet, configure o Cloud NAT ou consulte Tráfego interno para uma API do Google.
Para configurar a saída direta de VPC com um serviço, siga estas etapas:
No console Google Cloud , acesse a página do Cloud Run:
Clique em Criar serviço se estiver configurando um novo serviço em que fará uma implantação. Se você estiver configurando e implantando um serviço que já existe, clique nele e depois em Editar e implantar nova revisão.
Se você estiver configurando um novo serviço, preencha a página de configurações iniciais do serviço conforme preferir e clique em Contêineres, rede, segurança para expandir a página de configuração do serviço.
Clique na guia Rede.
Clique em Conectar a uma VPC para tráfego de saída.
Clique em Enviar tráfego diretamente para uma VPC.
No campo Rede, selecione a rede VPC que receberá o tráfego enviado.
No campo Sub-rede, selecione a sub-rede que enviará os endereços IP ao seu serviço. É possível implantar vários serviços na mesma sub-rede.
Em Roteamento de tráfego, selecione Rotear todo o tráfego para a VPC para enviar todo o tráfego de saída pela rede VPC.
Clique em Criar ou Implantar.
Para verificar se o serviço está na sua rede VPC, clique nele e depois na guia Rede. A rede e a sub-rede estão listadas no card da VPC.
Agora, é possível enviar solicitações do seu serviço do Cloud Run para qualquer recurso na rede VPC, conforme permitido pelas regras de firewall.
Ative o Acesso privado do Google na sub-rede a que você se conectou.
Resolver problemas
Se você tiver problemas, verifique se:- Se o contêiner estiver ficando sem memória e você tiver usado o console Google Cloud para implantar uma nova revisão de um serviço com disco temporário anexado, o console Google Cloud provavelmente converteu o volume do disco em um volume na memória. Isso faz com que as gravações de disco sejam gravadas na memória, resultando em falta de memória no contêiner.
Para corrigir isso, reimplante o serviço usando a CLI gcloud novamente e verifique se o arquivo YAML especifica
medium: Diskemvolumes. - Se você notar velocidades de rede lentas ao fazer o download de uma grande quantidade de dados para o disco temporário, siga as etapas para ativar a VPC direta. Se a VPC direta não estiver ativada, as velocidades de transferência de rede serão mais lentas.