# Regras

As Regras de Kubernetes são um conjunto de recomendações baseadas nas aplicações sendo executadas nos Clusters e buscando dar visibilidade da sub-utilização dos Nós em execução dentro dos Clusters. Essas regras são divididas em duas categorias: **Economia e Boas Práticas**.

**Como chegar em Regras:**

1. Em Kubernetes, selecione a opção **Regras**.

<figure><img src="https://109632036-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcxn6hAOP0k8IqKSI8iRP%2Fuploads%2FYlVWwnemvBwqIok4PTUh%2Fimage.png?alt=media&#x26;token=4330efcb-4d6d-4919-a67f-cabcb2d6fd9c" alt=""><figcaption></figcaption></figure>

#### Regras

2. Cada regra terá uma visão com algumas informações conforme abaixo:

<figure><img src="https://109632036-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcxn6hAOP0k8IqKSI8iRP%2Fuploads%2FgF8qifslNrkmvwQ9diLS%2Fimage.png?alt=media&#x26;token=ce7c0a10-54fb-41ab-97d8-3671c7b2511a" alt=""><figcaption></figcaption></figure>

* **Nodes Encontrados:** Lista a quantidade de Nodes encontrados que se aplicam a recomendação.
* **Custo estimado de economia:** Custo de economia mensal estimada com a realização da recomendação.
* **Categoria:** Informa se a recomendação possui algum saving relacionado ou apenas se aplica a uma boa prática de utilização do recurso.

3. Ao clicar no nome da regra em azul, o sistema irá exibir uma visão gráfica da recomendação ao longo do tempo e uma economia estimada, caso seja uma regra de economia:

<figure><img src="https://109632036-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcxn6hAOP0k8IqKSI8iRP%2Fuploads%2F2fRjKo3xFkVVqTfDcG1X%2Fimage.png?alt=media&#x26;token=fffd96c5-f366-4693-b574-de4ea8c6e0af" alt=""><figcaption></figcaption></figure>

4. Mais abaixo, é possível visualização uma lista mais detalhada com informações de todos os **nodes** ou **workloads** encontrados, que se aplicam a regra:

* Para recomendações de **Economia**, serão exibidas informações como:
  * Node
  * Tipo de Node
  * Região
  * Account ID
  * Nome do Cluster
  * Custo do Node (CPU e Memória)

<figure><img src="https://109632036-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcxn6hAOP0k8IqKSI8iRP%2Fuploads%2FK3CPbIn727VDhu0M4c7C%2Fimage.png?alt=media&#x26;token=5d99f7a2-b96e-4bf1-b5ce-6295091bfe72" alt=""><figcaption></figcaption></figure>

* Para recomendações de **Boas Práticas**, serão exibidas informações como:
  * Aplicação
  * Nome do Cluster
  * Container
  * Namespace
  * Tipo de Aplicação
  * Limite de CPU

<figure><img src="https://109632036-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcxn6hAOP0k8IqKSI8iRP%2Fuploads%2FLtwtlIV6Tru1kUPHnNE0%2Fimage.png?alt=media&#x26;token=2911de33-5e37-42fb-b3ba-e55853cb55ea" alt=""><figcaption></figcaption></figure>

5. Clicando no nome em **azul**, o sistema irá direcionar para a informação mais detalhada por aplicação na página de **Overview**. Em caso de Nodes, ele irá direcionar para a informação mais detalhada do Node na página de **Nodes.**
6. Clicando no ícone de **Filtros**, conforme indicado abaixo:

<figure><img src="https://109632036-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcxn6hAOP0k8IqKSI8iRP%2Fuploads%2Fd0iommE4rey76X6Qom0b%2Fimage.png?alt=media&#x26;token=66ffe774-10e5-416d-8283-7203ffb3dab6" alt=""><figcaption></figcaption></figure>

O sistema irá exibir todas as opções de labels coletados da plataforma de observabilidade, permitindo aplicar o campo de filtro desejado para o K8s:

<figure><img src="https://109632036-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcxn6hAOP0k8IqKSI8iRP%2Fuploads%2FfNV5sVTwhvi9VFerXXHY%2Fimage.png?alt=media&#x26;token=dbd11ee7-7d2d-4c07-8038-28dad69cfe5f" alt="" width="230"><figcaption></figcaption></figure>

Ao selecionar o campo desejado, será possível fornecer mais informações sobre o campo de filtro, como:

* Habilitar a opção de **expressões negativas**, caso queira trabalhar com um resultado diferente do informado.
* **É igual a**: Nesse caso, deve ser selecionado o valor desejado no retorno.
* **É vazio**: Quando for desejado um resultado vazio para o meu retorno.
* **Contém**: Quando for desejado que o resultado contenha um valor específico a ser informado.
* **Começa com**: Quando for desejado que o resultado começe com um valor específico a ser informado.
* **Termina com**: Quando for desejado que o resultado termine com um valor específico a ser informado.

<figure><img src="https://109632036-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcxn6hAOP0k8IqKSI8iRP%2Fuploads%2FZTFfqHoAAvwgmatLVFbS%2Fimage.png?alt=media&#x26;token=e6ed8394-b04a-4c86-a457-07265f893637" alt="" width="233"><figcaption></figcaption></figure>

E clicando no botão **Salvar**, o sistema irá exibir o filtro adicionado:

<figure><img src="https://109632036-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcxn6hAOP0k8IqKSI8iRP%2Fuploads%2FLGRkozcQSNJWiPkXb652%2Fimage.png?alt=media&#x26;token=1bb9ce14-8bbb-4b9f-ae11-114ba45fd6db" alt=""><figcaption></figcaption></figure>

6. Além de permitir aplicar um campo de filtro, o sistema também permite aplicar um **período** de competência:

<figure><img src="https://109632036-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcxn6hAOP0k8IqKSI8iRP%2Fuploads%2FhHgsPtwYnrI5BCXIsnlx%2Fimage.png?alt=media&#x26;token=e7b9c5e4-c632-4fcd-b13b-3915fe1534ac" alt=""><figcaption></figcaption></figure>

Clicando na opção de período, conforme destado acima, o sistema irá abrir o mês informado, permitindo selecionar um dia especifico:

<figure><img src="https://109632036-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcxn6hAOP0k8IqKSI8iRP%2Fuploads%2FSnVZLUuAnO1YVBLloftG%2Fimage.png?alt=media&#x26;token=37b36d2c-d5a7-4c67-8e3a-428411f69a44" alt=""><figcaption></figcaption></figure>

Ao selecionar o dia desejado, clicando no botão **Recarregar**, o sistema irá atualizar os dados da página para o novo dia informado:

<figure><img src="https://109632036-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcxn6hAOP0k8IqKSI8iRP%2Fuploads%2FJZEOLxkXVLfdWu96B0HW%2Fimage.png?alt=media&#x26;token=fb94a089-d69a-4320-a2f5-3d7d29a4f141" alt=""><figcaption></figcaption></figure>

Por fim, clicando no ícone "![](https://109632036-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcxn6hAOP0k8IqKSI8iRP%2Fuploads%2FhKB1608YVCtkcThBDteX%2Fimage.png?alt=media\&token=3bd1f0b7-5121-4681-b748-6c6c52592cc5)" o sistema permite extrair um relatório em formato CSV.

<figure><img src="https://109632036-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcxn6hAOP0k8IqKSI8iRP%2Fuploads%2F9road99zZTHW8XEohIxW%2Fimage.png?alt=media&#x26;token=787a187d-39d4-44f1-b9ad-01af6b9e2150" alt=""><figcaption></figcaption></figure>

### Regras de Economia

* **Nodes com baixa utilização**: Nós com baixa utilização de CPU e memória indicam recursos ociosos. Para otimizar custos, esses nós podem ser removidos ou redimensionados.

### Regras de Boas Práticas

* **Workloads com CPU Limit**: Exceder o limite de CPU leva a throttling do vCPU, impactando o desempenho de todos os pods no node devido ao enfileiramento de instruções.
* **Workloads sem Request de CPU**: Pods sem request de CPU podem levar a um provisionamento ilimitado, causando throttling de vCPU e impactando a performance. A reserva de CPU tende a melhorar significativamente o desempenho da aplicação.
* **Workloads sem Request de Memória**: A ausência de request de memória pode levar à exaustão da memória do nó e, consequentemente, a falhas. Alocar memória garante melhor desempenho.
* **Workloads sem limite de Memória**: A ausência de limite de memória em pods pode consumir toda a memória do nó, causando travamento e custos desnecessários, sem intervenção do ASG.
* **Workloads com request e limite de memória diferentes**: A configuração de limit de memória superior ao request expõe o nó ao risco de travamento por exaustão de memória, comportamento semelhante ao de pods sem limite.
