PerfectScalePerfectScale

PerfectScale

Kubectl Cheat Sheet: trabalhando com clusters, pods, deployments e mais

Esta página também está disponível em English, Deutsch, Español, Français, Italiano e 日本語.

Tania Duggal
By Tania Duggal
Oct 13, 202625 min read

Olá, seja bem-vindo! Reunimos para você os comandos mais usados do Kubernetes, tudo em um cheat sheet de kubectl pronto para usar. O cheat sheet traz instruções passo a passo de como gerenciar seu cluster Kubernetes usando a ferramenta de linha de comando kubectl.

Abaixo, um resumo rápido dos comandos mais importantes. Pule para o cheat sheet completo logo abaixo.

Contexto e configuração do cluster:

  • Listar contextos: kubectl config get-contexts
  • Trocar o contexto ativo: kubectl config use-context <context-name>
  • Ver detalhes do cluster: kubectl cluster-info
  • Verificar a versão: kubectl version

Deployments e gerenciamento de aplicações:

  • Fazer deploy a partir de um manifesto: kubectl apply -f <filename.yaml>
  • Excluir recursos a partir de um manifesto: kubectl delete -f <filename.yaml>
  • Escalar um deployment: kubectl scale deployment <deployment-name> --replicas=<N>
  • Verificar o status do rollout de um deployment: kubectl rollout status deployment/<deployment-name>
  • Reverter um deployment: kubectl rollout undo deployment/<deployment-name>

Inspeção e debugging:

  • Ver todos os recursos em todos os namespaces: kubectl get all -A
  • Ver status e detalhes de um pod: kubectl describe pod <pod-name>
  • Acompanhar os logs de um pod: kubectl logs -f <pod-name>
  • Executar comandos dentro de um contêiner: kubectl exec -it <pod-name> -- <command>
  • Abrir um shell em um pod: kubectl exec -it <pod-name> -- /bin/bash
  • Encaminhar uma porta local para um pod: kubectl port-forward <pod-name> <local-port>:<container-port>

Dicas de produtividade e flags:

  • Definir um alias: alias k=kubectl
  • Configurar o autocomplete: source <(kubectl completion bash)
  • Filtrar recursos por namespace: use a flag -n <namespace>
  • Testar mudanças sem aplicá-las: kubectl apply -f <filename.yaml> --dry-run=client
  • Ver recursos em YAML: kubectl get pod <pod-name> -o yaml

O que é o kubectl?

O kubectl é a ferramenta de CLI do Kubernetes que permite interagir com seus clusters e criar, gerenciar, editar e excluir recursos com facilidade. Ele se comunica com o servidor de API do Kubernetes para que você possa monitorar e controlar suas aplicações.

Como o kubectl funciona?

Ilustração intitulada Como o kubectl funciona: um comando kubectl é lido do arquivo kubeconfig, transformado em uma chamada de API REST, autenticado e enviado via HTTPS para o servidor de API no control plane, que o processa e retorna uma resposta JSON que o kubectl formata e exibe

O kubectl funciona enviando comandos ao servidor de API do Kubernetes, que então executa as operações solicitadas dentro do cluster. Quando você executa um comando kubectl, como fazer o deploy de uma aplicação ou consultar o status de recursos, o kubectl se comunica com o servidor de API via HTTP, transmitindo suas instruções. O servidor de API processa essas solicitações, atualiza o estado do cluster no etcd (um armazenamento distribuído de chave-valor) e orienta outros componentes, como o scheduler ou o controller manager, a executar as ações necessárias para atingir o estado desejado. Essa interação permite gerenciar e monitorar seus recursos do Kubernetes de forma eficiente pela linha de comando.

Observação: em versões anteriores do Kubernetes, o kubectl usava geradores (generators) para criar configurações de recursos com base em entradas específicas. Esses geradores permitiam especificar o tipo de recurso a ser criado, como um Pod, Deployment ou Job, usando a flag --generator. Por exemplo, kubectl run nginx --image=nginx --generator=run-pod/v1 criaria um recurso do tipo Pod. Essa abordagem permitia criar scripts e automatizar a criação de recursos com resultados previsíveis. No entanto, é importante destacar que a flag --generator foi descontinuada no Kubernetes v1.12 e removida na v1.18. A partir da v1.18, o kubectl run foi simplificado para criar apenas Pods, e o uso de geradores foi substituído por comandos mais explícitos e declarativos, como kubectl create e kubectl apply

Agora, vamos começar:

Configurando o kubectl: versão, informações do cluster e autocomplete

O primeiro passo depois de instalar o kubectl é verificar se ele foi instalado corretamente e se consegue se comunicar com o seu cluster. O comando a seguir exibe a versão do cliente e, se houver um cluster configurado, também mostra a versão do servidor:

Terminal window
kubectl version

Para confirmar que o kubectl está conectado ao cluster correto, use:

Terminal window
kubectl cluster-info

Esse comando exibe os endereços do control plane do Kubernetes e dos serviços principais. Se o comando retornar um erro, verifique se o seu arquivo kubeconfig está configurado corretamente e se o cluster de destino está acessível.

Você também pode inspecionar a configuração atual e os contextos disponíveis com:

Terminal window
kubectl config get-contexts
kubectl config current-context

Se você trabalha com vários clusters, alternar entre eles é simples:

Terminal window
kubectl config use-context <context-name>

Ao substituir <context-name> pelo contexto desejado, o cluster ativo é atualizado para todos os comandos kubectl subsequentes.

Para ganhar produtividade, habilite o autocomplete do shell. Isso permite que o shell complete automaticamente comandos, nomes de recursos, namespaces e outros argumentos quando você pressiona a tecla Tab. Para Bash, execute:

Terminal window
echo 'source <(kubectl completion bash)' >> ~/.bashrc
source ~/.bashrc

Para Zsh, use:

Terminal window
echo 'source <(kubectl completion zsh)' >> ~/.zshrc
source ~/.zshrc

Um atalho útil é criar um alias para o kubectl e habilitar o autocomplete para ele:

Terminal window
alias k=kubectl
complete -o default -F __start_kubectl k

Se você usa Zsh, substitua a última linha por:

Terminal window
compdef __start_kubectl k

Com a verificação de versão, a conectividade com o cluster, o gerenciamento de contextos e o autocomplete configurados, seu ambiente está pronto para a administração do Kubernetes no dia a dia.

O cheat sheet definitivo de kubectl

Anatomia de um comando kubectl: kubectl get pods -n prod -o wide, dividido em programa, ação, recurso, flag de namespace e flag de saída

Flags opcionais

O kubectl oferece flags opcionais que melhoram a saída dos comandos e o gerenciamento de recursos. Por exemplo:

Formatos de saída:

Saída em JSON:

Você pode usar a flag -o=json para formatar a saída do comando como JSON.

Terminal window
kubectl get pods -o=json

Saída em YAML:

Você pode usar a flag -o=yaml para formatar a saída do comando como YAML.

Terminal window
kubectl get pods -o=yaml

Saída ampliada (wide):

A opção -o=wide fornece uma saída detalhada em texto simples (por exemplo, exibe o nome do node para cada pod).

Terminal window
kubectl get pods -o=wide

Para saídas mais personalizadas, o kubectl oferece a flag --custom-columns, que permite definir colunas específicas para exibição.

Por exemplo, para listar os pods com seus nomes e os nodes em que estão rodando:

Terminal window
kubectl get pods -o=custom-columns="POD NAME:.metadata.name,NODE:.spec.nodeName"

Esse comando terá a seguinte saída:

POD NAME NODE
nginx-deployment-1 node-1
nginx-deployment-2 node-2

Especificação de namespace:

Por padrão, os comandos kubectl operam no namespace definido pelo contexto atual. Para apontar para um namespace específico, use a flag -n ou --namespace:

Terminal window
kubectl get pods -n <namespace_name>

Para ver recursos em todos os namespaces, use a flag -A ou --all-namespaces:

Terminal window
kubectl get pods -A

E para definir um namespace padrão para o contexto atual:

Terminal window
kubectl config set-context --current --namespace=ns_name

Entrada por arquivo:

A flag -f é usada para especificar um arquivo, diretório ou URL ao criar um recurso.

Terminal window
kubectl create -f ./file_name

Filtragem por labels:

Você pode usar a flag -l para filtrar recursos com base em labels específicos.

Terminal window
kubectl get pods -l name=label_name

Opção de ajuda:

Para exibir a ajuda dos comandos kubectl, use a flag -h.

Terminal window
kubectl -h

Modo watch:

Você pode monitorar continuamente mudanças nos recursos com a flag --watch (ou -w):

Terminal window
kubectl get pods -w

Ordenação da saída:

Você pode ordenar a saída com base em um campo específico usando a flag --sort-by:

Terminal window
kubectl get pods --sort-by=.metadata.name

Usando o kubectl com aliases

Trabalhar com o kubectl envolve digitar comandos longos, o que pode consumir tempo e gerar erros. Para ganhar eficiência, muitos desenvolvedores criam aliases para os comandos mais usados.

Configurando um alias básico

Terminal window
alias k=kubectl
echo 'alias k=kubectl' >> ~/.bashrc

Isso permite usar k no lugar de kubectl.

Você pode usar o repositório kubectl-aliases, que oferece centenas de aliases predefinidos para executar comandos mais rapidamente.

Gerenciamento de cluster, contexto e configuração

Gerenciamento de cluster significa configurar, visualizar e modificar o seu cluster.

Comando Descrição
kubectl cluster-info Exibe os endpoints e informações básicas sobre o seu cluster Kubernetes.
kubectl config get-contexts Lista todos os contextos definidos no seu arquivo kubeconfig.
kubectl config current-context Mostra o contexto ativo atual.
kubectl config use-context <context> Troca o contexto ativo para o que você especificar.
kubectl config delete-context <context> Remove um contexto do seu arquivo kubeconfig.
kubectl api-versions Lista todas as versões de API disponíveis no cluster.
kubectl api-resources Lista todos os tipos de recursos disponíveis no seu cluster, com detalhes sobre grupos de API e namespaces.
kubectl config view Exibe os detalhes de configuração do seu arquivo kubeconfig (clusters, contextos, configurações de usuário).
kubectl version Imprime as informações de versão tanto do cliente kubectl quanto do servidor Kubernetes.

Gerenciamento de pods

Atalho: po

Um Pod é a menor unidade do Kubernetes e representa uma única instância de um processo em execução no seu cluster. Ele pode conter um ou mais contêineres que compartilham recursos de armazenamento e rede.

Comando Descrição
kubectl get pods Lista todos os pods no namespace atual.
kubectl describe pod <pod-name> Fornece informações detalhadas sobre o pod especificado, incluindo status, eventos e detalhes dos contêineres.
kubectl exec -it <pod-name> <command> Executa o comando informado dentro do pod especificado de forma interativa (as flags -it permitem acesso interativo ao terminal).
kubectl delete pod <pod-name> Exclui o pod especificado do cluster.
kubectl run <pod-name> --image=<image_name> Cria e executa um pod com a imagem especificada.
kubectl get pod -n <namespace_name> Lista todos os pods no namespace especificado.
kubectl exec <pod-name> -c <container-name> <command> Executa um comando dentro de um contêiner específico de um pod.
kubectl top pod Exibe o uso de recursos (como CPU e memória) dos pods.
kubectl annotate pod <pod-name> <annotation> Adiciona ou atualiza uma annotation no pod especificado.
kubectl get pods --field-selector=status.phase=Running Lista os pods que estão atualmente na fase Running, filtrando pelo status do pod.
kubectl get pods --sort-by='.status.containerStatuses[0].restartCount' Ordena a lista de pods pela contagem de reinicializações do primeiro contêiner de cada pod.

Para ReplicaSets

Atalho: rs

Um ReplicaSet garante que um número especificado de réplicas de pods esteja em execução. A principal diferença é que os ReplicaSets dão suporte a seletores de labels baseados em conjuntos.

Comando Descrição
kubectl get rs Lista todos os ReplicaSets no namespace atual.
kubectl get rs <replicaset_name> -o yaml Exibe a configuração do ReplicaSet especificado em formato YAML.
kubectl get rs <replicaset_name> -o json Exibe a configuração do ReplicaSet especificado em formato JSON.
kubectl describe rs <rs_name> Fornece informações detalhadas sobre o ReplicaSet especificado.
kubectl get rs --namespace=<ns_name> Lista todos os ReplicaSets no namespace especificado.
kubectl delete rs <rs_name> --cascade=orphan Exclui o ReplicaSet especificado, mas mantém os pods gerenciados por ele em execução (os pods ficam órfãos).
kubectl delete rs <rs_name> Exclui o ReplicaSet especificado junto com todos os pods que ele gerencia.
kubectl scale rs <rs_name> --replicas=<count> Ajusta (escala) o número de pods gerenciados pelo ReplicaSet especificado para a quantidade informada.
kubectl edit rs <rs_name> Abre a configuração do ReplicaSet no seu editor padrão, permitindo fazer alterações em tempo real.
kubectl replace -f <rs_file.yaml> Substitui a configuração existente do ReplicaSet pela fornecida no arquivo YAML.

Para DaemonSets

Atalho: ds

Um DaemonSet garante que um pod específico seja executado em todos (ou em alguns) nodes do cluster. Isso é útil para tarefas como executar um agente de monitoramento em cada node.

Comando Descrição
kubectl get daemonset Lista todos os DaemonSets no namespace atual.
kubectl describe daemonset <ds_name> Fornece informações detalhadas sobre um DaemonSet específico.
kubectl get daemonset <daemonset_name> -o yaml Exibe a configuração do DaemonSet especificado em formato YAML.
kubectl get daemonset <ds_name> -o json Exibe a configuração do DaemonSet especificado em formato JSON.
kubectl delete daemonset <ds_name> Exclui o DaemonSet especificado do cluster.
kubectl label daemonset <ds_name> <key>=<value> Adiciona ou atualiza um label no DaemonSet especificado.
kubectl annotate daemonset <ds_name> <key>=<value> Adiciona ou atualiza uma annotation no DaemonSet especificado.
kubectl rollout status daemonset <ds_name> Verifica o status do rollout de um DaemonSet.
kubectl rollout history daemonset <ds_name> Exibe o histórico de rollouts de um DaemonSet.

Para StatefulSets

Atalho: sts

StatefulSets gerenciam o deploy e o escalonamento de pods, garantindo que cada um tenha uma identidade única e estável e armazenamento persistente. Isso é importante para aplicações com estado (stateful).

Comando Descrição
kubectl get statefulset Lista todos os StatefulSets no namespace atual.
kubectl describe statefulset <statefulset_name> Fornece informações detalhadas sobre o StatefulSet especificado.
kubectl get statefulset <sts_name> -o yaml Exibe a configuração do StatefulSet especificado em formato YAML.
kubectl get statefulset <sts_name> -o json Exibe a configuração do StatefulSet especificado em formato JSON.
kubectl edit statefulset <sts_name> Abre a configuração do StatefulSet especificado no seu editor de texto padrão, permitindo fazer alterações em tempo real.
kubectl scale statefulset <sts_name> --replicas=<number> Ajusta o número de réplicas de pods gerenciadas pelo StatefulSet especificado para o número informado.
kubectl rollout status statefulset <statefulset_name> Verifica e exibe o status do rollout do StatefulSet especificado.

Para namespaces

Atalho: ns

Namespaces oferecem uma forma de dividir os recursos do cluster entre vários usuários ou aplicações.

Comando Descrição
kubectl get namespace Lista todos os namespaces do seu cluster (os namespaces do contexto atual).
kubectl create namespace <namespace_name> Cria um novo namespace com o nome especificado.
kubectl describe namespace <namespace_name> Fornece informações detalhadas sobre o namespace especificado.
kubectl edit namespace <namespace_name> Abre a configuração do namespace especificado no seu editor de texto padrão para que você possa fazer edições em tempo real.
kubectl delete namespace <namespace_name> Exclui o namespace especificado do seu cluster junto com todos os recursos contidos nele.

Para Services

Atalho: svc

Um Service define um conjunto lógico de pods e uma política para acessá-los. Ele permite a comunicação entre diferentes partes da sua aplicação e pode expor sua aplicação ao tráfego externo.

Comando Descrição
kubectl get services Lista todos os services no namespace atual
kubectl create service <svc-type> <svc-name> --tcp=<port> Cria um novo service do tipo especificado (por exemplo, clusterip, nodeport ou loadbalancer) com o nome informado, mapeando TCP em uma determinada porta
kubectl edit service <svc-name> Abre um editor para editar a configuração do service especificado
kubectl describe service <svc-name> Fornece informações detalhadas sobre o service especificado
kubectl delete service <svc-name> Exclui o service especificado do cluster
kubectl get endpoints <svc-name> Lista os endpoints (ou seja, os endereços IP dos pods) que sustentam o service especificado
kubectl expose deployment [deploy_name] Cria um service que expõe o deployment especificado; os recursos possíveis para expose incluem pod (po), service (svc) e replicaset (rs)

Para Service Accounts

Atalho: sa

Um ServiceAccount fornece uma identidade para os processos em execução em um pod, permitindo que eles interajam com a API do Kubernetes com segurança.

Comando Descrição
kubectl get serviceaccounts Lista todas as service accounts no namespace atual
kubectl describe serviceaccount <sa-name> Exibe informações detalhadas sobre a service account especificada
kubectl replace -f <sa.yaml> Substitui (atualiza) uma service account com uma nova configuração
kubectl delete serviceaccount <sa_name> Exclui a service account especificada do cluster.

Para Deployments

Atalho: deploy

Um Deployment fornece atualizações declarativas para pods e ReplicaSets. Você define o estado desejado da sua aplicação e o controller do Deployment altera o estado real para o estado desejado em um ritmo controlado.

Comando Descrição
kubectl get deployment Lista todos os deployments no namespace atual.
kubectl describe deployment <deployment_name> Exibe informações detalhadas sobre o deployment especificado
kubectl create deployment <deployment-name> --image=<img-name> Cria um novo deployment chamado <deployment-name> usando a imagem de contêiner especificada
kubectl edit deployment <deployment_name> Abre a configuração do deployment no seu editor de texto padrão para edição em tempo real
kubectl scale deployment <deployment-name> --replicas=<replica-count> Ajusta o número de réplicas de pods gerenciadas pelo deployment para a quantidade especificada.
kubectl set image deployment/<deployment-name> <container-name>=<new-image-name> Atualiza a imagem de um contêiner específico dentro do deployment
kubectl rollout status deployment/<deployment-name> Mostra o status atual do rollout do deployment
kubectl rollout pause deployment/<deployment-name> Pausa o processo de rollout, impedindo novas atualizações até que seja retomado
kubectl rollout resume deployment/<deployment-name> Retoma um rollout de deployment pausado
kubectl rollout undo deployment/<deployment-name> Reverte o deployment para a revisão anterior
kubectl rollout undo deployment/<deployment-name> --to-revision=<revision-number> Reverte o deployment para um número de revisão específico
kubectl delete deployment <deployment-name> Exclui o deployment especificado junto com os pods gerenciados por ele

Para Jobs e CronJobs

Atalho: job, cj

Um Job executa um ou mais pods até que uma tarefa seja concluída com sucesso. Um CronJob cria Jobs de acordo com um agendamento, sendo útil para backups, relatórios e outras tarefas recorrentes.

Comando Descrição
kubectl get jobs Lista todos os Jobs no namespace atual.
kubectl describe job <job-name> Exibe informações detalhadas sobre o Job especificado.
kubectl create job <job-name> --image=<image-name> Cria um Job que executa a imagem de contêiner especificada.
kubectl delete job <job-name> Exclui o Job especificado.
kubectl get cronjobs Lista todos os CronJobs no namespace atual.
kubectl describe cronjob <cronjob-name> Exibe informações detalhadas sobre o CronJob especificado.
kubectl create cronjob <cronjob-name> --image=<image-name> --schedule="<cron-expression>" Cria um CronJob com o agendamento especificado.
kubectl create job --from=cronjob/<cronjob-name> <job-name> Cria um Job único a partir de um CronJob existente.
kubectl patch cronjob <cronjob-name> -p '{"spec":{"suspend":true}}' Suspende as execuções futuras do CronJob.
kubectl delete cronjob <cronjob-name> Exclui o CronJob especificado.

Para Horizontal Pod Autoscalers

Atalho: hpa

Um Horizontal Pod Autoscaler (HPA) ajusta automaticamente o número de réplicas de pods com base em métricas como uso de CPU ou memória.

Comando Descrição
kubectl get hpa Lista todos os Horizontal Pod Autoscalers.
kubectl describe hpa <hpa-name> Exibe informações detalhadas sobre o HPA especificado.
kubectl autoscale deployment <deployment-name> --cpu-percent=<target> --min=<min> --max=<max> Cria um HPA para o deployment especificado.
kubectl edit hpa <hpa-name> Abre a configuração do HPA para edição em tempo real.
kubectl delete hpa <hpa-name> Exclui o HPA especificado.
kubectl get hpa -w Monitora métricas do HPA e eventos de escalonamento em tempo real.
kubectl top pods Exibe o uso de recursos dos pods fornecido pelo Metrics Server.
kubectl top nodes Exibe o uso de CPU e memória dos nodes.

Para RBAC e verificações de permissões

O controle de acesso baseado em funções (RBAC) controla quais usuários e service accounts podem acessar os recursos do Kubernetes.

Comando Descrição
kubectl get roles Lista todas as Roles no namespace atual.
kubectl get rolebindings Lista todos os RoleBindings no namespace atual.
kubectl get clusterroles Lista todas as ClusterRoles.
kubectl get clusterrolebindings Lista todos os ClusterRoleBindings.
kubectl describe role <role-name> Exibe informações detalhadas sobre a Role especificada.
kubectl describe clusterrole <clusterrole-name> Exibe informações detalhadas sobre a ClusterRole especificada.
kubectl auth can-i <verb> <resource> Verifica se o usuário atual pode executar uma ação em um recurso.
kubectl auth can-i <verb> <resource> --as=<user> Verifica as permissões de outro usuário.
kubectl auth can-i --list Lista todas as permissões disponíveis para o usuário atual.

Para recursos de Ingress

Atalho: ing

Um Ingress gerencia o acesso externo via HTTP e HTTPS aos services em um cluster Kubernetes. Normalmente requer um Ingress controller.

Comando Descrição
kubectl get ingress Lista todos os recursos de Ingress no namespace atual.
kubectl describe ingress <ingress-name> Exibe informações detalhadas sobre o Ingress especificado.
kubectl create ingress <ingress-name> --rule="<host>/<path>=<service>:<port>" Cria um Ingress com uma regra de roteamento.
kubectl edit ingress <ingress-name> Abre a configuração do Ingress para edição em tempo real.
kubectl delete ingress <ingress-name> Exclui o Ingress especificado.
kubectl get ingress -A Lista os recursos de Ingress em todos os namespaces.
kubectl get ingress <ingress-name> -o yaml Exibe a configuração do Ingress em formato YAML.

Para debugging avançado

Esses comandos ajudam a solucionar problemas de aplicações, rede e recursos em um cluster Kubernetes.

Comando Descrição
kubectl logs <pod-name> Exibe os logs do pod especificado.
kubectl logs <pod-name> -c <container-name> Exibe os logs de um contêiner específico em um pod com vários contêineres.
kubectl logs -f <pod-name> Transmite os logs do pod especificado em tempo real.
kubectl logs <pod-name> --previous Exibe os logs da instância anterior de um contêiner que falhou.
kubectl exec -it <pod-name> -- /bin/sh Abre um shell interativo dentro de um contêiner em execução.
kubectl port-forward pod/<pod-name> <local-port>:<pod-port> Encaminha uma porta local para um pod para fins de debugging.
kubectl debug <pod-name> -it --image=busybox Cria um contêiner efêmero de debug anexado ao pod especificado.
kubectl get events --sort-by=.metadata.creationTimestamp Lista os eventos do cluster em ordem cronológica.
kubectl describe node <node-name> Exibe as condições do node, os recursos alocados e os eventos recentes.
kubectl cp <pod-name>:<remote-path> <local-path> Copia arquivos de um pod para a máquina local.

Para eventos

Atalho: ev

Eventos são registros do que aconteceu no seu cluster, como criações de pods, exclusões ou erros.

Comando Descrição
kubectl get events Lista todos os eventos no namespace atual
kubectl get events --field-selector type!=Normal Exibe os eventos que não são do tipo Normal
kubectl get events --field-selector type=Warning Filtra e exibe apenas os eventos do tipo Warning
kubectl get events -w Monitora novos eventos em tempo real
kubectl get events --field-selector involvedObject.name=<object_name> Mostra eventos relacionados a um objeto específico, como um pod ou node

Logs

Logs são a saída das suas aplicações em execução e dos componentes do sistema.

Comando Descrição
kubectl logs <pod_name> Recupera e exibe os logs do contêiner principal do pod especificado
kubectl logs -f <pod_name> Transmite os logs do pod especificado em tempo real
kubectl logs --since=6h <pod_name> Exibe os logs do pod especificado gerados nas últimas 6 horas
kubectl logs --tail=50 <pod_name> Mostra as últimas 50 linhas de logs do pod especificado
kubectl logs -f <pod_name> -c <container_name> Transmite em tempo real os logs de um contêiner específico dentro de um pod
kubectl logs <pod_name> > podfile.log Salva os logs de um pod em um arquivo chamado podfile.log
kubectl logs --previous <pod_name> Exibe os logs da instância anterior de um contêiner no pod especificado

Para Secrets e ConfigMaps

Atalho para ConfigMaps: cm

Secrets armazenam informações sensíveis, como senhas ou chaves, enquanto ConfigMaps guardam dados de configuração não sensíveis. Ambos permitem desacoplar artefatos de configuração do conteúdo da imagem para manter suas aplicações portáveis.

Comando Descrição
kubectl get secrets Lista todos os secrets no namespace atual
kubectl get configmaps Lista todos os ConfigMaps no namespace atual
kubectl describe secret <secret-name> Fornece informações detalhadas sobre o secret especificado
kubectl delete secret <secret-name> Exclui o secret especificado do cluster
kubectl describe configmap <configmap-name> Fornece informações detalhadas sobre o ConfigMap especificado
kubectl create configmap <config-map-name> --from-file=<path-to-file> Cria um novo ConfigMap com o nome informado usando o conteúdo do arquivo especificado
kubectl create secret <secret-type> <secret-name> --from-literal=key=value Cria um novo secret do tipo especificado usando um par chave-valor

Para gerenciamento de nodes

Atalho: no

Um Node é uma máquina worker no Kubernetes.

Comando Descrição
kubectl get nodes Lista todos os nodes do seu cluster
kubectl describe node <node-name> Fornece informações detalhadas sobre o node especificado
kubectl drain <node-name> Prepara o node para manutenção removendo todos os pods e marcando o node como não agendável
kubectl uncordon <node-name> Marca um node previamente isolado (não agendável) como agendável novamente, permitindo que novos pods sejam agendados nele
kubectl label node <node_name> <key>=<value> Adiciona ou atualiza um label no node especificado
kubectl cordon <node_name> Marca o node especificado como não agendável
kubectl taint node <node_name> <key>=<value>:<taint-effect> Aplica um taint ao node especificado
kubectl top node <node_name> Exibe métricas de uso de recursos (como CPU e memória) do node especificado
kubectl annotate node <node_name> <key>=<value> Adiciona ou atualiza uma annotation no node especificado

Para armazenamento (PV, PVC)

Atalho para Persistent Volume: pv

Atalho para Persistent Volume Claim: pvc

PersistentVolumes são recursos de armazenamento no seu cluster, e PersistentVolumeClaims são solicitações de armazenamento feitas pelos usuários.

Comando Descrição
kubectl get pv Lista todos os Persistent Volumes do cluster
kubectl describe pv <pv-name> Fornece informações detalhadas sobre um Persistent Volume específico
kubectl get pvc Lista todos os Persistent Volume Claims no namespace atual
kubectl describe pvc <pvc-name> Exibe informações detalhadas sobre um Persistent Volume Claim específico

Para copiar arquivos e diretórios

Você pode transferir arquivos entre o seu sistema local e o contêiner de um pod, o que ajuda em debugging ou backup de dados.

Comando Descrição
kubectl cp <local-path> <namespace>/<pod-name>:<container-path> Copia um arquivo ou diretório da sua máquina local para um contêiner no pod e namespace especificados.
kubectl cp <source-pod-name>:<source-container-path> <local-path> -n <namespace> Copia um arquivo ou diretório de um contêiner dentro de um pod (no namespace informado) para a sua máquina local.
kubectl cp <local-path> <destination-namespace>/<destination-pod-name>:<destination-container-path> Copia um arquivo ou diretório da sua máquina local para o pod e namespace de destino.

Para verbosidade de saída e debugging

Verbosidade se refere ao nível de detalhe incluído nos logs gerados por componentes como o kubectl e o kubelet. Você pode ajustar a verbosidade dos comandos kubectl.

Comando Descrição
kubectl get <resource-type> --v=<verbosity-level> Esta é a forma geral de definir o nível de verbosidade. Ela indica ao kubectl quanta saída de debug incluir ao executar o comando no tipo de recurso especificado.
kubectl get <resource-type> --v=0 Executa o comando com saída de debug mínima (o nível padrão).
kubectl get <resource-type> --v=7 Oferece um nível de verbosidade mais alto, em que informações adicionais de debug são impressas, incluindo os cabeçalhos das requisições HTTPS enviadas pelo cliente.
kubectl get <resource-type> --v=8 Aumenta ainda mais a verbosidade. No nível 8, o conteúdo das requisições e respostas HTTP (dados do corpo) também é exibido.

FAQ

O que é o kubectl? kubectl é a ferramenta de linha de comando do Kubernetes. Ela envia seus comandos ao servidor de API do Kubernetes, que executa a solicitação no cluster, permitindo criar, gerenciar, editar e excluir recursos e monitorar suas aplicações.

Como alternar entre clusters com o kubectl? Execute kubectl config get-contexts para listar os contextos do seu arquivo kubeconfig e, em seguida, execute kubectl config use-context <context-name> para ativar um deles. Todos os comandos kubectl posteriores passam a ser executados nesse cluster.

Como listar pods em todos os namespaces? Adicione a flag -A (ou --all-namespaces), por exemplo kubectl get pods -A. Para apontar para apenas um namespace, use -n <namespace_name>.

Como ver os logs de um contêiner que falhou? Execute kubectl logs <pod-name> --previous para ver os logs da instância anterior do contêiner. Adicione -c <container-name> se o pod tiver mais de um contêiner.

Como reverter um deployment? Execute kubectl rollout undo deployment/<deployment-name> para voltar à revisão anterior. Para escolher uma revisão específica, adicione --to-revision=<revision-number>.

Como configurar um alias e o autocomplete do kubectl? Execute alias k=kubectl para usar k no lugar de kubectl e adicione-o ao seu ~/.bashrc para mantê-lo. Para o autocomplete no Bash, adicione source <(kubectl completion bash) ao ~/.bashrc. O cheat sheet também cobre Zsh.

Reduza seus custos de nuvem em até 50% com a PerfectScale

A PerfectScale é uma ferramenta poderosa projetada para funcionar perfeitamente com o Kubernetes. Ao integrar a PerfectScale ao seu ambiente Kubernetes, você pode simplificar e otimizar a orquestração dos seus contêineres. Essa integração aumenta a eficiência do gerenciamento dos seus clusters, permitindo alocar recursos de forma mais eficaz, reduzir custos operacionais e melhorar a estabilidade e a resiliência gerais das suas aplicações. Os insights baseados em IA da PerfectScale oferecem visibilidade completa do desempenho do seu sistema, possibilitando ajustes proativos para atender a demandas dinâmicas. Isso significa que você pode garantir desempenho máximo enquanto corta custos em até 50% por meio de ações autônomas e orientadas por dados, que otimizam continuamente cada camada da sua stack Kubernetes. Para conhecer na prática os benefícios da PerfectScale, agende uma demonstração e comece um teste gratuito hoje mesmo!