User Tools

Site Tools


wiki:kubernetes:guia_de_comandos

GUIA DE REFERÊNCIA RÁPIDA KUBERNETES - COMANDOS ESSENCIAIS

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.1. CONFIGURAÇÃO E CONTEXTOS

# Verificar a versão do cliente kubectl
kubectl version --client
 
# Exibir informações do cluster
kubectl cluster-info
 
# Listar todos os contextos disponíveis
kubectl config get-contexts
 
# Obter o contexto atual
kubectl config current-context
 
# Alternar para um contexto específico
kubectl config use-context <context-name>
 
# Exibir a configuração completa do kubeconfig
kubectl config view
 
# Definir o namespace padrão para o contexto atual
kubectl config set-context --current --namespace=<namespace>
 
# Criar um novo contexto
kubectl config set-context <context-name> --cluster=<cluster> --user=<user>

1.2. NAMESPACES

# Listar todos os namespaces
kubectl get namespaces
kubectl get ns
 
# Criar um novo namespace
kubectl create namespace <namespace-name>
 
# Deletar um namespace (e todos os recursos dentro dele)
kubectl delete namespace <namespace-name>
 
# Exibir informações detalhadas sobre um namespace
kubectl describe namespace <namespace-name>
 
# 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>

1.3. PODS

# 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

1.4. DEPLOYMENTS

# 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>

1.5. SERVICES

# 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>

1.6. CONFIGMAPS E SECRETS

# Listar todos os 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
 
# Criar um Secret genérico
kubectl create secret generic <secret-name> --from-literal=username=user --from-literal=password=pass
 
# 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>

1.7. VOLUMES E PERSISTENT VOLUMES

# 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

1.8. INGRESS

# Listar todos os Ingress
kubectl get ingress
 
# Exibir informações detalhadas sobre um Ingress
kubectl describe ingress <ingress-name>
 
# Criar um Ingress a partir de um manifesto YAML
kubectl apply -f <arquivo-ingress.yaml>
 
# Deletar um Ingress
kubectl delete ingress <ingress-name>
 
# Obter o IP ou hostname do Ingress
kubectl get ingress <ingress-name> -o jsonpath='{.status.loadBalancer.ingress[0].ip}'

2. LIMPEZA E REMOÇÃO EM LOTE

2.1. LIMPEZA GERAL

# Deletar todos os recursos em um namespace
kubectl delete all --all -n <namespace>
 
# Deletar todos os pods em um namespace
kubectl delete pods --all -n <namespace>
 
# Deletar todos os deployments em um namespace
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

2.2. ANÁLISE DE USO DE RECURSOS

# 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>

3. DICAS AVANÇADAS E DEBUG

3.1. APLICAR MANIFESTOS YAML

# Aplicar um manifesto YAML (criar ou atualizar)
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>
 
# Aplicar um patch (modificação parcial) a um recurso
kubectl patch <tipo> <nome> -p '{"spec":{"replicas":3}}'

3.2. LABELS E SELETORES

# 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

3.3. PORT FORWARDING

# Encaminhar uma porta local para um pod
kubectl port-forward pod/<pod-name> 8080:8080
 
# Encaminhar uma porta local para um service
kubectl port-forward service/<service-name> 8080:80
 
# Encaminhar uma porta local para um deployment
kubectl port-forward deployment/<deployment-name> 8080:8080
 
# Encaminhar em background
kubectl port-forward pod/<pod-name> 8080:8080 &

3.4. ROLLOUTS E ATUALIZAÇÕES

# Verificar o status de um rollout
kubectl rollout status deployment/<deployment-name>
 
# 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 e cria novos)
kubectl rollout restart deployment/<deployment-name>

3.5. DEBUGGING E TROUBLESHOOTING

# 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"

3.6. RECURSOS CUSTOMIZADOS (CRD)

# 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>

3.7. RBAC (Role-Based Access Control)

# 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>

3.8. MONITORAMENTO E MÉTRICAS

# 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}'

3.9. FERRAMENTAS COMPLEMENTARES

# 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>

3.10. NETWORK POLICIES

# 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>

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)

# Listar pods com mais detalhes
alias kgp='kubectl get pods'
alias kgpa='kubectl get pods --all-namespaces'
alias kgpw='kubectl get pods -o wide'
 
# Listar deployments
alias kgd='kubectl get deployments'
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'
 
# Obter informações do cluster
alias kci='kubectl cluster-info'
 
# Verificar versão
alias kv='kubectl version --client'

5. EXEMPLOS PRÁTICOS

5.1. EXEMPLO: DEPLOYMENT COM NGINX

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: 5
          periodSeconds: 10

5.2. EXEMPLO: SERVICE PARA EXPOR O DEPLOYMENT

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

apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
data:
  database_url: "postgresql://db:5432/myapp"
  debug_mode: "false"
  log_level: "info"

5.4. EXEMPLO: SECRET

apiVersion: v1
kind: Secret
metadata:
  name: app-secrets
type: Opaque
stringData:
  database_user: "admin"
  database_password: "securepassword123"

5.5. EXEMPLO: PERSISTENT VOLUME E PERSISTENT VOLUME CLAIM

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

5.6. EXEMPLO: INGRESS

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

5.7. EXEMPLO: STATEFULSET

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

5.8. EXEMPLO: DAEMONSET

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

5.9. EXEMPLO: JOB

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: 3

5.10. EXEMPLO: CRONJOB

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

6. SCRIPTS ÚTEIS

Script: Listar todos os recursos do cluster

list_all_resources.sh
#!/bin/bash
# Lista todos os recursos do cluster de forma organizada
 
echo "=== NODES ==="
kubectl get nodes
 
echo -e "\n=== NAMESPACES ==="
kubectl get namespaces
 
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 -A
 
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: Deletar todos os recursos em um namespace

cleanup_namespace.sh
#!/bin/bash
# Deleta todos os recursos em um namespace específico
 
NAMESPACE=${1:-default}
 
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!"

Script: Monitorar recursos em tempo real

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'

7. TROUBLESHOOTING COMUM

Problema: Pod não inicia

# 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>

Problema: Pod em estado CrashLoopBackOff

# 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

Problema: Service não consegue alcançar o pod

# 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>
wiki/kubernetes/guia_de_comandos.txt · Last modified: by Wiki Administrator