3.1 KiB
3.1 KiB
MANUAL TÉCNICO - KUBERNETES: VISÃO GERAL E FERRAMENTAS BÁSICAS
Código: ITGENG 0015/26 | Classificação: RESTRITO Responsável: João Pedro Toledo Gonçalves | Data: {{DATA_ATUAL}}
1. HISTÓRICO DE REVISÃO
⚠️ REGRA DE OURO:
- Autor: João Pedro Toledo Gonçalves.
- Descrição: Criação do documento.
| Data | Versão | Descrição | Autor |
|---|---|---|---|
| {{DATA_ATUAL}} | 1.0 | Criação Inicial | João Pedro Toledo Gonçalves |
2. OBJETIVO
Introduzir os conceitos fundamentais do Kubernetes (K8s) e o uso da ferramenta de linha de comando kubectl para administração de clusters.
3. PRÉ-REQUISITOS
- Um cluster Kubernetes ativo (Pode ser Minikube, K3s, EKS, AKS).
- Ferramenta
kubectlinstalada localmente. - Arquivo de configuração
~/.kube/config(kubeconfig).
4. CONCEITOS CHAVE
ℹ️ NOTA: O K8s é declarativo. Você define o estado desejado (YAML) e ele trabalha para manter esse estado.
| Componente | Função | Equivalente Docker |
|---|---|---|
| Pod | Menor unidade deployável. Pode ter 1+ containers. | Container "Grupo" |
| Deployment | Gerencia réplicas e updates de Pods. | Service (Swarm) |
| Service | Expõe o Deployment na rede (ClusterIP, NodePort). | Port Mapping |
| Namespace | Segregação virtual de recursos. | ~Stack Name |
5. PASSO A PASSO (EXECUÇÃO)
Etapa 1: Verificação de Conexão
- Verifique se o
kubectlconsegue falar com o cluster.
kubectl cluster-info
kubectl get nodes
Etapa 2: Deploy Imperativo (Rápido)
- Crie um deployment simples do Nginx.
kubectl create deployment demo-nginx --image=nginx
Etapa 3: Deploy Declarativo (YAML - Recomendado)
- Crie um arquivo
app.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: meu-app
spec:
replicas: 2
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: nginx
image: nginx:latest
- Aplique o arquivo:
kubectl apply -f app.yaml
Etapa 4: Debug e Logs
- Liste os pods para pegar o nome.
kubectl get pods - Veja os logs de um pod específico.
kubectl logs -f meu-app-xxxxx-xxxxx - Acesse o shell interativo.
kubectl exec -it meu-app-xxxxx-xxxxx -- /bin/bash
6. SOLUÇÃO DE PROBLEMAS (TROUBLESHOOTING)
Problema 1: ErrImagePull ou ImagePullBackOff
- Causa: Nome da imagem errado, tag inexistente ou falta de credenciais (Private Registry).
- Solução:
kubectl describe pod [NOME_POD]-> Veja a seção "Events".
Problema 2: CrashLoopBackOff
- Causa: O container iniciou e "morreu" imediatamente (Erro na aplicação).
- Solução:
kubectl logs [NOME_POD] --previouspara ver o log antes do crash.
7. VALIDAÇÃO FINAL
kubectl get nodesretorna status Ready?kubectl get podsmostra todos os pods como Running?- É possível aplicar mudanças editando o YAML e rodando
applynovamente?