wiki:kubernetes:guia_de_comandos
Differences
This shows you the differences between two versions of the page.
| wiki:kubernetes:guia_de_comandos [2026/01/22 11:16] – created Wiki Administrator | wiki:kubernetes:guia_de_comandos [2026/01/28 13:14] (current) – Wiki Administrator | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== GUIA DE REFERÊNCIA RÁPIDA KUBERNETES - COMANDOS ESSENCIAIS | + | ====== GUIA DE REFERÊNCIA RÁPIDA KUBERNETES - COMANDOS ESSENCIAIS ====== |
| - | Este guia de referência rápida (Cheat Sheet) compila os comandos Kubernetes | + | Este guia de referência rápida (Cheat Sheet) compila os comandos Kubernetes mais utilizados, organizados por funcionalidade, |
| ===== 1. GERENCIAMENTO DE RECURSOS BÁSICOS ===== | ===== 1. GERENCIAMENTO DE RECURSOS BÁSICOS ===== | ||
| - | ==== 1.1. MONITORAMENTO | + | ==== 1.1. CONFIGURAÇÃO |
| <code bash> | <code bash> | ||
| - | # Verifica | + | # Verificar |
| - | kubectl version --short | + | kubectl version --client |
| - | # Exibe informações do cluster | + | # Exibir |
| kubectl cluster-info | kubectl cluster-info | ||
| - | # Lista todos os nós do cluster e seu status | + | # Listar |
| - | kubectl get nodes | + | kubectl |
| - | # Exibe o uso de recursos (CPU/ | + | # Obter o contexto atual |
| - | kubectl | + | kubectl |
| - | # Exibe o uso de recursos (CPU/ | + | # Alternar para um contexto específico |
| - | kubectl | + | kubectl |
| - | # Descreve detalhes de um nó específico (capacidade, | + | # Exibir a configuração completa do kubeconfig |
| - | kubectl | + | kubectl |
| - | # Lista eventos do cluster ordenados por tempo | + | # Definir o namespace padrão para o contexto atual |
| - | kubectl | + | kubectl |
| + | |||
| + | # Criar um novo contexto | ||
| + | kubectl config set-context < | ||
| </ | </ | ||
| - | ==== 1.2. GERENCIAMENTO DE PODS E WORKLOADS | + | ==== 1.2. NAMESPACES |
| <code bash> | <code bash> | ||
| - | # Listagem de Pods | + | # Listar |
| - | kubectl get pods # Lista pods no namespace atual | + | kubectl get namespaces |
| - | kubectl get pods -A # Lista pods em todos os namespaces | + | kubectl get ns |
| - | kubectl get pods -o wide # Lista pods com IP e Nó onde estão rodando | + | |
| - | kubectl get pods --watch | + | |
| - | # Controle de Workloads | + | # Criar um novo namespace |
| - | kubectl rollout restart deployment < | + | kubectl |
| - | kubectl | + | |
| - | kubectl delete pod <nome> # Remove um pod específico (o ReplicaSet criará outro) | + | |
| - | # Execução | + | # Deletar um namespace (e todos os recursos |
| - | kubectl exec -it <pod> -- bash # Abre um terminal interativo | + | kubectl |
| - | kubectl logs < | + | |
| - | kubectl logs -f < | + | |
| - | kubectl | + | |
| - | # Operações de Arquivos | + | # Exibir informações detalhadas sobre um namespace |
| - | kubectl | + | kubectl |
| - | kubectl | + | |
| + | # Definir um namespace como padrão | ||
| + | kubectl | ||
| + | |||
| + | # Listar recursos em um namespace específico | ||
| + | kubectl get pods --namespace=<namespace-name> | ||
| + | kubectl get pods -n <namespace-name> | ||
| </ | </ | ||
| - | ==== 1.3. GERENCIAMENTO DE CONFIGURAÇÕES E STORAGE | + | ==== 1.3. PODS ==== |
| <code bash> | <code bash> | ||
| - | # ConfigMaps | + | # Listar todos os pods no namespace padrão |
| + | kubectl get pods | ||
| + | |||
| + | # Listar todos os pods em todos os namespaces | ||
| + | kubectl get pods --all-namespaces | ||
| + | kubectl get pods -A | ||
| + | |||
| + | # Listar pods com informações detalhadas (IP, Node, etc.) | ||
| + | kubectl get pods -o wide | ||
| + | |||
| + | # Exibir informações detalhadas sobre um pod específico | ||
| + | kubectl describe pod < | ||
| + | |||
| + | # Visualizar logs de um pod | ||
| + | kubectl logs < | ||
| + | |||
| + | # Seguir logs em tempo real (similar a 'tail -f') | ||
| + | kubectl logs -f < | ||
| + | |||
| + | # Visualizar logs de um container específico em um pod multi-container | ||
| + | kubectl logs < | ||
| + | |||
| + | # Acessar um terminal interativo dentro de um pod | ||
| + | kubectl exec -it < | ||
| + | |||
| + | # Executar um comando específico em um pod | ||
| + | kubectl exec < | ||
| + | |||
| + | # Copiar arquivos do pod para o host | ||
| + | kubectl cp < | ||
| + | |||
| + | # Copiar arquivos do host para o pod | ||
| + | kubectl cp < | ||
| + | |||
| + | # Criar um pod a partir de uma imagem Docker | ||
| + | kubectl run < | ||
| + | |||
| + | # Deletar um pod | ||
| + | kubectl delete pod < | ||
| + | |||
| + | # Deletar múltiplos pods | ||
| + | kubectl delete pods < | ||
| + | |||
| + | # Deletar todos os pods em um namespace | ||
| + | kubectl delete pods --all | ||
| + | |||
| + | # Exibir eventos de um pod | ||
| + | kubectl describe pod < | ||
| + | </ | ||
| + | |||
| + | ==== 1.4. DEPLOYMENTS ==== | ||
| + | |||
| + | <code bash> | ||
| + | # Listar todos os deployments | ||
| + | kubectl get deployments | ||
| + | kubectl get deploy | ||
| + | |||
| + | # Exibir informações detalhadas sobre um deployment | ||
| + | kubectl describe deployment < | ||
| + | |||
| + | # Criar um deployment a partir de uma imagem | ||
| + | kubectl create deployment < | ||
| + | |||
| + | # Escalar um deployment (aumentar/ | ||
| + | kubectl scale deployment < | ||
| + | |||
| + | # Atualizar a imagem de um deployment (rolling update) | ||
| + | kubectl set image deployment/< | ||
| + | |||
| + | # Verificar o status do rollout (atualização) | ||
| + | kubectl rollout status deployment/< | ||
| + | |||
| + | # Visualizar o histórico de rollouts | ||
| + | kubectl rollout history deployment/< | ||
| + | |||
| + | # Reverter para a versão anterior do deployment | ||
| + | kubectl rollout undo deployment/< | ||
| + | |||
| + | # Reverter para uma revisão específica | ||
| + | kubectl rollout undo deployment/< | ||
| + | |||
| + | # Pausar um rollout | ||
| + | kubectl rollout pause deployment/< | ||
| + | |||
| + | # Retomar um rollout pausado | ||
| + | kubectl rollout resume deployment/< | ||
| + | |||
| + | # Deletar um deployment | ||
| + | kubectl delete deployment < | ||
| + | |||
| + | # Editar um deployment (abre editor de texto) | ||
| + | kubectl edit deployment < | ||
| + | </ | ||
| + | |||
| + | ==== 1.5. SERVICES ==== | ||
| + | |||
| + | <code bash> | ||
| + | # Listar todos os services | ||
| + | kubectl get services | ||
| + | kubectl get svc | ||
| + | |||
| + | # Exibir informações detalhadas sobre um service | ||
| + | kubectl describe service < | ||
| + | |||
| + | # Criar um service do tipo ClusterIP (padrão, acesso interno) | ||
| + | kubectl expose deployment < | ||
| + | |||
| + | # Criar um service do tipo NodePort (acesso externo via porta do node) | ||
| + | kubectl expose deployment < | ||
| + | |||
| + | # Criar um service do tipo LoadBalancer (acesso externo com IP balanceado) | ||
| + | kubectl expose deployment < | ||
| + | |||
| + | # Deletar um service | ||
| + | kubectl delete service < | ||
| + | |||
| + | # Obter o IP externo de um LoadBalancer service | ||
| + | kubectl get service < | ||
| + | |||
| + | # Listar endpoints de um service (pods que o service roteia tráfego) | ||
| + | kubectl get endpoints < | ||
| + | </ | ||
| + | |||
| + | ==== 1.6. CONFIGMAPS E SECRETS ==== | ||
| + | |||
| + | <code bash> | ||
| + | # Listar todos os ConfigMaps | ||
| kubectl get configmaps | kubectl get configmaps | ||
| + | kubectl get cm | ||
| + | |||
| + | # Criar um ConfigMap a partir de um arquivo | ||
| + | kubectl create configmap < | ||
| + | |||
| + | # Criar um ConfigMap a partir de um diretório | ||
| + | kubectl create configmap < | ||
| + | |||
| + | # Criar um ConfigMap a partir de pares chave-valor | ||
| + | kubectl create configmap < | ||
| + | |||
| + | # Exibir o conteúdo de um ConfigMap | ||
| + | kubectl get configmap < | ||
| + | |||
| + | # Deletar um ConfigMap | ||
| + | kubectl delete configmap < | ||
| + | |||
| + | # Listar todos os Secrets | ||
| kubectl get secrets | kubectl get secrets | ||
| - | kubectl describe secret < | ||
| - | kubectl get secret < | ||
| - | # Volumes e Storage | + | # Criar um Secret genérico |
| - | kubectl | + | kubectl |
| - | kubectl | + | |
| - | kubectl | + | # Criar um Secret a partir de um arquivo |
| + | kubectl create secret generic <secret-name> --from-file=< | ||
| + | |||
| + | # Criar um Secret do tipo docker-registry (para autenticação em registries privados) | ||
| + | kubectl | ||
| + | |||
| + | # Exibir o conteúdo de um Secret | ||
| + | kubectl | ||
| + | |||
| + | # Decodificar um valor base64 | ||
| + | kubectl get secret < | ||
| + | |||
| + | # Deletar um Secret | ||
| + | kubectl delete secret < | ||
| </ | </ | ||
| - | ===== 2. LIMPEZA | + | ==== 1.7. VOLUMES |
| + | |||
| + | <code bash> | ||
| + | # Listar todos os Persistent Volumes | ||
| + | kubectl get persistentvolumes | ||
| + | kubectl get pv | ||
| + | |||
| + | # Listar todos os Persistent Volume Claims | ||
| + | kubectl get persistentvolumeclaims | ||
| + | kubectl get pvc | ||
| + | |||
| + | # Exibir informações detalhadas sobre um PV | ||
| + | kubectl describe pv < | ||
| + | |||
| + | # Exibir informações detalhadas sobre um PVC | ||
| + | kubectl describe pvc < | ||
| + | |||
| + | # Criar um PVC a partir de um manifesto YAML | ||
| + | kubectl apply -f < | ||
| + | |||
| + | # Deletar um PVC | ||
| + | kubectl delete pvc < | ||
| + | |||
| + | # Deletar um PV | ||
| + | kubectl delete pv < | ||
| + | |||
| + | # Listar Storage Classes disponíveis | ||
| + | kubectl get storageclasses | ||
| + | kubectl get sc | ||
| + | </ | ||
| - | ==== 2.1. LIMPEZA DE RECURSOS TERMINADOS E ÓRFÃOS | + | ==== 1.8. INGRESS |
| <code bash> | <code bash> | ||
| - | # Remove Pods que falharam ou completaram com sucesso | + | # Listar todos os Ingress |
| - | kubectl | + | kubectl |
| - | # Remove Pods em estado ' | + | # Exibir informações detalhadas sobre um Ingress |
| - | kubectl | + | kubectl |
| - | # Remove ReplicaSets antigos (que não possuem réplicas ativas) | + | # Criar um Ingress a partir de um manifesto YAML |
| - | kubectl | + | kubectl |
| - | # Limpeza de Jobs concluídos | + | # Deletar um Ingress |
| - | kubectl delete | + | kubectl delete |
| + | |||
| + | # Obter o IP ou hostname do Ingress | ||
| + | kubectl get ingress <ingress-name> | ||
| </ | </ | ||
| - | ==== 2.2. REMOÇÃO EM MASSA (USANDO FILTROS) | + | ===== 2. LIMPEZA E REMOÇÃO EM LOTE ===== |
| - | <note warning> | + | ==== 2.1. LIMPEZA GERAL ==== |
| - | **AVISO DE SEGURANÇA**: | + | |
| - | </ | + | |
| <code bash> | <code bash> | ||
| - | # Remove | + | # Deletar |
| kubectl delete all --all -n < | kubectl delete all --all -n < | ||
| - | # Remove recursos por labels (etiquetas) | + | # Deletar todos os pods em um namespace |
| - | kubectl delete pods -l app=nginx | + | kubectl delete pods --all -n < |
| - | kubectl delete | + | |
| - | # Remove | + | # Deletar todos os deployments em um namespace |
| - | kubectl | + | kubectl delete deployments --all -n < |
| + | |||
| + | # Deletar todos os services em um namespace | ||
| + | kubectl delete services --all -n < | ||
| + | |||
| + | # Deletar todos os ConfigMaps em um namespace | ||
| + | kubectl delete configmaps --all -n < | ||
| + | |||
| + | # Deletar todos os Secrets em um namespace | ||
| + | kubectl delete secrets --all -n < | ||
| + | |||
| + | # Deletar todos os PVCs em um namespace | ||
| + | kubectl | ||
| + | |||
| + | # Deletar recursos por label | ||
| + | kubectl delete | ||
| + | |||
| + | # Deletar recursos por tipo e label | ||
| + | kubectl delete deployment, | ||
| </ | </ | ||
| - | ==== 2.3. LIMPEZA | + | ==== 2.2. ANÁLISE |
| - | O Kubernetes não limpa imagens diretamente via `kubectl`. Isso deve ser feito no runtime do nó (Docker ou Containerd). | + | <code bash> |
| + | # Exibir o uso de CPU e memória dos pods | ||
| + | kubectl | ||
| + | |||
| + | # Exibir o uso de CPU e memória dos nodes | ||
| + | kubectl top nodes | ||
| + | |||
| + | # Exibir o uso detalhado de recursos em todos os namespaces | ||
| + | kubectl top pods --all-namespaces | ||
| + | |||
| + | # Exibir o uso de recursos de um pod específico | ||
| + | kubectl top pod < | ||
| + | </ | ||
| + | |||
| + | ===== 3. DICAS AVANÇADAS E DEBUG ===== | ||
| + | |||
| + | ==== 3.1. APLICAR MANIFESTOS YAML ==== | ||
| <code bash> | <code bash> | ||
| - | # Se o nó usa Containerd | + | # Aplicar um manifesto YAML (criar ou atualizar) |
| - | crictl rmi --prune | + | kubectl apply -f < |
| + | |||
| + | # Aplicar todos os manifestos | ||
| + | kubectl apply -f < | ||
| + | |||
| + | # Aplicar um manifesto com validação prévia (dry-run) | ||
| + | kubectl apply -f < | ||
| + | |||
| + | # Aplicar e visualizar as mudanças que serão feitas | ||
| + | kubectl apply -f < | ||
| + | |||
| + | # Deletar recursos definidos em um manifesto | ||
| + | kubectl delete -f < | ||
| + | |||
| + | # Exibir o manifesto de um recurso em formato YAML | ||
| + | kubectl get < | ||
| + | |||
| + | # Exibir o manifesto de um recurso em formato JSON | ||
| + | kubectl get < | ||
| + | |||
| + | # Editar um recurso diretamente | ||
| + | kubectl edit < | ||
| - | # Se o nó usa Docker | + | # Aplicar um patch (modificação parcial) a um recurso |
| - | docker image prune -a | + | kubectl patch < |
| </ | </ | ||
| - | ===== 3. DICAS AVANÇADAS | + | ==== 3.2. LABELS |
| - | ==== 3.1. DEBUG AVANÇADO | + | <code bash> |
| + | # Listar recursos com um label específico | ||
| + | kubectl get pods -l app=myapp | ||
| + | |||
| + | # Listar recursos com múltiplos labels | ||
| + | kubectl get pods -l app=myapp, | ||
| + | |||
| + | # Listar recursos que NÃO possuem um label | ||
| + | kubectl get pods -l ' | ||
| + | |||
| + | # Adicionar um label a um pod | ||
| + | kubectl label pod < | ||
| + | |||
| + | # Remover um label de um pod | ||
| + | kubectl label pod < | ||
| + | |||
| + | # Adicionar um label a todos os pods com um seletor | ||
| + | kubectl label pods -l app=oldname app=newname --overwrite | ||
| + | |||
| + | # Exibir labels de um recurso | ||
| + | kubectl get pods --show-labels | ||
| + | </ | ||
| + | |||
| + | ==== 3.3. PORT FORWARDING | ||
| <code bash> | <code bash> | ||
| - | # Cria um pod temporário para testes de rede | + | # Encaminhar uma porta local para um pod |
| - | kubectl | + | kubectl |
| + | |||
| + | # Encaminhar uma porta local para um service | ||
| + | kubectl port-forward service/< | ||
| - | # Port-Forward: | + | # Encaminhar uma porta local para um deployment |
| - | kubectl port-forward | + | kubectl port-forward |
| - | # Visualiza o YAML de um recurso existente (útil para backup/ | + | # Encaminhar em background |
| - | kubectl | + | kubectl |
| </ | </ | ||
| - | ==== 3.2. ALIASES RECOMENDADOS (ADICIONAR AO ~/ | + | ==== 3.4. ROLLOUTS E ATUALIZAÇÕES |
| <code bash> | <code bash> | ||
| - | # Atalho principal | + | # Verificar o status de um rollout |
| - | alias k='kubectl' | + | kubectl |
| - | # Atalhos | + | # Visualizar o histórico |
| + | kubectl rollout history deployment/< | ||
| + | |||
| + | # Visualizar detalhes de uma revisão específica | ||
| + | kubectl rollout history deployment/< | ||
| + | |||
| + | # Reverter para a versão anterior | ||
| + | kubectl rollout undo deployment/< | ||
| + | |||
| + | # Reverter para uma revisão específica | ||
| + | kubectl rollout undo deployment/< | ||
| + | |||
| + | # Pausar um rollout | ||
| + | kubectl rollout pause deployment/< | ||
| + | |||
| + | # Retomar um rollout pausado | ||
| + | kubectl rollout resume deployment/< | ||
| + | |||
| + | # Reiniciar um deployment (mata todos os pods e cria novos) | ||
| + | kubectl rollout restart deployment/< | ||
| + | </ | ||
| + | |||
| + | ==== 3.5. DEBUGGING E TROUBLESHOOTING ==== | ||
| + | |||
| + | <code bash> | ||
| + | # Descrever um recurso (informações detalhadas e eventos) | ||
| + | kubectl describe < | ||
| + | |||
| + | # Visualizar eventos do cluster | ||
| + | kubectl get events | ||
| + | |||
| + | # Visualizar eventos de um namespace específico | ||
| + | kubectl get events -n < | ||
| + | |||
| + | # Visualizar eventos ordenados por timestamp | ||
| + | kubectl get events --sort-by=' | ||
| + | |||
| + | # Verificar a saúde de um node | ||
| + | kubectl describe node < | ||
| + | |||
| + | # Listar todos os nodes | ||
| + | kubectl get nodes | ||
| + | |||
| + | # Exibir informações detalhadas de um node | ||
| + | kubectl describe node < | ||
| + | |||
| + | # Verificar os logs do kubelet em um node (requer acesso SSH) | ||
| + | journalctl -u kubelet -n 100 | ||
| + | |||
| + | # Executar um comando de debug em um pod | ||
| + | kubectl debug pod/< | ||
| + | |||
| + | # Criar um pod de debug efêmero | ||
| + | kubectl run -it --rm debug --image=busybox --restart=Never -- sh | ||
| + | |||
| + | # Verificar a capacidade de um node | ||
| + | kubectl describe node < | ||
| + | </ | ||
| + | |||
| + | ==== 3.6. RECURSOS CUSTOMIZADOS (CRD) ==== | ||
| + | |||
| + | <code bash> | ||
| + | # Listar todos os Custom Resource Definitions | ||
| + | kubectl get crd | ||
| + | |||
| + | # Exibir informações sobre um CRD | ||
| + | kubectl describe crd < | ||
| + | |||
| + | # Listar recursos customizados de um tipo específico | ||
| + | kubectl get < | ||
| + | |||
| + | # Deletar um recurso customizado | ||
| + | kubectl delete < | ||
| + | </ | ||
| + | |||
| + | ==== 3.7. RBAC (Role-Based Access Control) ==== | ||
| + | |||
| + | <code bash> | ||
| + | # Listar todas as Roles | ||
| + | kubectl get roles | ||
| + | |||
| + | # Listar todas as ClusterRoles | ||
| + | kubectl get clusterroles | ||
| + | |||
| + | # Exibir informações sobre uma Role | ||
| + | kubectl describe role < | ||
| + | |||
| + | # Listar todas as RoleBindings | ||
| + | kubectl get rolebindings | ||
| + | |||
| + | # Listar todas as ClusterRoleBindings | ||
| + | kubectl get clusterrolebindings | ||
| + | |||
| + | # Criar uma Role a partir de um manifesto | ||
| + | kubectl apply -f < | ||
| + | |||
| + | # Criar uma RoleBinding | ||
| + | kubectl create rolebinding < | ||
| + | |||
| + | # Verificar permissões de um usuário | ||
| + | kubectl auth can-i get pods --as=< | ||
| + | |||
| + | # Verificar permissões de uma service account | ||
| + | kubectl auth can-i get pods --as=system: | ||
| + | </ | ||
| + | |||
| + | ==== 3.8. MONITORAMENTO E MÉTRICAS ==== | ||
| + | |||
| + | <code bash> | ||
| + | # Exibir uso de recursos dos pods | ||
| + | kubectl top pods | ||
| + | |||
| + | # Exibir uso de recursos dos nodes | ||
| + | kubectl top nodes | ||
| + | |||
| + | # Exibir uso detalhado de recursos | ||
| + | kubectl top pods --all-namespaces --containers | ||
| + | |||
| + | # Obter informações de um pod em formato JSON | ||
| + | kubectl get pod < | ||
| + | |||
| + | # Exibir apenas o status de um pod | ||
| + | kubectl get pod < | ||
| + | |||
| + | # Exibir o IP de um pod | ||
| + | kubectl get pod < | ||
| + | |||
| + | # Exibir o node em que um pod está rodando | ||
| + | kubectl get pod < | ||
| + | </ | ||
| + | |||
| + | ==== 3.9. FERRAMENTAS COMPLEMENTARES ==== | ||
| + | |||
| + | <code bash> | ||
| + | # Instalar o Helm (gerenciador de pacotes para Kubernetes) | ||
| + | curl https:// | ||
| + | |||
| + | # Adicionar um repositório Helm | ||
| + | helm repo add < | ||
| + | |||
| + | # Listar repositórios Helm | ||
| + | helm repo list | ||
| + | |||
| + | # Buscar um chart no repositório | ||
| + | helm search repo < | ||
| + | |||
| + | # Instalar um chart Helm | ||
| + | helm install < | ||
| + | |||
| + | # Listar releases Helm instalados | ||
| + | helm list | ||
| + | |||
| + | # Atualizar um release Helm | ||
| + | helm upgrade < | ||
| + | |||
| + | # Desinstalar um release Helm | ||
| + | helm uninstall < | ||
| + | |||
| + | # Instalar o Kustomize (ferramenta de customização de manifestos) | ||
| + | curl -s " | ||
| + | |||
| + | # Aplicar um Kustomization | ||
| + | kubectl apply -k < | ||
| + | </ | ||
| + | |||
| + | ==== 3.10. NETWORK POLICIES ==== | ||
| + | |||
| + | <code bash> | ||
| + | # Listar todas as Network Policies | ||
| + | kubectl get networkpolicies | ||
| + | |||
| + | # Exibir informações sobre uma Network Policy | ||
| + | kubectl describe networkpolicy < | ||
| + | |||
| + | # Criar uma Network Policy a partir de um manifesto | ||
| + | kubectl apply -f < | ||
| + | |||
| + | # Deletar uma Network Policy | ||
| + | kubectl delete networkpolicy < | ||
| + | </ | ||
| + | |||
| + | ===== 4. DICAS IMPORTANTES E ALIASES ===== | ||
| + | |||
| + | ==== 4.1. DICAS IMPORTANTES ==== | ||
| + | |||
| + | 1. **Sempre use namespaces**: | ||
| + | |||
| + | 2. **Use labels e seletores**: | ||
| + | |||
| + | 3. **Implemente resource requests e limits**: Defina requisitos de CPU e memória para evitar problemas de scheduling. | ||
| + | |||
| + | 4. **Use Health Checks**: Configure liveness probes e readiness probes para melhor confiabilidade. | ||
| + | |||
| + | 5. **Versione seus manifestos**: | ||
| + | |||
| + | 6. **Use ConfigMaps e Secrets**: Separe configuração de código. | ||
| + | |||
| + | 7. **Implemente RBAC**: Restrinja permissões usando Roles e RoleBindings. | ||
| + | |||
| + | 8. **Monitore seus recursos**: Use `kubectl top` e ferramentas de monitoramento para acompanhar o uso de recursos. | ||
| + | |||
| + | ==== 4.2. ALIASES AVANÇADOS (ADICIONAR AO ~/.bashrc) ==== | ||
| + | |||
| + | <code bash> | ||
| + | # Listar pods com mais detalhes | ||
| alias kgp=' | alias kgp=' | ||
| - | alias kgs=' | + | alias kgpa=' |
| + | alias kgpw=' | ||
| + | |||
| + | # Listar deployments | ||
| alias kgd=' | alias kgd=' | ||
| - | alias kns=' | + | alias kgda=' |
| + | |||
| + | # Listar services | ||
| + | alias kgs=' | ||
| + | alias kgsa=' | ||
| + | |||
| + | # Descrever recursos | ||
| + | alias kdp=' | ||
| + | alias kdd=' | ||
| + | alias kds=' | ||
| + | |||
| + | # Logs | ||
| + | alias kl=' | ||
| + | alias klf=' | ||
| + | |||
| + | # Executar comando em um pod | ||
| + | alias kex=' | ||
| + | |||
| + | # Aplicar manifesto | ||
| + | alias ka=' | ||
| + | |||
| + | # Deletar recurso | ||
| + | alias kdel=' | ||
| + | |||
| + | # Port forwarding | ||
| + | alias kpf=' | ||
| + | |||
| + | # Editar recurso | ||
| + | alias ke=' | ||
| + | |||
| + | # Rollout | ||
| + | alias kr=' | ||
| + | |||
| + | # Contexto | ||
| + | alias kcc=' | ||
| + | alias kcu=' | ||
| + | |||
| + | # Namespace | ||
| + | alias kn=' | ||
| + | alias kgn=' | ||
| + | |||
| + | # Listar todos os recursos | ||
| + | alias kga=' | ||
| - | # Atalhos de limpeza | + | # Obter informações do cluster |
| - | alias kclean-evicted="kubectl | + | alias kci='kubectl |
| - | alias kclean-failed=" | + | |
| - | # Atalhos de monitoramento | + | # Verificar versão |
| - | alias ktop=' | + | alias kv=' |
| - | alias ktop-pods=' | + | |
| </ | </ | ||
| - | ==== 3.3. OTIMIZAÇÃO DE RECURSOS (BEST PRACTICES) | + | ===== 5. EXEMPLOS PRÁTICOS ===== |
| - | 1. **Defina Limits e Requests**: Sempre configure `resources.requests` e `resources.limits` para evitar que um pod consuma todos os recursos do nó. | + | ==== 5.1. EXEMPLO: DEPLOYMENT COM NGINX ==== |
| - | 2. **Use Horizontal Pod Autoscaler (HPA)**: Automatize o escalonamento baseado no uso de CPU/ | + | |
| - | 3. **PDB (Pod Disruption Budgets)**: Garanta a disponibilidade mínima durante manutenções nos nós. | + | |
| - | 4. **Node Affinity/ | + | |
| - | ===== 4. SCRIPTS DE MANUTENÇÃO ===== | + | <code yaml> |
| + | apiVersion: apps/v1 | ||
| + | kind: Deployment | ||
| + | metadata: | ||
| + | name: nginx-deployment | ||
| + | labels: | ||
| + | app: nginx | ||
| + | spec: | ||
| + | replicas: 3 | ||
| + | selector: | ||
| + | matchLabels: | ||
| + | app: nginx | ||
| + | template: | ||
| + | metadata: | ||
| + | labels: | ||
| + | app: nginx | ||
| + | spec: | ||
| + | containers: | ||
| + | - name: nginx | ||
| + | image: nginx:1.14.2 | ||
| + | ports: | ||
| + | - containerPort: | ||
| + | resources: | ||
| + | requests: | ||
| + | memory: " | ||
| + | cpu: " | ||
| + | limits: | ||
| + | memory: " | ||
| + | cpu: " | ||
| + | livenessProbe: | ||
| + | httpGet: | ||
| + | path: / | ||
| + | port: 80 | ||
| + | initialDelaySeconds: | ||
| + | periodSeconds: | ||
| + | readinessProbe: | ||
| + | httpGet: | ||
| + | path: / | ||
| + | port: 80 | ||
| + | initialDelaySeconds: | ||
| + | periodSeconds: | ||
| + | </ | ||
| - | === Script: check_cluster_health.sh === | + | ==== 5.2. EXEMPLO: SERVICE PARA EXPOR O DEPLOYMENT ==== |
| - | <file bash check_health.sh> | + | |
| + | <code yaml> | ||
| + | apiVersion: v1 | ||
| + | kind: Service | ||
| + | metadata: | ||
| + | name: nginx-service | ||
| + | spec: | ||
| + | selector: | ||
| + | app: nginx | ||
| + | ports: | ||
| + | - protocol: TCP | ||
| + | port: 80 | ||
| + | targetPort: 80 | ||
| + | type: LoadBalancer | ||
| + | </ | ||
| + | |||
| + | ==== 5.3. EXEMPLO: CONFIGMAP ==== | ||
| + | |||
| + | <code yaml> | ||
| + | apiVersion: v1 | ||
| + | kind: ConfigMap | ||
| + | metadata: | ||
| + | name: app-config | ||
| + | data: | ||
| + | database_url: | ||
| + | debug_mode: " | ||
| + | log_level: " | ||
| + | </ | ||
| + | |||
| + | ==== 5.4. EXEMPLO: SECRET ==== | ||
| + | |||
| + | <code yaml> | ||
| + | apiVersion: v1 | ||
| + | kind: Secret | ||
| + | metadata: | ||
| + | name: app-secrets | ||
| + | type: Opaque | ||
| + | stringData: | ||
| + | database_user: | ||
| + | database_password: | ||
| + | </ | ||
| + | |||
| + | ==== 5.5. EXEMPLO: PERSISTENT VOLUME E PERSISTENT VOLUME CLAIM ==== | ||
| + | |||
| + | <code yaml> | ||
| + | apiVersion: v1 | ||
| + | kind: PersistentVolume | ||
| + | metadata: | ||
| + | name: pv-storage | ||
| + | spec: | ||
| + | capacity: | ||
| + | storage: 10Gi | ||
| + | accessModes: | ||
| + | - ReadWriteOnce | ||
| + | hostPath: | ||
| + | path: "/ | ||
| + | --- | ||
| + | apiVersion: v1 | ||
| + | kind: PersistentVolumeClaim | ||
| + | metadata: | ||
| + | name: pvc-storage | ||
| + | spec: | ||
| + | accessModes: | ||
| + | - ReadWriteOnce | ||
| + | resources: | ||
| + | requests: | ||
| + | storage: 5Gi | ||
| + | </ | ||
| + | |||
| + | ==== 5.6. EXEMPLO: INGRESS ==== | ||
| + | |||
| + | <code yaml> | ||
| + | apiVersion: networking.k8s.io/ | ||
| + | kind: Ingress | ||
| + | metadata: | ||
| + | name: nginx-ingress | ||
| + | spec: | ||
| + | ingressClassName: | ||
| + | rules: | ||
| + | - host: myapp.example.com | ||
| + | http: | ||
| + | paths: | ||
| + | - path: / | ||
| + | pathType: Prefix | ||
| + | backend: | ||
| + | service: | ||
| + | name: nginx-service | ||
| + | port: | ||
| + | number: 80 | ||
| + | </ | ||
| + | |||
| + | ==== 5.7. EXEMPLO: STATEFULSET ==== | ||
| + | |||
| + | <code yaml> | ||
| + | apiVersion: apps/v1 | ||
| + | kind: StatefulSet | ||
| + | metadata: | ||
| + | name: mysql | ||
| + | spec: | ||
| + | serviceName: | ||
| + | replicas: 1 | ||
| + | selector: | ||
| + | matchLabels: | ||
| + | app: mysql | ||
| + | template: | ||
| + | metadata: | ||
| + | labels: | ||
| + | app: mysql | ||
| + | spec: | ||
| + | containers: | ||
| + | - name: mysql | ||
| + | image: mysql:5.7 | ||
| + | ports: | ||
| + | - containerPort: | ||
| + | env: | ||
| + | - name: MYSQL_ROOT_PASSWORD | ||
| + | valueFrom: | ||
| + | secretKeyRef: | ||
| + | name: mysql-secret | ||
| + | key: password | ||
| + | volumeMounts: | ||
| + | - name: mysql-storage | ||
| + | mountPath: / | ||
| + | volumeClaimTemplates: | ||
| + | - metadata: | ||
| + | name: mysql-storage | ||
| + | spec: | ||
| + | accessModes: | ||
| + | resources: | ||
| + | requests: | ||
| + | storage: 10Gi | ||
| + | </ | ||
| + | |||
| + | ==== 5.8. EXEMPLO: DAEMONSET ==== | ||
| + | |||
| + | <code yaml> | ||
| + | apiVersion: apps/v1 | ||
| + | kind: DaemonSet | ||
| + | metadata: | ||
| + | name: node-exporter | ||
| + | spec: | ||
| + | selector: | ||
| + | matchLabels: | ||
| + | app: node-exporter | ||
| + | template: | ||
| + | metadata: | ||
| + | labels: | ||
| + | app: node-exporter | ||
| + | spec: | ||
| + | containers: | ||
| + | - name: node-exporter | ||
| + | image: prom/ | ||
| + | ports: | ||
| + | - containerPort: | ||
| + | volumeMounts: | ||
| + | - name: proc | ||
| + | mountPath: / | ||
| + | readOnly: true | ||
| + | - name: sys | ||
| + | mountPath: /host/sys | ||
| + | readOnly: true | ||
| + | volumes: | ||
| + | - name: proc | ||
| + | hostPath: | ||
| + | path: /proc | ||
| + | - name: sys | ||
| + | hostPath: | ||
| + | path: /sys | ||
| + | </ | ||
| + | |||
| + | ==== 5.9. EXEMPLO: JOB ==== | ||
| + | |||
| + | <code yaml> | ||
| + | apiVersion: batch/v1 | ||
| + | kind: Job | ||
| + | metadata: | ||
| + | name: backup-job | ||
| + | spec: | ||
| + | template: | ||
| + | spec: | ||
| + | containers: | ||
| + | - name: backup | ||
| + | image: backup-image: | ||
| + | command: [" | ||
| + | restartPolicy: | ||
| + | backoffLimit: | ||
| + | </ | ||
| + | |||
| + | ==== 5.10. EXEMPLO: CRONJOB ==== | ||
| + | |||
| + | <code yaml> | ||
| + | apiVersion: batch/v1 | ||
| + | kind: CronJob | ||
| + | metadata: | ||
| + | name: daily-backup | ||
| + | spec: | ||
| + | schedule: "0 2 * * *" | ||
| + | jobTemplate: | ||
| + | spec: | ||
| + | template: | ||
| + | spec: | ||
| + | containers: | ||
| + | - name: backup | ||
| + | image: backup-image: | ||
| + | command: [" | ||
| + | restartPolicy: | ||
| + | </ | ||
| + | |||
| + | ===== 6. SCRIPTS ÚTEIS ===== | ||
| + | |||
| + | === Script: Listar todos os recursos do cluster | ||
| + | <file bash list_all_resources.sh> | ||
| #!/bin/bash | #!/bin/bash | ||
| - | echo " | + | # Lista todos os recursos do cluster de forma organizada |
| + | |||
| + | echo " | ||
| kubectl get nodes | kubectl get nodes | ||
| - | echo -e "\n=== PODS NÃO SAUDÁVEIS | + | |
| - | kubectl get pods -A | grep -vE ' | + | echo -e "\n=== NAMESPACES ===" |
| - | echo -e " | + | kubectl get namespaces |
| - | kubectl get events | + | |
| + | echo -e "\n=== PODS (todos os namespaces) | ||
| + | kubectl get pods -A | ||
| + | |||
| + | echo -e "\n=== DEPLOYMENTS ===" | ||
| + | kubectl get deployments -A | ||
| + | |||
| + | echo -e " | ||
| + | kubectl get services | ||
| + | |||
| + | echo -e "\n=== INGRESS ===" | ||
| + | kubectl get ingress | ||
| + | |||
| + | echo -e "\n=== PERSISTENT VOLUMES ===" | ||
| + | kubectl get pv | ||
| + | |||
| + | echo -e "\n=== PERSISTENT VOLUME CLAIMS ===" | ||
| + | kubectl get pvc -A | ||
| + | |||
| + | echo -e "\n=== CONFIGMAPS ===" | ||
| + | kubectl get configmaps -A | ||
| + | |||
| + | echo -e "\n=== SECRETS ===" | ||
| + | kubectl get secrets -A | ||
| </ | </ | ||
| - | === Script: | + | === Script: |
| - | <file bash nuke_ns.sh> | + | <file bash cleanup_namespace.sh> |
| #!/bin/bash | #!/bin/bash | ||
| - | # Remove | + | # Deleta todos os recursos em um namespace |
| - | NS=$1 | + | |
| - | kubectl delete | + | NAMESPACE=${1: |
| - | # Se ainda existir, remove os finalizers (uso avançado) | + | |
| - | kubectl | + | echo " |
| + | |||
| + | kubectl delete | ||
| + | kubectl | ||
| + | kubectl | ||
| + | kubectl delete pvc --all -n $NAMESPACE | ||
| + | |||
| + | echo " | ||
| </ | </ | ||
| + | |||
| + | === Script: Monitorar recursos em tempo real === | ||
| + | <file bash monitor_resources.sh> | ||
| + | #!/bin/bash | ||
| + | # Monitora o uso de recursos dos pods em tempo real | ||
| + | |||
| + | echo " | ||
| + | watch -n 2 ' | ||
| + | </ | ||
| + | |||
| + | ===== 7. TROUBLESHOOTING COMUM ===== | ||
| + | |||
| + | ==== Problema: Pod não inicia ==== | ||
| + | |||
| + | <code bash> | ||
| + | # 1. Verificar o status do pod | ||
| + | kubectl describe pod < | ||
| + | |||
| + | # 2. Verificar os logs | ||
| + | kubectl logs < | ||
| + | |||
| + | # 3. Verificar eventos | ||
| + | kubectl get events --sort-by=' | ||
| + | |||
| + | # 4. Verificar se a imagem existe | ||
| + | kubectl get pod < | ||
| + | |||
| + | # 5. Verificar recursos disponíveis no node | ||
| + | kubectl describe node < | ||
| + | </ | ||
| + | |||
| + | ==== Problema: Pod em estado CrashLoopBackOff ==== | ||
| + | |||
| + | <code bash> | ||
| + | # 1. Verificar logs anteriores | ||
| + | kubectl logs < | ||
| + | |||
| + | # 2. Descrever o pod para ver eventos | ||
| + | kubectl describe pod < | ||
| + | |||
| + | # 3. Verificar o comando de inicialização | ||
| + | kubectl get pod < | ||
| + | |||
| + | # 4. Testar a imagem localmente | ||
| + | docker run -it < | ||
| + | </ | ||
| + | |||
| + | ==== Problema: Service não consegue alcançar o pod ==== | ||
| + | |||
| + | <code bash> | ||
| + | # 1. Verificar se o service existe | ||
| + | kubectl get service < | ||
| + | |||
| + | # 2. Verificar os endpoints | ||
| + | kubectl get endpoints < | ||
| + | |||
| + | # 3. Verificar os labels do pod e do service | ||
| + | kubectl get pod < | ||
| + | kubectl get service < | ||
| + | |||
| + | # 4. Testar conectividade dentro do cluster | ||
| + | kubectl run -it --rm debug --image=busybox --restart=Never -- wget -O- http://< | ||
| + | </ | ||
wiki/kubernetes/guia_de_comandos.1769091396.txt.gz · Last modified: by Wiki Administrator
