Programming on Mars
/
KubernetesHands-OnArquitetura de Softwarek8sDevOps

Executando Primeira Aplicação no Kubernetes

Aprenda como fazer deploy da sua primeira aplicação no Kubernetes

André Lucas

August 12, 2024

Executando Primeira Aplicação no Kubernetes

First Application Header

Para seguir este artigo você pode obter os arquivos em - https://github.com/ProgrammingOnMars/kubernetes-for-dev

Agora vamos ver como funcionam as menores unidades implantáveis do Kubernetes chamadas Pod.

Pods são as menores unidades implantáveis de computação que você pode criar e gerenciar no Kubernetes - Recuperado em 13 de agosto de 2024 de https://kubernetes.io/docs/concepts/workloads/pods/

Lembre-se que um Pod não é um container, ele envolve um container.

Também, um Pod pode ter mais de um container mas o caso de uso mais comum é "um-container-por-Pod". Assim, o Kubernetes gerencia o pod ao invés dos containers diretamente.

Uma coisa importante para enfatizar é que pod não é um container ou um processo. É um ambiente para executar cargas de trabalho de containers.

Um Pod não é um processo, mas um ambiente para executar container(s). Um Pod persiste até ser deletado. Recuperado em 13 de agosto de 2024 de https://kubernetes.io/docs/concepts/workloads/pods/

Pod Diagram

Podemos ver na imagem acima, o Pod dentro de um Worker Node e o container dentro de um Pod

De agora em diante, recomendo que você siga e coloque em prática os mesmos exemplos que eu.

Criando um Pod Simples

Vamos criar um arquivo yml para representar um pod.

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    app: programmingonmars
spec:
  containers:
  - name: nginx
    image: nginx:latest
    ports:
    - containerPort: 80
  • apiVersion: Kubernetes tem uma versão de API. Você precisa especificar a versão da API com a qual deseja se comunicar.
  • kind: o tipo de unidade implantável
  • metadata: Esses dados são usados pelo Kubernetes para gerenciar, identificar e interagir com recursos como Pods, Services, Deployments.
  • metadata -> name: este é um identificador único.
  • metadata -> labels: Estes são pares chave-valor que são anexados a recursos e são usados para organizar, selecionar e consultar recursos.
  • spec: esta é a especificação do Pod, ela contém todas as configurações desejadas, e descreve como o Pod deve parecer e se comportar.
  • spec -> containers: esta é uma lista de containers que serão executados dentro do Pod.
  • spec -> containers -> image: a imagem do container será usada
  • spec -> containers -> ports: as portas do container que serão expostas
kubectl apply -f simple-pod.yml

O que acontecerá após aplicar esta configuração no meu cluster k8s?

Então, basicamente o kubectl solicitará ao kube-api para agendar a criação do Pod.

Pod Get Pods Output

Por enquanto, só precisamos saber que o pod foi criado, seu status está running, e temos 1 em execução.

Execute o comando:

kubectl get pods -o wide

para ver os pods com mais detalhes.

Pod Get Pods Wide Output

Escalabilidade, Disponibilidade e Confiabilidade

Imagine que você tem uma falha na sua aplicação e precisa manter confiabilidade e disponibilidade, vamos ver se usando um pod você consegue manter isso.

kubectl delete pod nginx

A verdade é que se você quer usar um cluster Kubernetes, provavelmente quer gerenciar muitas aplicações de carga de trabalho, talvez usar uma arquitetura de microserviços ou aumentar o número de réplicas do módulo específico (microserviço) do seu sistema.

Como você pode ver, o Pod foi deletado, e é isso, precisamos melhorar esta implementação e usar outro tipo de objeto para manter a escalabilidade, disponibilidade e confiabilidade de uma boa aplicação.

Como poderíamos melhorar este cenário?

Vamos compreender o ReplicaSet

Tags

KubernetesHands-OnArquitetura de Softwarek8sDevOps
← Back to home