Comando kubectl (k8s)

Installation for Azure Kubernetes

  1. Azure CLI
AZ_REPO=$(lsb_release -cs)    

echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ $AZ_REPO main" | sudo tee /etc/apt/sources.list.d/azure-cli.list    

curl -L https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -    

sudo apt-get update && sudo apt-get install -y azure-cli
  1. Login
az login
  1. Inscrição para acesso a Azure Kubernetes NÃO PROD
az aks get-credentials --resource-group <XXX> --name <XXX> --subscription "XXX"

Inscrição para acesso a Azure Kubernetes PROD

az aks get-credentials --resource-group <XXX> --name b2b-gb-aks-prod --subscription "XXX"

Para verificar para qual ambiente está setado neste momento

kubectl config get-contexts

Buscar por PODs

Todas as PODs do ambiente DEV que contenham no nome a string “item-service”

-- Find pods ids:    
kubectl get pods -n dev | grep <pod-name>

-- Search pod configuration by idPod:    
kubectl describe pod <POD_ID> -n dev    
kubectl describe pod <POD_ID> -n dev

-- See pod logs by idPod:    

kubectl logs -f <POD_ID> -n dev --since=1h

Todas as PODs de um ambiente

n <environment>

Parâmetro para informar qual o ambiente

f <POD_ID>

Informa o nome da POD

--since

Informa o intervalo de tempo de busca do log

Comandos

Recuperar todas as PODs de DEV que contenham no nome o texto “item-service”:

kubectl get pods -n dev | grep item-service

O comando AWK pega a primeira coluna do resultado obtido, no exemplo abaixo, ele usa a primeira coluna, “'{print $1}’”.

O $ é usado para transformar o conteúdo dentro do parênteses em uma variável.

kubectl logs $(kubectl get pods -n dev | grep item-service | awk '{print $1}') -n dev --since=1h

Para ler os logs usando tipo “tail” usar o parâmetro -f logo após logs:

Para ler os logs de um módulo/app replicado em uma pod:

kubectl logs deployment/item-relay-service --all-containers=true -f -n uat

Log das pods de desenvolvimento

O comando watch fica executando o comando dentro das aspas

kubectl logs -f $(kubectl get pods -n dev | grep item-service | awk '{print $1}') -n dev --since=1h

-o wide : retorna algumas informações a mais 

watch "kubectl get pods -n dev -o wide | grep item"

Alterar a quantidade de PODs que estão ativas para um determinado micro serviço. O valor do parâmetro replica representa a quantidade final de PODs que estarão ativas. Inserindo o valor zero, força a finalização de todas as PODs.

kubectl scale deployment item-relay-service -n dev --replicas=2kubectl scale deployment item-service -n dev --replicas=0

Para editar o arquivo do kubernetes diretamente. O primeiro KUBE_EDITOR parâmetro força a utilização do editor NANO.

KUBE_EDITOR="nano" kubectl edit deployment item-service -n dev

Executar algum comando dentro da pod de maneira interativa

kubectl exec -it item-consumer-service-54584f9567-nxs7x -n dev -- /bin/sh

Para obter a versão de todos os micro serviços implantados no ambiente que você estiver logado

kubectl get pods --all-namespaces -o jsonpath="{..image}" |\tr -s '[[:space:]]' '\n' |\sort |\un

Para obter a versão do Products-Service implantado no ambiente que você estiver logado

kubectl get pods -o jsonpath="{..image}" -l app=products-service |tr -s '[[:space:]]' '\n' |sort |uniq -c