Existe uma solicitação de memória padrão e \ ou limites para pods \ containers em k8s \ openshift?

Jan 24 2021

Olá, colegas DevOps,

Estou tentando entender se é uma solicitação de base e \ ou limite por pod \ contêiner em k8s ou Openshift como são hoje ou se você sabe de uma mudança no futuro em relação a isso.

Já vi esta resposta: Qual é a memória padrão alocada para um pod informando que não há, pelo menos para a implementação do Google de k8s e eu gostaria de ter certeza disso também para o estado atual de k8s e OpenShift em implantações locais.

atualmente executando o cluster enterprise openshift 3.11.16 e logo transferindo para 4.6.4, então minha pergunta é com relação também à implementação do RedHat de construir em cima do k8s padrão (Openshift).

Existe alguma solicitação básica ou valor limite para um container \ pod?

EDIT: Também há uma maneira de k8s ou openshift prever a solicitação de memória do contêiner pela linguagem de desenvolvimento de aplicativos ou variáveis ​​de ambiente definidas para implantação (como do comando Java container RUN ou env: JVM_OPTS -Xms1G -Xmx1G)?

Respostas

2 VasiliAngapov Jan 24 2021 at 01:15

Por padrão, não há solicitações de recursos ou limites, o que significa que cada pod é criado usando o BestEffort QoS . Se você deseja configurar valores padrão para solicitações e limites, você deve usar LimitRange .

Os pods BestEffort, por definição, são "para que um pod receba uma classe de QoS de BestEffort, os contêineres no pod não devem ter nenhum limite de memória ou CPU ou solicitações". Os pods BestEffort têm a prioridade mais baixa para o programador Kubernetes e podem ser removidos em caso de contenção de recursos

Tudo o que foi dito acima é verdadeiro para todas as distribuições do Kubernetes, incluindo o OpenShift.

1 StavBernaz Feb 04 2021 at 05:31

Não há um limite ou solicitação padrão. Para configurar os recursos padrão, você deve criar um recurso LimitRange conforme descrito aqui:https://docs.openshift.com/container-platform/3.11/dev_guide/compute_resources.html#dev-viewing-limit-ranges

Se quiser que cada novo projeto seja criado com certos limites de recursos, você pode modificar o modelo de projeto padrão conforme descrito aqui: https://docs.openshift.com/container-platform/3.11/admin_guide/managing_projects.html#modifying-the-template-for-new-projects

Isso não muda no 4.6 também, apenas a implementação de como modificar o LimitRange ou o modelo de projeto padrão. (A metodologia é exatamente a mesma)

Quanto à sua questão de prever recursos de aplicativos, existem alguns jogadores em torno desse problema. Eu só ouvi falar sobre turbonomic, que pode até mesmo alterar seus recursos de implantação automaticamente por utilização e talvez também algumas métricas personalizadas.