arrow_back

Como configurar um armazenamento permanente para o Google Kubernetes Engine

Acesse mais de 700 laboratórios e cursos

Como configurar um armazenamento permanente para o Google Kubernetes Engine

Laboratório 1 hora universal_currency_alt 5 créditos show_chart Introdutório
info Este laboratório pode incorporar ferramentas de IA para ajudar no seu aprendizado.
Acesse mais de 700 laboratórios e cursos

Visão geral

Neste laboratório, você vai definir PersistentVolumes e PersistentVolumeClaims. PersistentVolumes são armazenamentos disponíveis para um cluster do Kubernetes. PersistentVolumeClaims permitem que os pods acessem PersistentVolumes. Sem PersistentVolumeClaims, os pods são praticamente efêmeros. Portanto, é necessário usar PersistentVolumeClaims para todos os dados que precisam sobreviver ao escalonamento, à atualização ou à migração do pod.

Objetivos

Neste laboratório, você vai aprender a fazer o seguinte:

  • Gerar manifestos para PersistentVolumes (PVs, na sigla em inglês) e PersistentVolumeClaims (PVCs, na sigla em inglês) de discos permanentes do Google Cloud (atuais ou criados dinamicamente)
  • Montar PVCs de discos permanentes do Google Cloud como volumes em pods
  • Usar manifestos para criar StatefulSets
  • Montar PVCs de discos permanentes do Google Cloud como volumes em StatefulSets
  • Verificar a conexão dos pods em StatefulSets com PVs particulares conforme os pods são interrompidos e reiniciados

Configuração do laboratório

Acessar o laboratório

Para cada laboratório, você recebe um novo projeto do Google Cloud e um conjunto de recursos por um determinado período sem custo financeiro.

  1. Clique no botão Começar o laboratório. Se for preciso pagar, você verá um pop-up para selecionar a forma de pagamento. No painel Detalhes do laboratório à esquerda, você vai encontrar o seguinte:

    • O botão Abrir console do Google Cloud
    • O tempo restante
    • As credenciais temporárias que você vai usar neste laboratório
    • Outras informações, se forem necessárias
  2. Se você estiver usando o navegador Chrome, clique em Abrir console do Google Cloud ou clique com o botão direito do mouse e selecione Abrir link em uma janela anônima.

    O laboratório ativa os recursos e depois abre a página Fazer login em outra guia.

    Dica: coloque as guias em janelas separadas lado a lado.

    Observação: se aparecer a caixa de diálogo Escolher uma conta, clique em Usar outra conta.
  3. Se necessário, copie o Nome de usuário abaixo e cole na caixa de diálogo Fazer login.

    {{{user_0.username | "Nome de usuário"}}}

    Você também encontra o Nome de usuário no painel Detalhes do laboratório.

  4. Clique em Seguinte.

  5. Copie a Senha abaixo e cole na caixa de diálogo de boas-vindas.

    {{{user_0.password | "Senha"}}}

    Você também encontra a Senha no painel Detalhes do laboratório.

  6. Clique em Seguinte.

    Importante: você precisa usar as credenciais fornecidas no laboratório, e não as da sua conta do Google Cloud. Observação: se você usar sua própria conta do Google Cloud neste laboratório, é possível que receba cobranças adicionais.
  7. Acesse as próximas páginas:

    • Aceite os Termos e Condições.
    • Não adicione opções de recuperação nem autenticação de dois fatores (porque essa é uma conta temporária).
    • Não se inscreva em testes gratuitos.

Depois de alguns instantes, o console do Google Cloud será aberto nesta guia.

Observação: para acessar uma lista de produtos e serviços do Google Cloud, clique no Menu de navegação no canto superior esquerdo ou digite o nome do serviço ou produto no campo Pesquisar. Ícone do menu de navegação

Ative o Google Cloud Shell

O Google Cloud Shell é uma máquina virtual com ferramentas de desenvolvimento. Ele tem um diretório principal permanente de 5 GB e é executado no Google Cloud.

O Cloud Shell oferece acesso de linha de comando aos recursos do Google Cloud.

  1. No console do Cloud, clique no botão "Abrir o Cloud Shell" na barra de ferramentas superior direita.

    Ícone do Cloud Shell em destaque

  2. Clique em Continuar.

O provisionamento e a conexão do ambiente podem demorar um pouco. Quando você estiver conectado, já estará autenticado, e o projeto estará definido com seu PROJECT_ID. Exemplo:

ID do projeto em destaque no terminal do Cloud Shell

A gcloud é a ferramenta de linha de comando do Google Cloud. Ela vem pré-instalada no Cloud Shell e aceita preenchimento com tabulação.

  • Para listar o nome da conta ativa, use este comando:
gcloud auth list

Saída:

Credentialed accounts: - @.com (active)

Exemplo de saída:

Credentialed accounts: - google1623327_student@qwiklabs.net
  • Para listar o ID do projeto, use este comando:
gcloud config list project

Saída:

[core] project =

Exemplo de saída:

[core] project = qwiklabs-gcp-44776a13dea667a6 Observação: a documentação completa da gcloud está disponível no guia com informações gerais sobre a gcloud CLI .

Tarefa 1: Criar PVs e PVCs

Nesta tarefa, você vai criar um PVC, que aciona o Kubernetes para gerar um PV automaticamente.

Conecte ao cluster do GKE do laboratório

  1. No Cloud Shell, insira o comando a seguir para definir a variável de ambiente da zona e o nome do cluster:
export my_region={{{project_0.default_region|Region}}} export my_cluster=autopilot-cluster-1
  1. Configure o preenchimento com tabulação da ferramenta de linha de comando kubectl:
source <(kubectl completion bash)
  1. Configure o acesso ao cluster para o kubectl:
gcloud container clusters get-credentials $my_cluster --region $my_region

Crie e aplique um manifesto com um PVC

Na maioria das vezes, não é necessário configurar diretamente objetos PV ou criar discos persistentes do Compute Engine. Em vez disso, você pode criar um PVC. O Kubernetes então vai provisionar um disco persistente para você automaticamente.

Vamos criar um PVC de 30 gigabytes chamado hello-web-disk, que pode ser ativado como um volume de leitura/gravação em um único nó de cada vez.

  1. Crie e abra um arquivo chamado pvc-demo.yaml com nano usando este comando:
nano pvc-demo.yaml
  1. Quando o nano estiver aberto, cole o seguinte código no arquivo pvc-demo.yaml:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: hello-web-disk spec: accessModes: - ReadWriteOnce resources: requests: storage: 30Gi
  1. Pressione Ctrl+O e depois Enter para salvar o arquivo editado.

  2. Pressione Ctrl+X para sair do editor de texto nano.

  3. Execute o comando a seguir para mostrar que você não tem PVCs:

kubectl get persistentvolumeclaim

Saída:

No resources found in default namespace.
  1. Execute o comando a seguir para criar o PVC:
kubectl apply -f pvc-demo.yaml
  1. Execute o comando a seguir para mostrar o PVC recém-criado:
kubectl get persistentvolumeclaim

Saída parcial:

NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE hello-web-disk Pending standard-rwo unset 15s Observação: o status vai continuar pendente até a etapa seguinte.

Clique em Verificar meu progresso para conferir o objetivo.

Criar PVs e PVCs

Tarefa 2: Montar e verificar os PVCs dos discos permanentes do Google Cloud em pods

Nesta tarefa, você vai anexar seu PVC do disco permanente a um pod. Você vai ativar o PVC como um volume, como parte do manifesto do pod.

Ativar o PVC em um pod

Crie um arquivo de manifesto pod-volume-demo.yaml para implantar um contêiner nginx, anexe o pvc-demo-volume ao pod e ative esse volume para o caminho /var/www/html no contêiner nginx. Os arquivos nesse diretório dentro do contêiner serão salvos no volume permanente e mantidos, mesmo que o pod e o contêiner sejam encerrados e recriados.

  1. Crie e abra um arquivo chamado pod-volume-demo.yaml com nano usando o seguinte comando:
nano pod-volume-demo.yaml
  1. Quando o nano estiver aberto, cole o seguinte no arquivo pod-volume-demo.yaml:
kind: Pod apiVersion: v1 metadata: name: pvc-demo-pod spec: containers: - name: frontend image: nginx volumeMounts: - mountPath: "/var/www/html" name: pvc-demo-volume volumes: - name: pvc-demo-volume persistentVolumeClaim: claimName: hello-web-disk
  1. Pressione Ctrl+O e depois Enter para salvar o arquivo editado.

  2. Pressione Ctrl+X para sair do editor de texto nano.

  3. Para criar o pod com o volume, execute o comando a seguir:

kubectl apply -f pod-volume-demo.yaml
  1. Liste os pods do cluster:
kubectl get pods

Saída:

NAME READY STATUS RESTARTS AGE pvc-demo-pod 0/1 ContainerCreating 0 18s

Se você faz isso logo depois de criar o pod, o status é listado como "ContainerCreating". Já o volume é ativado antes de o status ser alterado para "Running".

  1. É necessário ter acesso shell ao seu pod para verificar se é possível acessar o PVC nele. Execute o comando a seguir para iniciar a sessão do shell:
kubectl exec -it pvc-demo-pod -- sh
  1. Digite os comandos a seguir para criar uma mensagem de texto simples como página da Web no pod:
echo Test webpage in a persistent volume!>/var/www/html/index.html chmod +x /var/www/html/index.html
  1. Verifique se o arquivo de texto contém sua mensagem:
cat /var/www/html/index.html

Saída:

Test webpage in a persistent volume!
  1. Digite o comando abaixo para sair do shell interativo no contêiner nginx:
exit

Teste a persistência do PV

Agora, você vai excluir o pod do cluster, confirmar que o PV ainda existe, reimplantar o pod e verificar se os conteúdos do PV permanecem intactos.

  1. Exclua o pvc-demo-pod:
kubectl delete pod pvc-demo-pod
  1. Liste os pods do cluster:
kubectl get pods

Saída:

No resources found in default namespace.

Não vai haver pods no cluster.

  1. Para mostrar seu PVC, execute o comando a seguir:
kubectl get persistentvolumeclaim

Saída parcial:

NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE hello-web-disk Bound pvc-8...34 30Gi RWO standard-rwo unset 22m

O PVC ainda existe. Ele não foi excluído junto com o pod.

  1. Implante o pvc-demo-pod de novo:
kubectl apply -f pod-volume-demo.yaml
  1. Liste os pods do cluster:
kubectl get pods

Saída:

NAME READY STATUS RESTARTS AGE pvc-demo-pod 1/1 Running 0 15s

O pod vai ser implantado e, desta vez, o status alterado mais rápido para "Running", porque o PV já existe e não precisa ser criado.

  1. É necessário ter acesso shell ao seu pod para verificar se é possível acessar o PVC nele. Execute o comando a seguir para iniciar a sessão do shell:
kubectl exec -it pvc-demo-pod -- sh
  1. Para verificar se o arquivo de texto ainda contém sua mensagem, execute o comando a seguir:
cat /var/www/html/index.html

Saída:

Test webpage in a persistent volume!

O conteúdo do volume permanente não foi removido, embora o pod tenha sido excluído do cluster e recriado.

  1. Digite o comando abaixo para sair do shell interativo no contêiner nginx:
exit

Clique em Verificar meu progresso para ver o objetivo.

Monte e verifique os PVCs dos discos permanentes do Google Cloud em pods

Tarefa 3: Criar StatefulSets com PVCs

Nesta tarefa, você vai usar o PVC em um StatefulSet. O StatefulSet é como uma implantação, mas os pods recebem identificadores exclusivos.

Lance o PVC

  1. Antes de usar o PVC com o statefulset, você precisa excluir o pod que o está usando. Execute este comando para excluir o pod:
kubectl delete pod pvc-demo-pod
  1. Confirme se o pod foi removido:
kubectl get pods

Saída:

No resources found in default namespace.

Crie um StatefulSet

Vamos criar um arquivo de manifesto statefulset-demo.yaml que vai criar um StatefulSet que inclui um serviço LoadBalancer e três réplicas de um pod com um contêiner nginx e um volumeClaimTemplate para PVCs de 30 gigabytes com o nome hello-web-disk. Os contêineres nginx ativam o PVC chamado hello-web-disk em /var/www/html, como na tarefa anterior.

  1. Crie e abra um arquivo chamado statefulset-demo.yaml com nano usando o seguinte comando:
nano statefulset-demo.yaml
  1. Quando o nano estiver aberto, cole o seguinte no arquivo statefulset-demo.yaml:
kind: Service apiVersion: v1 metadata: name: statefulset-demo-service spec: ports: - protocol: TCP port: 80 targetPort: 9376 type: LoadBalancer --- apiVersion: apps/v1 kind: StatefulSet metadata: name: statefulset-demo spec: selector: matchLabels: app: MyApp serviceName: statefulset-demo-service replicas: 3 updateStrategy: type: RollingUpdate template: metadata: labels: app: MyApp spec: containers: - name: stateful-set-container image: nginx ports: - containerPort: 80 name: http volumeMounts: - name: hello-web-disk mountPath: "/var/www/html" volumeClaimTemplates: - metadata: name: hello-web-disk spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 30Gi
  1. Pressione Ctrl+O e depois Enter para salvar o arquivo editado.

  2. Pressione Ctrl+X para sair do editor de texto nano.

  • Para criar o StatefulSet com o volume, execute o comando a seguir:
kubectl apply -f statefulset-demo.yaml

Saída:

service "statefulset-demo-service" created statefulset.apps "statefulset-demo" created

Agora você tem um statefulset em execução por trás de um serviço chamado statefulset-demo-service.

Verifique a conexão dos pods nos StatefulSets

  1. Use "kubectl describe" para ver os detalhes do StatefulSet:
kubectl describe statefulset statefulset-demo

Veja o status do evento no fim da saída. O serviço e o statefulset foram criados.

Normal SuccessfulCreate 10s statefulset-controller Message: create Claim hello-web-disk-statefulset-demo-0 Pod statefulset-demo-0 in StatefulSet statefulset-demo success Normal SuccessfulCreate 10s statefulset-controller Message: create Pod statefulset-demo-0 in StatefulSet statefulset-demo successful
  1. Liste os pods do cluster:
kubectl get pods

Saída:

NAME READY STATUS RESTARTS AGE statefulset-demo-0 1/1 Running 0 6m statefulset-demo-1 1/1 Running 0 3m statefulset-demo-2 1/1 Running 0 2m
  1. Para listar os PVCs, execute o comando a seguir:
kubectl get pvc

Saída:

NAME STATUS VOLUME CAPACITY ACCESS hello-web-disk Bound pvc-86117ea6-...34 30Gi RWO hello-web-disk-st...-demo-0 Bound pvc-92d21d0f-...34 30Gi RWO hello-web-disk-st...-demo-1 Bound pvc-9bc84d92-...34 30Gi RWO hello-web-disk-st...-demo-2 Bound pvc-a526ecdf-...34 30Gi RWO

O hello-web-disk original ainda está presente, e agora é possível ver os PVCs individuais criados para cada pod no novo pod do statefulset.

  1. Use "kubectl describe" para ver os detalhes do primeiro PVC no StatefulSet:
kubectl describe pvc hello-web-disk-statefulset-demo-0

Clique em Verificar meu progresso para ver o objetivo. Crie StatefulSets com PVCs

Tarefa 4: Verificar a persistência das conexões dos volumes permanentes com os pods gerenciados por StatefulSets

Nesta tarefa, você vai verificar a conexão dos pods nos StatefulSets com os PVs particulares quando os pods são interrompidos e reiniciados.

  1. É necessário ter acesso shell ao seu pod para verificar se é possível acessar o PVC nele. Execute o comando a seguir para iniciar a sessão do shell:
kubectl exec -it statefulset-demo-0 -- sh
  1. Verifique se não há arquivos de texto index.html no diretório /var/www/html:
cat /var/www/html/index.html
  1. Digite os comandos a seguir para criar uma mensagem de texto simples como página da Web no pod:
echo Test webpage in a persistent volume!>/var/www/html/index.html chmod +x /var/www/html/index.html
  1. Verifique se o arquivo de texto contém sua mensagem:
cat /var/www/html/index.html

Saída:

Test webpage in a persistent volume!
  1. Digite o comando abaixo para sair do shell interativo no contêiner nginx:
exit
  1. Exclua o pod em que o arquivo foi atualizado no PVC:
kubectl delete pod statefulset-demo-0
  1. Liste os pods do cluster:
kubectl get pods

Você vai ver que o StatefulSet reinicia automaticamente o pod statefulset-demo-0.

Observação: aguarde até o status do pod mostrar que ele está novamente em execução.
  1. Conecte-se ao shell no novo pod statefulset-demo-0:
kubectl exec -it statefulset-demo-0 -- sh
  1. Verifique se o arquivo de texto ainda contém sua mensagem:
cat /var/www/html/index.html

Saída:

Test webpage in a persistent volume!

O StatefulSet reinicia o pod e reconecta o PVC dedicado ao novo pod, garantindo a preservação dos dados dele.

  1. Digite o comando abaixo para sair do shell interativo no contêiner nginx:
exit

Finalize o laboratório

Clique em Terminar o laboratório após a conclusão. O Google Cloud Ensina remove os recursos usados e limpa a conta por você.

Você vai poder avaliar sua experiência no laboratório. Basta selecionar o número de estrelas, digitar um comentário e clicar em Enviar.

O número de estrelas indica o seguinte:

  • 1 estrela = muito insatisfeito
  • 2 estrelas = insatisfeito
  • 3 estrelas = neutro
  • 4 estrelas = satisfeito
  • 5 estrelas = muito satisfeito

Feche a caixa de diálogo se não quiser enviar feedback.

Para enviar seu feedback, fazer sugestões ou correções, use a guia Suporte.

Copyright 2020 Google LLC. Todos os direitos reservados. Google e o logotipo do Google são marcas registradas da Google LLC. Todos os outros nomes de produtos e empresas podem ser marcas registradas das respectivas empresas a que estão associados.

Antes de começar

  1. Os laboratórios criam um projeto e recursos do Google Cloud por um período fixo
  2. Os laboratórios têm um limite de tempo e não têm o recurso de pausa. Se você encerrar o laboratório, vai precisar recomeçar do início.
  3. No canto superior esquerdo da tela, clique em Começar o laboratório

Usar a navegação anônima

  1. Copie o nome de usuário e a senha fornecidos para o laboratório
  2. Clique em Abrir console no modo anônimo

Fazer login no console

  1. Faça login usando suas credenciais do laboratório. Usar outras credenciais pode causar erros ou gerar cobranças.
  2. Aceite os termos e pule a página de recursos de recuperação
  3. Não clique em Terminar o laboratório a menos que você tenha concluído ou queira recomeçar, porque isso vai apagar seu trabalho e remover o projeto

Este conteúdo não está disponível no momento

Você vai receber uma notificação por e-mail quando ele estiver disponível

Ótimo!

Vamos entrar em contato por e-mail se ele ficar disponível

Um laboratório por vez

Confirme para encerrar todos os laboratórios atuais e iniciar este

Use a navegação anônima para executar o laboratório

Para executar este laboratório, use o modo de navegação anônima ou uma janela anônima do navegador. Isso evita conflitos entre sua conta pessoal e a conta de estudante, o que poderia causar cobranças extras na sua conta pessoal.