Comandos essenciais para orquestração de containers e gerenciamento de clusters
📖 Definição
Kubernetes é uma plataforma de orquestração de containers open-source que automatiza o deployment, scaling e management de aplicações containerizadas. Ele fornece um framework para executar sistemas distribuídos de forma resiliente, com escalabilidade e auto-recuperação.
💪 Por que aprender?
• Orquestração de containers
• Auto-scaling e load balancing
• Service discovery e storage orchestration
• Rollouts e rollbacks automatizados
• Configuração e secrets management
🚀 O que você pode fazer?
• Microserviços e APIs
• CI/CD pipelines
• Cloud Native applications
• High availability systems
• Multi-cloud deployments
Pods, Services, Deployments
CI/CD, GitOps
EKS, GKE, AKS
Auto-scaling, Load Balancing
☸️ Cluster Management
Gerenciar informações básicas do cluster Kubernetes
📋Informações do Cluster
kubectl cluster-info# Info do cluster
kubectl version# Versões client/server
kubectl config view# Configuração atual
kubectl config current-context# Context atual
kubectl get nodes# Lista nós do cluster
kubectl describe node NODE_NAME# Detalhes do nó
📋Contextos e Namespaces
kubectl config get-contexts# Lista contextos
kubectl config use-context CONTEXT_NAME# Muda contexto
kubectl get namespaces# Lista namespaces
kubectl create namespace NAME# Cria namespace
kubectl -n NAMESPACE get pods# Pods em namespace
☸️ Pods e Containers
Gerenciar pods e containers básicos
📋Gerenciar Pods
kubectl get pods# Lista todos pods
kubectl get pods -o wide# Com mais detalhes
kubectl get pods --all-namespaces# Todos namespaces
kubectl describe pod POD_NAME# Detalhes do pod
kubectl logs POD_NAME# Logs do pod
kubectl logs -f POD_NAME# Logs em tempo real
kubectl exec -it POD_NAME -- bash# Acesso ao container
📋Gerenciar Containers
kubectl get containers# Lista containers
kubectl top pods# Uso de recursos
kubectl top pod POD_NAME --containers# Por container
kubectl port-forward POD_NAME 8080:80# Port forwarding
☸️ Deployments e Services
Gerenciar deployments e services para aplicações
📋Deployments
kubectl get deployments# Lista deployments
kubectl describe deployment DEPLOY_NAME# Detalhes do deployment
kubectl apply -f deployment.yaml# Aplica manifesto
kubectl delete deployment DEPLOY_NAME# Remove deployment
kubectl scale deployment DEPLOY_NAME --replicas=3# Escala deployment
kubectl rollout status deployment DEPLOY_NAME# Status do rollout
kubectl rollout undo deployment DEPLOY_NAME# Reverte rollout
📋Services
kubectl get services# Lista services
kubectl describe service SERVICE_NAME# Detalhes do service
kubectl expose deployment DEPLOY_NAME --port=80 --type=LoadBalancer# Expõe deployment
kubectl get endpoints# Endpoints dos services
☸️ ConfigMaps e Secrets
Gerenciar configurações e segredos da aplicação
📋ConfigMaps
kubectl get configmaps# Lista configmaps
kubectl describe configmap CONFIGMAP_NAME# Detalhes do configmap
kubectl create configmap NAME --from-literal=key=value# Cria configmap
kubectl create configmap NAME --from-file=config.txt# Cria com arquivo
kubectl edit configmap CONFIGMAP_NAME# Edita configmap
📋Secrets
kubectl get secrets# Lista secrets
kubectl describe secret SECRET_NAME# Detalhes do secret
kubectl create secret generic NAME --from-literal=password=secret123# Cria secret
kubectl create secret tls NAME --cert=path/to/tls.crt --key=path/to/tls.key# Cria TLS secret
echo -n 'mysecret' | base64# Codifica secret
🎯 Helm - Package Manager
Gerenciar aplicações complexas com Helm
📋Instalação e Configuração
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash# Instala Helm
helm version# Verifica instalação
helm repo add stable https://charts.helm.sh/stable# Adiciona repo
helm repo update# Atualiza repos
helm repo list# Lista repos
helm search CHART_NAME# Busca charts
📋Gerenciar Releases
helm list# Lista releases
helm list --all-namespaces# Todos namespaces
helm status RELEASE_NAME# Status do release
helm history RELEASE_NAME# Histórico do release
helm rollback RELEASE_NAME REVISION# Reverte release
📋Instalar Charts
helm install RELEASE_NAME CHART_NAME# Instala chart
helm install RELEASE_NAME CHART_NAME --namespace NAMESPACE# Instala com namespace
helm install RELEASE_NAME CHART_NAME --set key=value# Com valores
helm install RELEASE_NAME CHART_NAME --values values.yaml# Com arquivo de valores
helm install RELEASE_NAME CHART_NAME --dry-run --debug# Simulação
📋Upgrade e Uninstall
helm upgrade RELEASE_NAME CHART_NAME# Atualiza release
helm upgrade RELEASE_NAME CHART_NAME --reuse-values# Reusa valores
helm uninstall RELEASE_NAME# Remove release
helm uninstall RELEASE_NAME --namespace NAMESPACE# Remove com namespace
🔷 Istio - Service Mesh
Implementar service mesh com Istio
📋Instalação
curl -L https://istio.io/downloadIstio | sh -# Download Istio
cd istio-1.x.x# Entra no diretório
export PATH=$PWD/bin:$PATH# Adiciona ao PATH
istioctl install --set profile=demo -y# Instala demo
istioctl install --set profile=default -y# Instala padrão
istioctl verify-install# Verifica instalação
📋Configuração
kubectl label namespace default istio-injection=enabled# Habilita injection
istioctl manifest generate > istio.yaml# Gera manifesto
kubectl apply -f istio.yaml# Aplica manifesto
📋Virtual Services
kubectl apply -f virtual-service.yaml# Cria virtual service
kubectl get virtualservices# Lista virtual services
kubectl describe virtualservice VSERVICE_NAME# Detalhes do vservice
kubectl delete virtualservice VSERVICE_NAME# Remove virtual service
📋Destination Rules
kubectl apply -f destination-rule.yaml# Cria destination rule
kubectl get destinationrules# Lista destination rules
kubectl describe destinationrule RULE_NAME# Detalhes da rule
📋Gateway
kubectl apply -f gateway.yaml# Cria gateway
kubectl get gateways# Lista gateways
kubectl describe gateway GATEWAY_NAME# Detalhes do gateway
⚙️ Kustomize - Configuração Nativa
Gerenciar configurações com Kustomize
📋Instalação
curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash# Instala Kustomize
kustomize version# Verifica instalação
kustomize build .# Build do kustomization
kustomize build . | kubectl apply -f -# Aplica direto
📋Estrutura de Diretórios
base/# Recursos base
overlays/production/# Customizações prod
overlays/staging/# Customizações staging
kustomization.yaml# Arquivo principal
📋Strategic Merge
kustomize build overlays/production# Build com overlay
kustomize edit set image.nginx=nginx:1.21# Edita imagem
kustomize edit add namespace production# Adiciona namespace
kustomize edit add configmap APP_CFG --from-file=config.ini# Adiciona configmap
📋Patches
patchesStrategicMerge:# Merge estratégico
patchesJson6902:# Patches JSON
patches:# Patches simples
target:# Alvo do patch
path: patch.yaml# Arquivo de patch
📊 Monitoramento e Observabilidade
Implementar monitoramento e observabilidade
📋Prometheus
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts# Adiciona repo Prometheus
helm install prometheus prometheus-community/kube-prometheus-stack# Instala Prometheus
kubectl port-forward svc/prometheus-server 9090:9090# Acesso local
kubectl get --raw http://prometheus-server:9090/api/v1/query?query=up# Query API
📋Grafana
helm repo add grafana https://grafana.github.io/helm-charts# Adiciona repo Grafana
helm install grafana grafana/grafana# Instala Grafana
kubectl port-forward svc/grafana 3000:3000# Acesso local
kubectl get secret grafana-admin-credentials -o jsonpath='{.data.admin-password}' | base64 -d# Obtém senha
📋ELK Stack
helm repo add elastic https://helm.elastic.co# Adiciona repo Elastic
helm install elasticsearch elastic/elasticsearch# Instala Elasticsearch
helm install kibana elastic/kibana# Instala Kibana
helm install logstash elastic/logstash# Instala Logstash
📋Jaeger Tracing
kubectl create namespace observability# Cria namespace
kubectl apply -f https://raw.githubusercontent.com/jaegertracing/jaeger-kubernetes/master/all-in-one/jaeger-all-in-one-template.yml# Instala Jaeger
kubectl port-forward svc/jaeger-query 16686:16686# Acesso UI
istioctl install --set values.tracing.enabled=true# Habilita tracing
🔧 Troubleshooting e Debug
Diagnosticar e resolver problemas no cluster
📋Diagnóstico de Pods
kubectl get pods -o wide# Status detalhado
kubectl describe pod POD_NAME# Informações completas
kubectl get events --sort-by=.metadata.creationTimestamp# Eventos recentes
kubectl get events --field-selector involvedObject.name=POD_NAME# Eventos do pod
kubectl logs POD_NAME --previous# Logs anteriores
kubectl logs POD_NAME --tail=100# Últimas 100 linhas
kubectl logs POD_NAME --since=1h# Logs da última hora
kubectl exec -it POD_NAME -- /bin/sh# Shell no pod
📋Problemas de Rede
kubectl exec -it POD_NAME -- nslookup SERVICE_NAME# DNS resolution
kubectl exec -it POD_NAME -- curl SERVICE_NAME# Testa conexão
kubectl exec -it POD_NAME -- telnet SERVICE_NAME 80# Testa porta
kubectl get endpoints# Verifica endpoints
kubectl get svc -o wide# Detalhes dos services
kubectl get networkpolicies# Lista políticas
kubectl describe networkpolicy POLICY_NAME# Detalhes da política
kubectl exec -it POD_NAME -- iptables -L# Regras iptables
📋Performance e Recursos
kubectl top nodes# Uso por nó
kubectl top pods --containers# Uso por container
kubectl describe node NODE_NAME | grep -A 5 "Allocated resources"# Recursos alocados
kubectl get pod POD_NAME -o jsonpath='{.spec.containers[*].resources}'# Limits e requests
kubectl exec -it POD_NAME -- top# Processos no pod
kubectl exec -it POD_NAME -- df -h# Uso de disco
kubectl exec -it POD_NAME -- free -h# Uso de memória
kubectl exec -it POD_NAME -- netstat -i# Conexões de rede
🤝 Contribuindo
Encontrou um erro? Quer melhorar um cheatsheet? Tem uma sugestão? Adoraríamos suas contribuições! Abra uma issue ou submeta um PR.
Gostou do projeto? Apoie o desenvolvimento com um café e ajude a manter tudo open source ☕