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
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
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
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
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
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
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
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
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
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
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
'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
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
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)