Kubernetes: dicas e truques na orquestração de containers - Parte 5

Renato Groffe
4 min readMar 6, 2021

--

Neste novo artigo (parte 5) retomo a série com dicas e truques envolvendo a orquestração de containers com Kubernetes.

A seguir listei os links dos 4 primeiros posts que já publiquei, caso ainda não tenha consultado os mesmos ou pretenda revê-los:

Kubernetes: dicas e truques na orquestração de containers - Parte 1

Kubernetes: dicas e truques na orquestração de containers - Parte 2

Kubernetes: dicas e truques na orquestração de containers - Parte 3

Kubernetes: dicas e truques na orquestração de containers - Parte 4

Exibindo informações adicionais sobre Pods e Deployment em execução

A seguir temos um exemplo de uso do comando kubectl get pods:

kubectl get pods -n apifinancas

Listando os Pods disponíveis no namespace apifinancas:

Já no próximo exemplo o comando kubectl get deployments:

kubectl get deployments -n apifinancas

Trará os Deployments para o namespace apifinancas:

Utilizando a opção -o wide ou --output wide serão exibidos detalhes adicionais para Pods:

kubectl get pods -n apifinancas -o wide

E Deployments:

kubectl get deployments -n apifinancas --output wide

Monitorando alterações em objetos com o parâmetro --watch

Podemos nos valer do parâmetro --watch com o objetivo de monitorar alterações em estruturas como Pods:

kubectl get pods -n apifinancas -o wide --watch

E Deployments:

kubectl get deployments -n apifinancas --output wide --watch

Decorrido algum tempo veremos o status dos novos (Pending, ContainerCreating, Runing) e antigos Pods (Terminating):

E do objeto Deployment (com a mudança na imagem da tag 4 para a 5):

Criando ambientes para testes com Redis, SQL Server e RabbitMQ

Nesta seção temos exemplos de criação de Deployments + Services/Load Balancers visando a montagem de ambientes de testes utilizando Redis:

SQL Server 2019:

E RabbitMQ:

No caso específico do RabbitMQ 2 portas foram expostas:

  • 5672, para o envio e consumo de mensagens;
  • 15672, com a interface de gerenciamento desta solução de mensageria.

Na próxima imagem podemos observar esta interface do RabbitMQ:

Obviamente que tais exemplos se destinam à criação rápida de instâncias para testes. Num eventual cenário que envolvesse as tecnologias mencionadas em ambiente de Produção deveriam ser configurados aspectos de segurança como o uso de certificados, secrets e volumes para os dados manipulados por instâncias de cada um destes serviços (Redis, SQL Server 2019 e Redis).

Declarando diferentes objetos num mesmo arquivo YAML

Observando os exemplos da seção anterior podemos notar que num mesmo arquivo YAML foram declarados objetos de Deployment (incluindo definições de Pods) e Services/Load Balancers. A separação entre essas diferentes estruturas num mesmo arquivo YAML acontece através do uso de 3 sinais de “-” (negativo) em uma linha: ---

Assim a execução do comando kubectl apply para cada arquivo:

kubectl apply -f .\redis-k8s.yml -n rediskubectl apply -f .\sqlserver-k8s.yml -n sqlserverkubectl apply -f .\rabbitmq-k8s.yml -n rabbitmq

Resultaria na criação dos respectivos Deployments + Pods e Services/Load Balancers.

Resultaria na criação dos respectivos Deployments + Pods e Services/Load Balancers.

Na imagem a seguir temos um exemplo disto com a criação de um Deployment e de um Service para um ambiente de testes com o Redis:

--

--

Renato Groffe

Microsoft Most Valuable Professional (MVP), Multi-Plataform Technical Audience Contributor (MTAC), Software Engineer, Technical Writer and Speaker