Implantação

Nesta página, há descrições sobre os objetos de implantação do Kubernetes e o uso deles no Google Kubernetes Engine.

O que é uma implantação?

As implantações representam um conjunto de vários Pods idênticos, sem identidades exclusivas. Elas executam várias réplicas do aplicativo e substituem automaticamente todas as instâncias que falham ou não respondem. Assim, as implantações ajudam a garantir que uma ou mais instâncias do aplicativo estejam disponíveis para veicular solicitações dos usuários. Elas são gerenciadas pelo controlador de implantação do Kubernetes.

As implantações usam um modelo de Pod contendo uma especificação para os próprios Pods. Ela determina como cada pod será: quais aplicativos serão executados dentro dos contêineres, quais volumes os pods ativarão, os rótulos e muito mais.

Quando um modelo de pod de implantação é alterado, novos pods são criados automaticamente um por um.

Padrões de uso

As implantações são adequadas para aplicativos sem estado que usam volumes ReadOnlyMany ou ReadWriteMany montados em várias réplicas, mas não são adequados para cargas de trabalho que usam volumes ReadWriteOnce. Para aplicativos com estado que usam volumes ReadWriteOnce, use StatefulSets. Os StatefulSets são projetados para implantar aplicativos com estado e aplicativos em cluster que salvam dados em armazenamento permanente, como os discos permanentes do Compute Engine. Os StatefulSets são adequados para implantar Kafka, MySQL, Redis, ZooKeeper e outros aplicativos que precisam de identidades únicas e permanentes e nomes de host estáveis.

Crie implantações

É possível criar uma implantação usando os comandos kubectl run, kubectl apply ou kubectl create.

Depois de criada, a implantação garante que o número pretendido de pods esteja constantemente disponível e em funcionamento. A implantação substitui automaticamente os pods que falham ou são despejados dos respectivos nodes.

A seguir, você encontra um exemplo de um arquivo de manifesto de implantação no formato YAML:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80

Neste exemplo:

  • Uma implantação denominada nginx é criada, o que é indicado pelo campo metadata: name.
  • Na implantação são criados três pods replicados, indicados pelo campo de replicas.
  • No modelo de pod, ou campo spec: template, é indicado que os pods são rotulados como app: nginx.
  • Na especificação do modelo de pod, ou o campo template: spec, é indicado que os pods executam um contêiner nginx, em que é executada a imagem Docker Hub nginx na versão 1.7.9.
  • Com a implantação, a porta 80 é aberta para uso pelos pods.

Em suma, o modelo de pod contém as seguintes instruções para pods criados por esta implantação:

  • Cada pod é rotulado app: nginx.
  • Crie um recipiente e nomeie-o nginx.
  • Execute a imagem nginx na versão 1.7.9.
  • Abra a porta 80 para enviar e receber o tráfego.

Para mais informações sobre como criar implantações, consulte Como criar uma implantação.

Como atualizar implantações

Para atualizar uma implantação, faça alterações na especificação do modelo de pod da implantação. Alterar o campo de especificação desencadeia automaticamente um lançamento de atualização. Você pode usar kubectl, a API Kubernetes ou o menu Cargas de trabalho do GKE no console do Google Cloud Platform.

Por padrão, quando uma implantação aciona uma atualização, ela faz com que os pods parem, gradualmente os reduz para zero, depois drena e rescinde os pods. Então, a implantação usa o modelo de pod atualizado para criar novos.

Os pod antigos não são removidos até que um número suficiente de novos esteja em execução, e novos pods não são criados até que um número suficiente dos antigos tenha sido removido. Para ver em qual ordem os pods são criados e removidos, execute kubectl describe deployments.

As implantações podem garantir que pelo menos um menos do que o número que você quer de réplicas esteja sendo executado, com no máximo um pod não estando disponível. Da mesma forma, as implantações garantem pelo menos um pod a mais do que o número desejado de réplicas e no máximo um a mais do que a execução que você quer.

É possível reverter uma atualização usando o comando kubectl rollout undo. Use também kubectl rollout pause para interromper temporariamente uma implantação.

Como gerenciar implantações

Veja a seguir uma lista de tarefas de gerenciamento comuns para implantações:

Status e ciclo de vida

As implantações podem estar em um dos três estados durante seu ciclo de vida: em andamento, concluído ou com falha.

Um estado em andamento indica que a implantação está em processo de realização das tarefas, como criar ou dimensionar seus pods.

Um estado concluído indica que a implantação concluiu com êxito suas tarefas, todas as pods estão sendo executadas com as especificações mais recentes e estão disponíveis, e nenhum pod está em execução.

Um estado com falha indica que a implantação encontrou um ou mais problemas que impedem que ele complete suas tarefas. Algumas causas incluem cotas ou permissões insuficientes, erros de extração de imagem, intervalo de limites ou de tempo de execução. Para investigar o motivo da falha da implantação, execute kubectl get deployment [DEPLOYMENT+NAME] -o yaml e examine as mensagens no campo status: conditions.

Use o comando kubectl rollout status para monitorar o progresso ou verificar o status de uma implantação.

Próximas etapas

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Kubernetes Engine