Как рассчитать выделяемые ресурсы узла для кластера Kubernetes? - PullRequest
0 голосов
/ 23 сентября 2019

У нас есть кластер, в котором узлам не хватает ресурсов, что приводит к проблемам с медлительностью и чрезмерной фиксацией.Это заставляет нас часто перезагружать узлы.Мы планируем применить политику распределения ресурсов узла для разделения доступных ресурсов ЦП, памяти и эфемерного хранилища между модулями системы, кублета и приложений.

В некоторых местах приведены рекомендации по расчету выделяемых ресурсов здесь ,

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

1 Ответ

0 голосов
/ 23 сентября 2019

Как вы упомянули, вы используете OpenShift, и предоставленные вами документы получены от GCP.Требования по умолчанию, параметры могут отличаться из-за спецификаций Cloud Provider.

К сожалению, я не OpenShift пользователь, но вы можете найти в документации по ОС , что:

Ресурсызарезервированные для компонентов узла основаны на двух настройках узла: kube-reserved и system-reserved.

Вы можете установить их в разделе kubeletArguments файла конфигурации узла ( / etc / origin / node /файл node-config.yaml по умолчанию) с использованием набора пар = (например, cpu = 200 м, память = 512 млн.).

Как вычислить выделенные ресурсы?

Выделенное количество ресурса рассчитывается по следующей формуле:

[Allocatable] = [Node Capacity] - [kube-reserved] - [system-reserved]

Если [Allocatable] отрицательно, оно установлено на 0.

Пожалуйста, проверьте ниже документы OpenShift: Распределение ресурсов узла , Управление емкостью , Пределы кластера , Пределы ресурса

Многие факторы зависят от того, какие именно стручки / изображения вы хотите использовать.Для некоторых изображений может потребоваться 0,1 CPU, но для других может потребоваться 1CPU для запуска.

Вы можете ограничить его, создав Quota , задав Pod запросов и ограничив .

Пожалуйста, имейте в виду, что вы всегда можете проверить текущие Запросы / Лимиты в каждом Pod, в Containers.containerName.Requests:

$ os describe pod <pod-name>

Или запрошенные ресурсы / ограничения на узле

$ os describe node <node-name>

Внизу этого описания вы должны получить все запросы и ограничения для pods

Non-terminated Pods:         (6 in total)
  Namespace                  Name                                              CPU Requests  CPU Limits  Memory Requests  Memory Limits  AGE
  ---------                  ----                                              ------------  ----------  ---------------  -------------  ---
  default                    nginx-7cdbd8cdc9-b94r9                            100m (10%)    0 (0%)      0 (0%)           0 (0%)         6m2s
  default                    nginx-7cdbd8cdc9-nlsw7                            100m (10%)    0 (0%)      0 (0%)           0 (0%)         6m2s
  kube-system                fluentd-gcp-v3.2.0-lwnqn                          100m (10%)    1 (106%)    200Mi (7%)       500Mi (18%)    5h22m
  kube-system                kube-proxy-gke-stc1-default-pool-094e5c74-4dzj    100m (10%)    0 (0%)      0 (0%)           0 (0%)         5h22m
  kube-system                prometheus-to-sd-lbj57                            1m (0%)       3m (0%)     20Mi (0%)        20Mi (0%)      5h22m
  kube-system                traefik-749d86f748-frs7q                          0 (0%)        0 (0%)      0 (0%)           0 (0%)         158m
Allocated resources:
  (Total limits may be over 100 percent, i.e., overcommitted.)
  Resource                   Requests    Limits
  --------                   --------    ------
  cpu                        401m (42%)  1003m (106%)
  memory                     220Mi (8%)  520Mi (19%)
  ephemeral-storage          0 (0%)      0 (0%)
  attachable-volumes-gce-pd  0           0

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...