Kubernetes — как рассчитать ресурсы, необходимые для каждого контейнера?

Kubernetes — как рассчитать ресурсы, необходимые для каждого контейнера?

Как узнать, сколько мин. и макс. ресурсов выделить для каждого развертывания приложения? Я настраиваю кластер, но не настроил никаких ресурсов и позволяю ему работать свободно.

Думаю, я мог бы использовать top commandдля вычисления нагрузки в пиковое время и работать над этим, но все еще top говорит, что это 6% или 10%, но тогда я не уверен, как их рассчитать, чтобы получить что-то вроде 0.5 cpuили 100 MB. Есть ли метод/формула для определения максимума и минимума на основе top commandиспользования?

Я запускаю два узла t3.medium и у меня есть следующие модули httpd and tomcat in namespace1, mysql in namepsace2, jenkins and gitlab in namespace3. Есть ли какое-либо руководство по минимально необходимым ресурсам? Или мне нужно вычислить это на основе top или какого-то другого метода?

решение1

Ресурсы, которые будут назначены pod, зависят от использования вашего приложения. Например, при установке jenkinsс помощью helm указывается следующеезапросы ресурсов и ограничения:

  resources:
    requests:
      cpu: "50m"
      memory: "256Mi"
    limits:
      cpu: "2000m"
      memory: "4096Mi"

Но чтобы избежать завершения работы модуля из-за нехватки ресурсов, вы можете использоватьHorizontal Pod Autoscalerс метриками ресурсов для масштабирования модулей вверх или вниз на основепотребление ресурсов(или любой другойпользовательские метрики, как запросы и т.д.). HPA требуетmetrics-serverдля работы в вашем кластере.

Его можно легко создать с помощьюkubectl autoscale, например:

kubectl autoscale deployment <deployment-name> --cpu-percent=50 --min=1 --max=10

Где --min— минимальное количество реплик, которые необходимо запустить, а --max— максимальное количество реплик модулей, которые будут созданы в случае увеличения нагрузки.

Связанный контент