Existe uma solicitação de memória padrão e \ ou limites para pods \ containers em k8s \ openshift?
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
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.
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.