K9s
K9s é uma interface de usuário no terminal (TUI) para Kubernetes. É mais rápido do que clicar em um painel web e mais descoberto do que o kubectl puro.
Quando Usar
- Gerenciamento de Cluster Kubernetes baseado em Terminal: Interface curses interativa rápida para navegar por pods, serviços e deployments.
- Streaming de Logs em Tempo Real e Monitoramento de Recursos: Acompanhamento de logs de múltiplos pods, classificação por CPU/memória e redirecionamento de portas.
- Plugins e Aliases Personalizados do K9s: Estender a CLI com comandos shell personalizados (ex: executar stern, status do cert-manager).
- Inspeção e Depuração Somente Leitura: Depurar clusters de produção com segurança usando modos somente leitura.
Início Rápido
# Iniciar o k9s com o kubeconfig ativo
k9s
# Atalhos de navegação no k9s:
# :pods - Visualizar todos os pods em todos os namespaces
# :deploy - Visualizar deployments
# :svc - Visualizar services
# /<term> - Filtrar itens na visualização ativa
# l - Transmitir logs do pod selecionado
# s - Abrir shell (exec) dentro do contêiner selecionado
Conceitos Principais
#Configuração de Plugins Personalizados (plugins.yaml)
Adicionando comandos personalizados do teclado para depuração rápida:
# ~/.config/k9s/plugins.yaml
plugin:
# Pressione 'Shift-D' em um deployment para visualizar o histórico detalhado de rollout
rollout-history:
shortCut: Shift-D
confirm: false
description: "Histórico de Rollout"
scopes:
- deployments
command: kubectl
background: false
args:
- rollout
- history
- deployment/$NAME
- -n
- $NAMESPACE
# Pressione 'Shift-F' em um pod para iniciar um contêiner de depuração interativo
debug-pod:
shortCut: Shift-F
confirm: true
description: "Depurar Pod"
scopes:
- pods
command: kubectl
background: false
args:
- debug
- -it
- $NAME
- --image=nicolaka/netshoot
- -n
- $NAMESPACE
#Atalhos de Navegação e Teclado Essenciais
Acelerando o gerenciamento do cluster:
:pod: Ir para a visualização de Pods em todos os namespaces.:svc,:deploy,:ing: Ir para Services, Deployments e Ingresses./: Pesquisar e filtrar recursos por nome ou status.l: Acompanhar logs do pod ou contêiner selecionado.s: Abrir um shell interativo (sh/bash) dentro do contêiner selecionado.Shift-F: Redirecionar a porta local para a porta do serviço do pod selecionado.y: Visualizar o manifesto YAML completo do recurso selecionado.
#Iniciando o K9s com Opções Personalizadas
Iniciando o K9s em modos seguros:
# Iniciar em modo somente leitura para evitar exclusão acidental de pods em produção
k9s --readonly --namespace production
# Especificar contexto personalizado e taxa de atualização
k9s --context prod-eks-cluster --refresh 2
Padrões Comuns
#Atalhos e Plugins Personalizados do K9s
Problema: Executar comandos kubectl personalizados com frequência em diferentes namespaces.
Solução: Definir plugins personalizados em ~/.config/k9s/plugin.yaml.
# ~/.config/k9s/plugin.yaml
plugin:
raw-logs:
shortCut: Shift-L
description: "Acompanhar logs sem truncamento"
scopes:
- pods
command: kubectl
background: false
args:
- logs
- -f
- $NAME
- -n
- $NAMESPACE
- --context
- $CONTEXT
Melhores Práticas (2026)
- Faça use
k9s --readonlyao conectar-se a ambientes de produção para evitar exclusões acidentais. - Faça configure plugins personalizados em
~/.config/k9s/plugins.yamlpara comandoskubectlrepetitivos. - Faça use o atalho de redirecionamento de porta (
Shift-F) em vez de digitar longos comandoskubectl port-forward. - Faça filtre visualizações usando todos os namespaces ou namespaces específicos para reduzir as cargas de consulta ao servidor da API.
- Não deixe dezenas de redirecionamentos de porta ativos abertos; gerencie e finalize-os na visualização
:portforwards. - Não execute o K9s em clusters empresariais grandes sem definir intervalos
--refreshapropriados. - Não exclua reivindicações de volume persistente (PVCs) pelo K9s sem verificar backups.
Solução de Problemas
| Erro | Causa | Solução |
|---|---|---|
Boom!! K9s cannot connect to cluster | Contexto do kubeconfig ativo inválido ou endpoint do cluster inacessível. | Verificar conexão: kubectl cluster-info e alternar contexto com kubectl config use-context. |
Pod logs failing to stream in k9s | Contêiner do pod travou ou usuário não tem permissão RBAC pods/log. | Verificar status do contêiner e as permissões de função do cluster. |
Terminal display corrupted / artifacts | Terminfo do terminal incompatível ou janela do terminal pequena. | Executar export TERM=xterm-256color e maximizar a janela do terminal. |