Может ли контейнер в Kubernetes определять собственное использование ресурсов и ограничения?

Как мое контейнерное приложение может определить собственное текущее использование ресурсов, а также максимальное ограничение, выделенное Kubernetes? Есть ли API для получения этой информации от cAdvisor и/или Kubelet?

Например, моему контейнеру разрешено использовать максимум 1 ядро, и в настоящее время он потребляет 800 миллиядер. В этой ситуации я хочу отбросить/отклонить все входящие запросы, помеченные как «низкий приоритет».

-Как я могу увидеть использование и ограничение ресурсов в моем контейнере?

Обратите внимание, что это предполагает, что автоматическое масштабирование недоступно, например. когда ресурсы кластера исчерпаны или нашему приложению не разрешено автоматическое масштабирование (далее).

Вы хотите, чтобы ваш сервис не перегружался при большом объеме запросов. Почему бы не использовать горизонтальное автомасштабирование модулей в зависимости от загрузки ЦП? Зачем конкретно нужно, чтобы контейнер перестал обрабатывать низкоприоритетные запросы при перегрузке системы. Горизонтальное автомасштабирование pod обеспечивается kubernetes из коробки.

Malathi 28.05.2019 16:53

Пока действует автоматическое масштабирование, все в порядке. Когда мы достигнем предела (ов) автоматического масштабирования, мы будем перегружены, и нам нужно будет начать отклонять, например. низкоприоритетные запросы. Спасибо за вопрос, я должен был уточнить это в своем вопросе выше.

HannesM 28.05.2019 17:55
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
0
2
97
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать Kubernetes Нисходящий API для получения лимитов и запросов. Синтаксис:

volumes:
    - name: podinfo
      downwardAPI:
        items:
          - path: "cpu_limit"
            resourceFieldRef:
              containerName: client-container
              resource: limits.cpu
              divisor: 1m

Спасибо! Кроме того, как узнать загрузку ЦП ток? (что в сочетании с моим лимитом должно дать моему ЦП%)

HannesM 29.05.2019 07:54

Я не знаю прямого способа получить информацию. Метрики, которые вы ищете, собираются cadvisor и пересылаются на сервер метрик. Чтобы получить эту информацию изнутри контейнера, я бы извлек ее с помощью API metrics.k8s.io. Вот немного документация за это.

Alassane Ndiaye 29.05.2019 15:13

Большое спасибо за этот совет. Я буду следить за этим и посмотреть, как это идет.

HannesM 03.06.2019 08:43

Другие вопросы по теме