User Tools

Site Tools


wiki:kubernetes:guia_de_comandos

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

wiki:kubernetes:guia_de_comandos [2026/01/22 11:16] – created Wiki Administratorwiki: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 E OTIMIZAÇÃO ======+====== GUIA DE REFERÊNCIA RÁPIDA KUBERNETES - COMANDOS ESSENCIAIS ======
  
-Este guia de referência rápida (Cheat Sheet) compila os comandos Kubernetes (kubectl) mais utilizados, organizados por funcionalidade, para otimizar a administração, limpeza e manutenção de clusters.+Este guia de referência rápida (Cheat Sheet) compila os comandos Kubernetes mais utilizados, organizados por funcionalidade, para otimizar o desenvolvimento e a administração de ambientes conteinerizados em clusters Kubernetes.
  
 ===== 1. GERENCIAMENTO DE RECURSOS BÁSICOS ===== ===== 1. GERENCIAMENTO DE RECURSOS BÁSICOS =====
  
-==== 1.1. MONITORAMENTO INFORMAÇÕES DO SISTEMA ====+==== 1.1. CONFIGURAÇÃO CONTEXTOS ====
  
 <code bash> <code bash>
-Verifica a versão do cliente e do servidor Kubernetes +Verificar a versão do cliente kubectl 
-kubectl version --short+kubectl version --client
  
-Exibe informações do cluster (Master e Serviços)+Exibir informações do cluster
 kubectl cluster-info kubectl cluster-info
  
-Lista todos os nós do cluster e seu status +Listar todos os contextos disponíveis 
-kubectl get nodes+kubectl config get-contexts
  
-Exibe uso de recursos (CPU/Memória) dos nós (requer Metrics Server) +Obter contexto atual 
-kubectl top nodes+kubectl config current-context
  
-Exibe o uso de recursos (CPU/Memória) dos pods +Alternar para um contexto específico 
-kubectl top pods --all-namespaces+kubectl config use-context <context-name>
  
-Descreve detalhes de um nó específico (capacidade, alocação, eventos) +Exibir a configuração completa do kubeconfig 
-kubectl describe node <nome-do-no>+kubectl config view
  
-Lista eventos do cluster ordenados por tempo +Definir o namespace padrão para o contexto atual 
-kubectl get events --sort-by='.lastTimestamp'+kubectl config set-context --current --namespace=<namespace> 
 + 
 +# Criar um novo contexto 
 +kubectl config set-context <context-name> --cluster=<cluster> --user=<user>
 </code> </code>
  
-==== 1.2. GERENCIAMENTO DE PODS E WORKLOADS ====+==== 1.2. NAMESPACES ====
  
 <code bash> <code bash>
-Listagem de Pods +Listar todos os namespaces 
-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                  # Monitora mudanças nos pods em tempo real+
  
-Controle de Workloads +Criar um novo namespace 
-kubectl rollout restart deployment <nome> # Reinicia todos os pods de um deployment +kubectl create namespace <namespace-name>
-kubectl scale deployment <nome> --replicas=3 # Altera o número de réplicas +
-kubectl delete pod <nome                # Remove um pod específico (o ReplicaSet criará outro)+
  
-Execução Debug +Deletar um namespace (todos os recursos dentro dele
-kubectl exec -it <pod> -- bash            # Abre um terminal interativo dentro do pod +kubectl delete namespace <namespace-name>
-kubectl logs <pod>                        # Exibe os logs de um pod +
-kubectl logs -f <pod>                     # Segue os logs em tempo real (tail -f+
-kubectl logs <pod> -c <container        # Logs de um container específico em um pod multi-container+
  
-Operações de Arquivos +Exibir informações detalhadas sobre um namespace 
-kubectl cp <local-path<pod>:<path>      Copia arquivo do host para o pod +kubectl describe namespace <namespace-name> 
-kubectl cp <pod>:<path> <local-path     # Copia arquivo do pod para o host+ 
 +Definir um namespace como padrão para todos os comandos 
 +kubectl config set-context --current --namespace=<namespace-name> 
 + 
 +# Listar recursos em um namespace específico 
 +kubectl get pods --namespace=<namespace-name> 
 +kubectl get pods -n <namespace-name>
 </code> </code>
  
-==== 1.3. GERENCIAMENTO DE CONFIGURAÇÕES E STORAGE ====+==== 1.3. PODS ====
  
 <code bash> <code bash>
-# ConfigMaps e Secrets+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 <pod-name> 
 + 
 +# Visualizar logs de um pod 
 +kubectl logs <pod-name> 
 + 
 +# Seguir logs em tempo real (similar a 'tail -f') 
 +kubectl logs -f <pod-name> 
 + 
 +# Visualizar logs de um container específico em um pod multi-container 
 +kubectl logs <pod-name> -c <container-name> 
 + 
 +# Acessar um terminal interativo dentro de um pod 
 +kubectl exec -it <pod-name> -- /bin/bash 
 + 
 +# Executar um comando específico em um pod 
 +kubectl exec <pod-name> -- <comando> 
 + 
 +# Copiar arquivos do pod para o host 
 +kubectl cp <pod-name>:<caminho> <local-host> 
 + 
 +# Copiar arquivos do host para o pod 
 +kubectl cp <local-host> <pod-name>:<caminho> 
 + 
 +# Criar um pod a partir de uma imagem Docker 
 +kubectl run <pod-name> --image=<imagem>:<tag> 
 + 
 +# Deletar um pod 
 +kubectl delete pod <pod-name> 
 + 
 +# Deletar múltiplos pods 
 +kubectl delete pods <pod1> <pod2> <pod3> 
 + 
 +# Deletar todos os pods em um namespace 
 +kubectl delete pods --all 
 + 
 +# Exibir eventos de um pod 
 +kubectl describe pod <pod-name> | grep -A 10 Events 
 +</code> 
 + 
 +==== 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 <deployment-name> 
 + 
 +# Criar um deployment a partir de uma imagem 
 +kubectl create deployment <deployment-name> --image=<imagem>:<tag> 
 + 
 +# Escalar um deployment (aumentar/diminuir réplicas) 
 +kubectl scale deployment <deployment-name> --replicas=<número> 
 + 
 +# Atualizar a imagem de um deployment (rolling update) 
 +kubectl set image deployment/<deployment-name> <container-name>=<nova-imagem>:<tag> 
 + 
 +# Verificar o status do rollout (atualização) 
 +kubectl rollout status deployment/<deployment-name> 
 + 
 +# Visualizar o histórico de rollouts 
 +kubectl rollout history deployment/<deployment-name> 
 + 
 +# Reverter para a versão anterior do deployment 
 +kubectl rollout undo deployment/<deployment-name> 
 + 
 +# Reverter para uma revisão específica 
 +kubectl rollout undo deployment/<deployment-name> --to-revision=<número> 
 + 
 +# Pausar um rollout 
 +kubectl rollout pause deployment/<deployment-name> 
 + 
 +# Retomar um rollout pausado 
 +kubectl rollout resume deployment/<deployment-name> 
 + 
 +# Deletar um deployment 
 +kubectl delete deployment <deployment-name> 
 + 
 +# Editar um deployment (abre editor de texto) 
 +kubectl edit deployment <deployment-name> 
 +</code> 
 + 
 +==== 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 <service-name> 
 + 
 +# Criar um service do tipo ClusterIP (padrão, acesso interno) 
 +kubectl expose deployment <deployment-name> --type=ClusterIP --port=80 --target-port=8080 
 + 
 +# Criar um service do tipo NodePort (acesso externo via porta do node) 
 +kubectl expose deployment <deployment-name> --type=NodePort --port=80 --target-port=8080 
 + 
 +# Criar um service do tipo LoadBalancer (acesso externo com IP balanceado) 
 +kubectl expose deployment <deployment-name> --type=LoadBalancer --port=80 --target-port=8080 
 + 
 +# Deletar um service 
 +kubectl delete service <service-name> 
 + 
 +# Obter o IP externo de um LoadBalancer service 
 +kubectl get service <service-name> -o jsonpath='{.status.loadBalancer.ingress[0].ip}' 
 + 
 +# Listar endpoints de um service (pods que o service roteia tráfego) 
 +kubectl get endpoints <service-name> 
 +</code> 
 + 
 +==== 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 <configmap-name> --from-file=<arquivo>
 +
 +# Criar um ConfigMap a partir de um diretório
 +kubectl create configmap <configmap-name> --from-file=<diretório>
 +
 +# Criar um ConfigMap a partir de pares chave-valor
 +kubectl create configmap <configmap-name> --from-literal=chave1=valor1 --from-literal=chave2=valor2
 +
 +# Exibir o conteúdo de um ConfigMap
 +kubectl get configmap <configmap-name> -o yaml
 +
 +# Deletar um ConfigMap
 +kubectl delete configmap <configmap-name>
 +
 +# Listar todos os Secrets
 kubectl get secrets kubectl get secrets
-kubectl describe secret <nome>            # Mostra metadados (não o valor decodificado) 
-kubectl get secret <nome> -o jsonpath='{.data}' # Obtém valores codificados em base64 
  
-Volumes e Storage +Criar um Secret genérico 
-kubectl get pv                            Lista Persistent Volumes (Cluster-wide+kubectl create secret generic <secret-name> --from-literal=username=user --from-literal=password=pass 
-kubectl get pvc                           Lista Persistent Volume Claims (Namespace+ 
-kubectl describe pvc <nome              Verifica status da montagem e erros de bind+Criar um Secret a partir de um arquivo 
 +kubectl create secret generic <secret-name> --from-file=<arquivo> 
 + 
 +# Criar um Secret do tipo docker-registry (para autenticação em registries privados
 +kubectl create secret docker-registry <secret-name> --docker-server=<registry> --docker-username=<user> --docker-password=<pass> 
 + 
 +Exibir o conteúdo de um Secret (codificado em base64
 +kubectl get secret <secret-name-o yaml 
 + 
 +Decodificar um valor base64 de um Secret 
 +kubectl get secret <secret-name> -o jsonpath='{.data.chave}' | base64 --decode 
 + 
 +# Deletar um Secret 
 +kubectl delete secret <secret-name>
 </code> </code>
  
-===== 2LIMPEZA REMOÇÃO EM LOTE (OTIMIZAÇÃO DE ESPAÇO) =====+==== 1.7. VOLUMES PERSISTENT 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 <pv-name> 
 + 
 +# Exibir informações detalhadas sobre um PVC 
 +kubectl describe pvc <pvc-name> 
 + 
 +# Criar um PVC a partir de um manifesto YAML 
 +kubectl apply -f <arquivo-pvc.yaml> 
 + 
 +# Deletar um PVC 
 +kubectl delete pvc <pvc-name> 
 + 
 +# Deletar um PV 
 +kubectl delete pv <pv-name> 
 + 
 +# Listar Storage Classes disponíveis 
 +kubectl get storageclasses 
 +kubectl get sc 
 +</code>
  
-==== 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 delete pods --field-selector status.phase!=Running+kubectl get ingress
  
-Remove Pods em estado 'Evicted' (comum em falta de recursos no nó) +Exibir informações detalhadas sobre um Ingress 
-kubectl get pods -A | grep Evicted | awk '{print $2 " --namespace=" $1}' | xargs kubectl delete pod+kubectl describe ingress <ingress-name>
  
-Remove ReplicaSets antigos (que não possuem réplicas ativas) +Criar um Ingress a partir de um manifesto YAML 
-kubectl delete rs $(kubectl get rs -o jsonpath='{.items[?(@.spec.replicas==0)].metadata.name}')+kubectl apply -f <arquivo-ingress.yaml>
  
-Limpeza de Jobs concluídos +Deletar um Ingress 
-kubectl delete jobs --field-selector status.successful=1+kubectl delete ingress <ingress-name> 
 + 
 +# Obter o IP ou hostname do Ingress 
 +kubectl get ingress <ingress-name> -o jsonpath='{.status.loadBalancer.ingress[0].ip}'
 </code> </code>
  
-==== 2.2. REMOÇÃO EM MASSA (USANDO FILTROS) ====+===== 2. LIMPEZA E REMOÇÃO EM LOTE =====
  
-<note warning> +==== 2.1LIMPEZA GERAL ====
-**AVISO DE SEGURANÇA**: Comandos de remoção em massa podem afetar a disponibilidade do serviçoSempre valide com `get` antes de `delete`. +
-</note>+
  
 <code bash> <code bash>
-Remove todos os recursos de um namespace específico+Deletar todos os recursos em um namespace
 kubectl delete all --all -n <namespace> kubectl delete all --all -n <namespace>
  
-Remove recursos por labels (etiquetas) +Deletar todos os pods em um namespace 
-kubectl delete pods -l app=nginx +kubectl delete pods --all -n <namespace>
-kubectl delete all -l environment=dev+
  
-Remove PVCs que não estão sendo utilizados (Cuidado: apaga dados!) +Deletar todos os deployments em um namespace 
-kubectl get pvc | grep -v Bound | awk '{print $1}' | xargs kubectl delete pvc+kubectl delete deployments --all -n <namespace> 
 + 
 +# Deletar todos os services em um namespace 
 +kubectl delete services --all -n <namespace> 
 + 
 +# Deletar todos os ConfigMaps em um namespace 
 +kubectl delete configmaps --all -n <namespace> 
 + 
 +# Deletar todos os Secrets em um namespace 
 +kubectl delete secrets --all -n <namespace> 
 + 
 +# Deletar todos os PVCs em um namespace 
 +kubectl delete pvc --all -n <namespace> 
 + 
 +# Deletar recursos por label 
 +kubectl delete pods -l app=myapp 
 + 
 +# Deletar recursos por tipo e label 
 +kubectl delete deployment,service -l app=myapp
 </code> </code>
  
-==== 2.3LIMPEZA DE IMAGENS NOS NÓS (DENTRO DO NÓ) ====+==== 2.2ANÁLISE DE USO DE RECURSOS ====
  
-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 top pods 
 + 
 +# 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 <pod-name> 
 +</code> 
 + 
 +===== 3. DICAS AVANÇADAS E DEBUG ===== 
 + 
 +==== 3.1APLICAR MANIFESTOS YAML ====
  
 <code bash> <code bash>
-Se o nó usa Containerd (comum em clusters modernos+Aplicar um manifesto YAML (criar ou atualizar) 
-crictl rmi --prune+kubectl apply -f <arquivo.yaml> 
 + 
 +# Aplicar todos os manifestos em um diretório 
 +kubectl apply -f <diretório> 
 + 
 +# Aplicar um manifesto com validação prévia (dry-run
 +kubectl apply -f <arquivo.yaml> --dry-run=client 
 + 
 +# Aplicar e visualizar as mudanças que serão feitas 
 +kubectl apply -f <arquivo.yaml> --dry-run=server 
 + 
 +# Deletar recursos definidos em um manifesto 
 +kubectl delete -f <arquivo.yaml> 
 + 
 +# Exibir o manifesto de um recurso em formato YAML 
 +kubectl get <tipo> <nome> -o yaml 
 + 
 +# Exibir o manifesto de um recurso em formato JSON 
 +kubectl get <tipo> <nome> -o json 
 + 
 +# Editar um recurso diretamente 
 +kubectl edit <tipo> <nome>
  
-Se o nó usa Docker +Aplicar um patch (modificação parcial) a um recurso 
-docker image prune -a+kubectl patch <tipo> <nome> -p '{"spec":{"replicas":3}}'
 </code> </code>
  
-===== 3. DICAS AVANÇADAS ALIASES =====+==== 3.2. LABELS SELETORES ====
  
-==== 3.1DEBUG 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,tier=frontend 
 + 
 +# Listar recursos que NÃO possuem um label 
 +kubectl get pods -l '!app' 
 + 
 +# Adicionar um label a um pod 
 +kubectl label pod <pod-name> app=myapp 
 + 
 +# Remover um label de um pod 
 +kubectl label pod <pod-name> app- 
 + 
 +# 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 
 +</code> 
 + 
 +==== 3.3PORT FORWARDING ====
  
 <code bash> <code bash>
-Cria um pod temporário para testes de rede +Encaminhar uma porta local para um pod 
-kubectl run busybox --image=busybox -it --rm -- restart=Never -- sh+kubectl port-forward pod/<pod-name> 8080:8080 
 + 
 +# Encaminhar uma porta local para um service 
 +kubectl port-forward service/<service-name> 8080:80
  
-Port-Forward: Acessa um serviço localmente sem expor via LoadBalancer +Encaminhar uma porta local para um deployment 
-kubectl port-forward svc/<nome-servico> 8080:80+kubectl port-forward deployment/<deployment-name> 8080:8080
  
-Visualiza o YAML de um recurso existente (útil para backup/clonagem) +Encaminhar em background 
-kubectl get deployment <nome> -o yaml backup.yaml+kubectl port-forward pod/<pod-name8080:8080 &
 </code> </code>
  
-==== 3.2ALIASES RECOMENDADOS (ADICIONAR AO ~/.bashrc) ====+==== 3.4ROLLOUTS E ATUALIZAÇÕES ====
  
 <code bash> <code bash>
-Atalho principal +Verificar o status de um rollout 
-alias k='kubectl'+kubectl rollout status deployment/<deployment-name>
  
-Atalhos de navegação visualização+Visualizar o histórico de revisões 
 +kubectl rollout history deployment/<deployment-name> 
 + 
 +# Visualizar detalhes de uma revisão específica 
 +kubectl rollout history deployment/<deployment-name> --revision=<número> 
 + 
 +# Reverter para a versão anterior 
 +kubectl rollout undo deployment/<deployment-name> 
 + 
 +# Reverter para uma revisão específica 
 +kubectl rollout undo deployment/<deployment-name> --to-revision=<número> 
 + 
 +# Pausar um rollout 
 +kubectl rollout pause deployment/<deployment-name> 
 + 
 +# Retomar um rollout pausado 
 +kubectl rollout resume deployment/<deployment-name> 
 + 
 +# Reiniciar um deployment (mata todos os pods cria novos) 
 +kubectl rollout restart deployment/<deployment-name> 
 +</code> 
 + 
 +==== 3.5. DEBUGGING E TROUBLESHOOTING ==== 
 + 
 +<code bash> 
 +# Descrever um recurso (informações detalhadas e eventos) 
 +kubectl describe <tipo> <nome> 
 + 
 +# Visualizar eventos do cluster 
 +kubectl get events 
 + 
 +# Visualizar eventos de um namespace específico 
 +kubectl get events -n <namespace> 
 + 
 +# Visualizar eventos ordenados por timestamp 
 +kubectl get events --sort-by='.lastTimestamp' 
 + 
 +# Verificar a saúde de um node 
 +kubectl describe node <node-name> 
 + 
 +# Listar todos os nodes 
 +kubectl get nodes 
 + 
 +# Exibir informações detalhadas de um node 
 +kubectl describe node <node-name> 
 + 
 +# 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/<pod-name> -it --image=busybox 
 + 
 +# 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 <node-name> | grep -A 5 "Allocated resources" 
 +</code> 
 + 
 +==== 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 <crd-name> 
 + 
 +# Listar recursos customizados de um tipo específico 
 +kubectl get <custom-resource-type> 
 + 
 +# Deletar um recurso customizado 
 +kubectl delete <custom-resource-type> <nome> 
 +</code> 
 + 
 +==== 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 <role-name> 
 + 
 +# 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 <arquivo-role.yaml> 
 + 
 +# Criar uma RoleBinding 
 +kubectl create rolebinding <binding-name> --clusterrole=<role> --serviceaccount=<namespace>:<sa> 
 + 
 +# Verificar permissões de um usuário 
 +kubectl auth can-i get pods --as=<usuário> 
 + 
 +# Verificar permissões de uma service account 
 +kubectl auth can-i get pods --as=system:serviceaccount:<namespace>:<sa> 
 +</code> 
 + 
 +==== 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 <pod-name> -o json 
 + 
 +# Exibir apenas o status de um pod 
 +kubectl get pod <pod-name> -o jsonpath='{.status.phase}' 
 + 
 +# Exibir o IP de um pod 
 +kubectl get pod <pod-name> -o jsonpath='{.status.podIP}' 
 + 
 +# Exibir o node em que um pod está rodando 
 +kubectl get pod <pod-name> -o jsonpath='{.spec.nodeName}' 
 +</code> 
 + 
 +==== 3.9. FERRAMENTAS COMPLEMENTARES ==== 
 + 
 +<code bash> 
 +# Instalar o Helm (gerenciador de pacotes para Kubernetes) 
 +curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash 
 + 
 +# Adicionar um repositório Helm 
 +helm repo add <repo-name> <repo-url> 
 + 
 +# Listar repositórios Helm 
 +helm repo list 
 + 
 +# Buscar um chart no repositório 
 +helm search repo <chart-name> 
 + 
 +# Instalar um chart Helm 
 +helm install <release-name> <chart-name> 
 + 
 +# Listar releases Helm instalados 
 +helm list 
 + 
 +# Atualizar um release Helm 
 +helm upgrade <release-name> <chart-name> 
 + 
 +# Desinstalar um release Helm 
 +helm uninstall <release-name> 
 + 
 +# Instalar o Kustomize (ferramenta de customização de manifestos) 
 +curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash 
 + 
 +# Aplicar um Kustomization 
 +kubectl apply -k <diretório> 
 +</code> 
 + 
 +==== 3.10. NETWORK POLICIES ==== 
 + 
 +<code bash> 
 +# Listar todas as Network Policies 
 +kubectl get networkpolicies 
 + 
 +# Exibir informações sobre uma Network Policy 
 +kubectl describe networkpolicy <policy-name> 
 + 
 +# Criar uma Network Policy a partir de um manifesto 
 +kubectl apply -f <arquivo-networkpolicy.yaml> 
 + 
 +# Deletar uma Network Policy 
 +kubectl delete networkpolicy <policy-name> 
 +</code> 
 + 
 +===== 4. DICAS IMPORTANTES E ALIASES ===== 
 + 
 +==== 4.1. DICAS IMPORTANTES ==== 
 + 
 +1. **Sempre use namespaces**: Organize seus recursos em namespaces para melhor isolamento e gerenciamento. 
 + 
 +2. **Use labels e seletores**: Labels facilitam a organização e seleção de recursos. 
 + 
 +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**: Mantenha seus arquivos YAML em controle de versão (Git). 
 + 
 +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='kubectl get pods' alias kgp='kubectl get pods'
-alias kgs='kubectl get svc'+alias kgpa='kubectl get pods --all-namespaces' 
 +alias kgpw='kubectl get pods -o wide' 
 + 
 +# Listar deployments
 alias kgd='kubectl get deployments' alias kgd='kubectl get deployments'
-alias kns='kubectl config set-context --current --namespace'Muda namespace padrão+alias kgda='kubectl get deployments --all-namespaces' 
 + 
 +# Listar services 
 +alias kgs='kubectl get services' 
 +alias kgsa='kubectl get services --all-namespaces' 
 + 
 +# Descrever recursos 
 +alias kdp='kubectl describe pod' 
 +alias kdd='kubectl describe deployment' 
 +alias kds='kubectl describe service' 
 + 
 +# Logs 
 +alias kl='kubectl logs' 
 +alias klf='kubectl logs -f' 
 + 
 +# Executar comando em um pod 
 +alias kex='kubectl exec -it' 
 + 
 +# Aplicar manifesto 
 +alias ka='kubectl apply -f' 
 + 
 +# Deletar recurso 
 +alias kdel='kubectl delete' 
 + 
 +# Port forwarding 
 +alias kpf='kubectl port-forward' 
 + 
 +# Editar recurso 
 +alias ke='kubectl edit' 
 + 
 +# Rollout 
 +alias kr='kubectl rollout' 
 + 
 +# Contexto 
 +alias kcc='kubectl config current-context' 
 +alias kcu='kubectl config use-context' 
 + 
 +# Namespace 
 +alias kn='kubectl config set-context --current --namespace' 
 +alias kgn='kubectl get namespaces' 
 + 
 +Listar todos os recursos 
 +alias kga='kubectl get all'
  
-Atalhos de limpeza +Obter informações do cluster 
-alias kclean-evicted="kubectl get pods -A | grep Evicted | awk '{print \$2 \" --namespace=\" \$1}' | xargs kubectl delete pod" +alias kci='kubectl cluster-info'
-alias kclean-failed="kubectl delete pods --field-selector status.phase=Failed -A"+
  
-Atalhos de monitoramento +Verificar versão 
-alias ktop='kubectl top nodes' +alias kv='kubectl version --client'
-alias ktop-pods='kubectl top pods'+
 </code> </code>
  
-==== 3.3. OTIMIZAÇÃO DE RECURSOS (BEST PRACTICES) ====+===== 5EXEMPLOS 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. EXEMPLODEPLOYMENT COM NGINX ====
-2. **Use Horizontal Pod Autoscaler (HPA)**: Automatize o escalonamento baseado no uso de CPU/Memória. +
-3. **PDB (Pod Disruption Budgets)**: Garanta a disponibilidade mínima durante manutenções nos nós. +
-4. **Node Affinity/Taints**: Controle onde seus pods devem ou não rodar para otimizar a distribuição de carga.+
  
-===== 4SCRIPTS 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: 80 
 +        resources: 
 +          requests: 
 +            memory: "64Mi" 
 +            cpu: "100m" 
 +          limits: 
 +            memory: "128Mi" 
 +            cpu: "500m" 
 +        livenessProbe: 
 +          httpGet: 
 +            path: / 
 +            port: 80 
 +          initialDelaySeconds: 15 
 +          periodSeconds: 20 
 +        readinessProbe: 
 +          httpGet: 
 +            path: / 
 +            port: 80 
 +          initialDelaySeconds:
 +          periodSeconds: 10 
 +</code>
  
-=== Scriptcheck_cluster_health.sh === +==== 5.2. EXEMPLOSERVICE 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 
 +</code> 
 + 
 +==== 5.3. EXEMPLO: CONFIGMAP ==== 
 + 
 +<code yaml> 
 +apiVersion: v1 
 +kind: ConfigMap 
 +metadata: 
 +  name: app-config 
 +data: 
 +  database_url: "postgresql://db:5432/myapp" 
 +  debug_mode: "false" 
 +  log_level: "info" 
 +</code> 
 + 
 +==== 5.4. EXEMPLO: SECRET ==== 
 + 
 +<code yaml> 
 +apiVersion: v1 
 +kind: Secret 
 +metadata: 
 +  name: app-secrets 
 +type: Opaque 
 +stringData: 
 +  database_user: "admin" 
 +  database_password: "securepassword123" 
 +</code> 
 + 
 +==== 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: "/mnt/data" 
 +--- 
 +apiVersion: v1 
 +kind: PersistentVolumeClaim 
 +metadata: 
 +  name: pvc-storage 
 +spec: 
 +  accessModes: 
 +    - ReadWriteOnce 
 +  resources: 
 +    requests: 
 +      storage: 5Gi 
 +</code> 
 + 
 +==== 5.6. EXEMPLO: INGRESS ==== 
 + 
 +<code yaml> 
 +apiVersion: networking.k8s.io/v1 
 +kind: Ingress 
 +metadata: 
 +  name: nginx-ingress 
 +spec: 
 +  ingressClassName: nginx 
 +  rules: 
 +  - host: myapp.example.com 
 +    http: 
 +      paths: 
 +      - path: / 
 +        pathType: Prefix 
 +        backend: 
 +          service: 
 +            name: nginx-service 
 +            port: 
 +              number: 80 
 +</code> 
 + 
 +==== 5.7. EXEMPLO: STATEFULSET ==== 
 + 
 +<code yaml> 
 +apiVersion: apps/v1 
 +kind: StatefulSet 
 +metadata: 
 +  name: mysql 
 +spec: 
 +  serviceName: mysql 
 +  replicas: 1 
 +  selector: 
 +    matchLabels: 
 +      app: mysql 
 +  template: 
 +    metadata: 
 +      labels: 
 +        app: mysql 
 +    spec: 
 +      containers: 
 +      - name: mysql 
 +        image: mysql:5.7 
 +        ports: 
 +        - containerPort: 3306 
 +        env: 
 +        - name: MYSQL_ROOT_PASSWORD 
 +          valueFrom: 
 +            secretKeyRef: 
 +              name: mysql-secret 
 +              key: password 
 +        volumeMounts: 
 +        - name: mysql-storage 
 +          mountPath: /var/lib/mysql 
 +  volumeClaimTemplates: 
 +  - metadata: 
 +      name: mysql-storage 
 +    spec: 
 +      accessModes: [ "ReadWriteOnce"
 +      resources: 
 +        requests: 
 +          storage: 10Gi 
 +</code> 
 + 
 +==== 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/node-exporter:latest 
 +        ports: 
 +        - containerPort: 9100 
 +        volumeMounts: 
 +        - name: proc 
 +          mountPath: /host/proc 
 +          readOnly: true 
 +        - name: sys 
 +          mountPath: /host/sys 
 +          readOnly: true 
 +      volumes: 
 +      - name: proc 
 +        hostPath: 
 +          path: /proc 
 +      - name: sys 
 +        hostPath: 
 +          path: /sys 
 +</code> 
 + 
 +==== 5.9. EXEMPLO: JOB ==== 
 + 
 +<code yaml> 
 +apiVersion: batch/v1 
 +kind: Job 
 +metadata: 
 +  name: backup-job 
 +spec: 
 +  template: 
 +    spec: 
 +      containers: 
 +      - name: backup 
 +        image: backup-image:latest 
 +        command: ["bash", "-c", "backup-script.sh"] 
 +      restartPolicy: Never 
 +  backoffLimit:
 +</code> 
 + 
 +==== 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:latest 
 +            command: ["bash", "-c", "backup-script.sh"
 +          restartPolicy: OnFailure 
 +</code> 
 + 
 +===== 6. SCRIPTS ÚTEIS ===== 
 + 
 +=== Script: Listar todos os recursos do cluster === 
 +<file bash list_all_resources.sh>
 #!/bin/bash #!/bin/bash
-echo "=== STATUS DOS NÓS ==="+# Lista todos os recursos do cluster de forma organizada 
 + 
 +echo "=== NODES ==="
 kubectl get nodes kubectl get nodes
-echo -e "\n=== PODS NÃO SAUDÁVEIS ===" + 
-kubectl get pods -A | grep -vE 'Running|Completed' +echo -e "\n=== NAMESPACES ===" 
-echo -e "\n=== EVENTOS RECENTES DE ERRO ===" +kubectl get namespaces 
-kubectl get events -A --field-selector type=Warning+ 
 +echo -e "\n=== PODS (todos os namespaces) ===" 
 +kubectl get pods -A 
 + 
 +echo -e "\n=== DEPLOYMENTS ===" 
 +kubectl get deployments -A 
 + 
 +echo -e "\n=== SERVICES ===" 
 +kubectl get services -A 
 + 
 +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
 </file> </file>
  
-=== Script: nuke_namespace.sh === +=== Script: Deletar todos os recursos em um namespace === 
-<file bash nuke_ns.sh>+<file bash cleanup_namespace.sh>
 #!/bin/bash #!/bin/bash
-Remove um namespace e força a limpeza se ficar travado em 'Terminating' +Deleta todos os recursos em um namespace específico 
-NS=$1 + 
-kubectl delete ns $NS --timeout=30s +NAMESPACE=${1:-default} 
-# Se ainda existir, remove os finalizers (uso avançado) + 
-kubectl get namespace $NS -o json | jq '.spec.finalizers = []' | kubectl replace --raw "/api/v1/namespaces/$NS/finalize" --+echo "Deletando todos os recursos no namespace: $NAMESPACE" 
 + 
 +kubectl delete all --all -n $NAMESPACE 
 +kubectl delete configmaps --all -n $NAMESPACE 
 +kubectl delete secrets --all -n $NAMESPACE 
 +kubectl delete pvc --all -n $NAMESPACE 
 + 
 +echo "Limpeza concluída!"
 </file> </file>
 +
 +=== Script: Monitorar recursos em tempo real ===
 +<file bash monitor_resources.sh>
 +#!/bin/bash
 +# Monitora o uso de recursos dos pods em tempo real
 +
 +echo "Monitorando uso de recursos (Ctrl+C para sair)..."
 +watch -n 2 'kubectl top pods --all-namespaces'
 +</file>
 +
 +===== 7. TROUBLESHOOTING COMUM =====
 +
 +==== Problema: Pod não inicia ====
 +
 +<code bash>
 +# 1. Verificar o status do pod
 +kubectl describe pod <pod-name>
 +
 +# 2. Verificar os logs
 +kubectl logs <pod-name>
 +
 +# 3. Verificar eventos
 +kubectl get events --sort-by='.lastTimestamp'
 +
 +# 4. Verificar se a imagem existe
 +kubectl get pod <pod-name> -o jsonpath='{.spec.containers[0].image}'
 +
 +# 5. Verificar recursos disponíveis no node
 +kubectl describe node <node-name>
 +</code>
 +
 +==== Problema: Pod em estado CrashLoopBackOff ====
 +
 +<code bash>
 +# 1. Verificar logs anteriores
 +kubectl logs <pod-name> --previous
 +
 +# 2. Descrever o pod para ver eventos
 +kubectl describe pod <pod-name>
 +
 +# 3. Verificar o comando de inicialização
 +kubectl get pod <pod-name> -o yaml | grep -A 5 "command:"
 +
 +# 4. Testar a imagem localmente
 +docker run -it <imagem>:<tag> /bin/bash
 +</code>
 +
 +==== Problema: Service não consegue alcançar o pod ====
 +
 +<code bash>
 +# 1. Verificar se o service existe
 +kubectl get service <service-name>
 +
 +# 2. Verificar os endpoints
 +kubectl get endpoints <service-name>
 +
 +# 3. Verificar os labels do pod e do service
 +kubectl get pod <pod-name> --show-labels
 +kubectl get service <service-name> -o yaml | grep -A 5 "selector:"
 +
 +# 4. Testar conectividade dentro do cluster
 +kubectl run -it --rm debug --image=busybox --restart=Never -- wget -O- http://<service-name>
 +</code>
  
wiki/kubernetes/guia_de_comandos.1769091396.txt.gz · Last modified: by Wiki Administrator