Quatro configurações fáceis do terminal Kubernetes para melhorar sua produtividade



Gerenciei a operação de grandes clusters do Kubernetes por mais de três anos e quero compartilhar minha abordagem minimalista para configurar o terminal kubectl, que se provou altamente eficaz no trabalho diário. Um terminal de linha de comando bem configurado pode aumentar muito sua produtividade. É como pão com manteiga - uma combinação mágica.



Mas ao contrário das modificações populares e adições funcionais, acredito em uma configuração simples que não requer a instalação de novos binários, invólucros ou modificações. Especialmente no caso do kubectl - uma ferramenta nativa, razoavelmente bem projetada, com muito poucas desvantagens.



Aqui estão quatro add-ons simples para o terminal kubectl. Com essa configuração, gerencio 20 grandes clusters do Kubernetes de 400 máquinas todos os dias.



Usando kubetail para rastrear registros de vários pods



A primeira coisa que você nota ao usar o kubectl é a dificuldade de manter o controle dos registros em vários pods. Este é um dos cenários mais solicitados que ainda não foi implementado no kubectl.



Se você precisar rastrear o registro de um único pod no kubectl, terá a seguinte aparência:



kubectl logs -f <POD_NAME> -n <NAMESPACE>


Para rastrear vários pods no kubetail, basta escrever:



kubetail <POD_NAME_REGEX> -n <NAMESPACE>


Você começará a rastrear todos os pods que correspondem à expressão regular. Como vários pods são registrados ao mesmo tempo, o kubetail os sinaliza em cores diferentes para ajudá-lo a navegar.





kubetail é um wrapper simples sobre kubectl. É fácil de instalar, você pode encontrar instruções aqui .



2. Alterar dinamicamente o namespace padrão



Eventualmente, você se cansará de definir o sinalizador de namespace para cada operação kubectl repetidamente. Precisamos descobrir como alterar dinamicamente os namespaces padrão.



Para fazer isso, escrevi uma função de alias simples ksn(o nome implica em set namespace ).



# Add the following to .zshrc/.bashrc...etc
# Allows setting default namespace while working with kubectl #

alias k='kubectl'
alias ksn='_f(){k get namespace $1 > /dev/null; if [ $? -eq 1 ]; then return $?; fi;  k config set-context $(k config current-context) --namespace=$1; echo "Namespace: $1"};_f'

#Usage:
#➜  ~ ksn dev1                                                       (dev-context/dev1)
#     Context "dev-context" modified.
#     Namespace: dev1

#➜  ~ ksn ff                                                         (dev-context/dev1)
#     Error from server (NotFound): namespaces "ff" not found






Normalmente trabalhamos com uma variedade de namespaces dependendo da tarefa atual. E como 80% dos problemas estão associados a namespaces Kafka, esse recurso tem sido minha ferramenta padrão. Isso poupará muito tempo, especialmente ao trabalhar em tarefas complexas que exigem a inserção de muitas instruções no kubectl.



3. Exibindo o contexto do kube e o namespace no prompt do shell



Ao usar os comandos kubectl, você deve sempre prestar atenção ao kube-contexte atual namespace. Não é tão fácil quando você gerencia clusters em 20 contextos diferentes e 50 namespaces ao mesmo tempo. Existe o risco de usar o comando errado no ambiente, especialmente ao trabalhar em várias tarefas ao mesmo tempo em clusters e contextos diferentes.



Para resolver esse problema, é extremamente útil exibir constantemente o namespace ativo e o contexto na próxima janela.



No exemplo abaixo, meu contexto é dev2–1e o namespace é test. Para mim, basta olhar para essas informações quando executo diferentes comandos no cluster.





Você pode encontrar instruções de instalação e configuração aqui .



4. Os aliases de kubectl mais importantes



Os apelidos são a maneira mais rápida de personalizar e agilizar seu trabalho no terminal. Aqui estão meus apelidos mais usados, que quase se tornaram parte da minha natureza:



alias k='kubectl '
alias kcc='kubectl config current-context'
alias kdp='kubectl delete po'
alias kgc='kubectl config get-contexts'
alias kge='kubectl get events --sort-by='\''{.lastTimestamp}'\'
alias kgp='kubectl get po'
alias kl='kubectl logs '
alias kpf='kubectl port-forward'
alias ksc='kubectl config use-context'


Menos é melhor: não sobrecarregue seu terminal



Abordamos quatro grandes melhorias de terminal para usuários kubectl:



  1. Usando kubetail para rastrear registros de vários pods.
  2. Alterar dinamicamente os namespaces padrão para reduzir significativamente o comprimento das instruções kubectl.
  3. Exibindo contexto e namespaces próximo ao seu terminal para evitar erros acidentais.
  4. Lista de aliases de kubectl importantes.


Em contraste com este conjunto minimalista, as atualizações de terminal populares (como o K9s ) são frequentemente sobrecarregadas, cheias de recursos e embalagens de doces, mas são lentas, distraem e, mais importante, desnecessárias. Quanto mais recursos (lantejoulas e laços) você adicionar, mais tempo levará para percorrer todas as informações extras na tela.



A configuração elegante do terminal ajuda a manter o foco como nada mais.



A configuração simples baseada em linha de comando permitirá que você desenvolva de forma rápida e eficiente usando binários e ferramentas nativas. Isso é muito importante, especialmente ao trabalhar com uma grande infraestrutura, efetuando login e logout de diferentes perfis em máquinas virtuais.



A configuração do seu terminal deve enriquecê-lo como desenvolvedor, não fazer você se sentir sem mãos.



All Articles