Comandos úteis e mais usados no Kubernetes

Dionathan Chrys
TOTVS Developers
Published in
3 min readJul 31, 2023

Sabemos que o Kubernetes é uma ferramenta muito utilizada para rodar aplicações em diversas escalas, com esse uso tão comum é essencial que saibamos lidar com ele, então vou listar alguns comandos que considero importante para uso durante o desenvolvimento de aplicações, testes e afins.

Para que seus comandos funcionem de forma correta, você precisa já ter configurado o contexto e namespace do seu cluster no seu terminal. Levando em consideração que você já tenha o seu arquivo kubeConfig, para configurar ou trocar de contexto/namespace, você pode usar o seguinte comando:

kubectl config set-context <SEU-CONTEXTO> --namespace <SEU-NAMESPACE>

Pods

O pod é a menor unidade do Kubernetes, é dentro dele que temos os contêineres, segue abaixo alguns comandos:

# Listar os pods
kubectl get pods

# Listagem com mais detalhes
kubectl get pods -o wide

# Criar um YAML do pod descrito
kubectl get pod <NOME-POD> -o yaml > pod.yaml

# Informações detalhadas de um determinado pod
kubectl describe <NOME-POD>

# Executar um comando dentro do container do pod
kubectl exec -it <NOME-POD> -c <NOME-CONTAINER> -- <COMANDO>
## O nome do container pode ser suprimido caso só exista um dentro do pod
### Exemplo:
kubectl exec -it nginx -- sh

#Copiar conteúdo para dentro do Pod ou para o seu computador
kubectl cp <SOURCE> <DESTINATION>
kubectl cp ~/meu/caminho/local <NOME-POD>:/src/app -c <NOME-CONTAINER> --v=4

Deployments

O deployment é o que controla o Replica Set que por sua vez controla os pods, vamos ver alguns comandos:

# Lista os deployments
kubectl get deployments

# Lista os deployments com mais detalhes
kubectl get deployments -o wide

# Criar um YAML do deployments descrito
kubectl get deployment <NOME-DEPLOY> -o yaml > deploy.yaml

# Informações detalhadas de um determinado deployment
kubectl describe <NOME-DEPLOY>

# Durante uma atualização use esse comando para acompanhar o andamento
kubectl rollout status deployment <NOME-DEPLOY>

# Pausar deployment, útil quando você tem pipelines que controlam o processo e não quer que seja atualizado por alguma motivo
kubectl rollout pause deployment <NOME-DEPLOY>

# Remover do pause
kubectl rollout resume deployment <NOME-DEPLOY>

Services

O Service nada mais é uma forma de você expor a sua aplicação, existem 3 tipos de services:

  • ClusterIP: Cria um serviço (IP) que só funciona dentro do cluster
  • NodePort: Expõe uma porta dos seus nodes para expor o serviço
  • LoadBalancer: Cria um LoadBalancer

Alguns comandos:

# Lista os services
kubectl get services

# Lista os services com mais detalhes
kubectl get services -o wide

# Criar um YAML do services descrito
kubectl get services <NOME-SERVICE> -o yaml > deploy.yaml

# Informações detalhadas de um determinado service
kubectl describe <NOME-SERVICE>

# Cria um service
kubectl expose <RECURSO> <NOME-RECURSO> --port <PORTA> --type=<TIPO>
## Exemplo
kubectl expose deployment nginx --port 80 --type=NodePort

Avulsos

# Simular um comando
kubectl <COMANDO> --dry-run=client
# Simular o comando e ter uma saída em YAML
kubectl <COMANDO> --dry-run=client -o yaml > spec.yaml

# Aplicar um arquivo com um ou mais manifestos
kubectl apply -f caminho/do/arquivo.yaml
# Aplicar um arquivo de kustomize
kubectl apply -k caminho/da/pasta

# Mostras as versões de API disponíveis no cluster
kubectl api-versions

# Realizar um port-forward
kubectl port-forward <RECURSO>/<NOME-RECURSO>
## Exemplos:
kubectl port-forward services/nginx-svc 8000:80
kubectl port-forward pods/nginx 8000:80
kubectl port-forward deployments/nginx 8000:80

# Lista os contextos
kubectl config get-contexts

Para facilitar sua vida, caso você não goste do terminal, existe uma “IDE” para o Kubernetes, o nome dela é OpenLens.

O link do projeto no GitHub está aqui.

Instalação para Windows, Linux e Mac

--

--

Dionathan Chrys
TOTVS Developers

DevOps Analyst | AWS Cloud Practitioner Certified | Kubernetes | Docker | Azure Pipelines