DEV Community

Cover image for Obtendo mais do Kubectl
Wander
Wander

Posted on

Obtendo mais do Kubectl

Que tal se aprofundar um pouco mais no kubectl e tirar mais benefícios dessa ferramenta? vamos conhecer alguns comandos que podem te ajudar a ganhar tempo, trazer conhecimento sobre seu cluster e recursos, depurar e análisar pods e etc.


ADMINISTRANDO

o kub te explica: o comando explain fornece informações sobre os recursos do kub. Caso você esteja com dúvida na composição de um recurso como um deployment, role e etc, você pode usa-lo para ter um norte, veja o exemplo abaixo:
kubectl explain roles
Image description

 
será que pode? Este comando pode ser útil para administradores do cluster, pois permite verificar se um usuário ou grupo tem permissão para executar uma determinada ação.
kubectl auth can-i delete deploy
Image description

você pode ser ainda mais específico e perguntar se uma determinada service account tem permissão:
kubectl auth can-i list pods -n default --as system:serviceaccount:default:default
Image description

 
quero uma lista do que tem: este comando pode ajudar a descobrir os tipos de recursos que podem ser criados no cluster.
kubectl api-resources
Image description

 
hmm contextos: quando se trabalha com vários clusters é interessante você usar o comando get-contexts para obter dados de todos os clusters configurados e saber em qual cluster você está 'logado'.
kubectl config get-contexts
Image description

para alternar para outro contexto use o comando:
kubectl config use-context [nome do contexto]

 
me fale sobre você kub: para obter alguns dados sobre o seu cluster, você pode usar o comando abaixo:
kubectl cluster-info
Image description

 
quero um arquivinho: em determinados momentos pode ser necessário obter o manifesto de um recurso já criado no cluster, seja por não ter mais o manifesto em algum lugar ou por simplesmente querer estuda-lo. É possível fazer isso exportando-o com a flag -o e especificando seu formato, no exemplo abaixo estou extraindo o manifesto do meu deployment que está no cluster para a minha máquina no formato yaml com o nome novo_deploy.yaml:
kubectl get deploy nginx-deployment -o yaml > novo_deploy.yaml

 
quero recursos por labels: as labels são muito úteis no kub e podemos usa-las para filtrar os recursos que queremos ver, um exemplo disso é obter uma lista de pods por labels:
kubectl get pods -l app=nginx
Image description


DEPURANDO

me dê logs rapaz: para visualizar as logs de um pod usamos o comando logs + [nome do pod] + [namespace], confira abaixo:
kubectl logs nginx-deployment-8cf88777f-l8s2g -n default
Image description

caso queira ver diretamente as logs do container, basta adicionar a flag -c seguido do nome do container.

para consultar e acompanhar as logs do pod basta adicionar a flag -f (--follow):
kubectl logs -f nginx-deployment-8cf88777f-l8s2g -n default

 
o que está acontecendo? o comando get events vai te dar uma visão por namespace dos eventos que estão ocorrendo no cluster.
kubectl get events -n kube-system
Image description

você pode filtrar os eventos para visualizar por exemplo apenas informações de um determinado recurso.
kubectl get events -n default --field-selector involvedObject.name=nginx-deployment-8cf88777f-l8s2g
Image description

 
descreve ai pra mim: para analisar as configurações de um recurso criado no cluster você pode usar o comando describe, além disso, no final dos dados retornados por este comando é possível verificar o status/eventos relacionados ao recurso.
kubectl describe pod nginx-deployment-8cf88777f-l8s2g -n default
Image description

 
'entra no pod': o comando exec --it permite executar comandos dentro de um pod ou container. Para executa-lo use kubectl exec --it [nome do pod] + [comando], veja:
kubectl exec -i -t nginx-deployment-8cf88777f-l8s2g -- /bin/bash
Image description

para acessar o container ao invés do pod basta incluir a flag -c e o nome do container na frente:
kubectl exec -i -t nginx-deployment-8cf88777f-l8s2g -c nginx-container -- /bin/bash
use 'exit' para sair do pod

 
mais e mais infos: a flag -o wide expande as informações da listagem de um determinado recurso, pode ser usado com pods, nodes, deployments, services e etc, e pode ser util para rapidamente detectar alguma anomalia como por exemplo ips incorretos.
kubectl get pods -o wide
Image description


BÔNUS

reiniciando deployments: kubectl rollout restart deployment [nome do deployment] -n [namespace]
desfazendo um deployment: kubectl rollout undo deployment [nome do deployment]
aumentando o número de replicas: kubectl scale --replicas=3 replicaset [nome do replicaset] -n [namespace]


CONCLUSÃO

Neste artigo abordei de forma simples alguns comandos pouco conhecidos da ferramenta kubectl que podem ajudar na administração de um cluster kubernetes. Utilizei o minikube para montar um cluster local e fiz o deploy de um servidor nginx para demonstrar os comandos. Abaixo os links onde você pode obter os recursos utilizados e documentações para conhecer mais comandos e mais variações:

 
Espero que o artigo tenha sido útil para você! 😛

Top comments (0)