Каждый контейнер имеет запрос ЦП по умолчанию (в GKE я заметил, что это 0,1 ЦП или 100 м).Предполагая, что по умолчанию у вас есть три контейнера в этом модуле, вы запрашиваете еще 0,3 ЦП.
Узел имеет 0,68 ЦП (680 м), запрошенных другими рабочими нагрузками, и общий лимит (выделяемый) на этом узле 0,94 ЦП.(940 м).
Если вы хотите увидеть, какие рабочие нагрузки резервируют этот 0,68 ЦП, вам необходимо проверить модули на узле.На странице в GKE, где вы видите распределение ресурсов и лимиты на узел, если вы щелкнете по узлу, вы попадете на страницу, которая предоставляет эту информацию.
В моем случае я вижу 2 модуля kube-dns
, принимающих 0,26Процессор каждый, среди других.Это системные модули, которые необходимы для правильной работы кластера.То, что вы увидите, также будет зависеть от того, какие дополнительные службы вы выбрали, например: балансировка нагрузки HTTP (Ingress), Kubernetes Dashboard и т. Д.
Ваш модуль будет поднимать CPU до 0,98 CPU для узла, которыйбольше лимита 0,94, поэтому ваш модуль не может запуститься.
Обратите внимание, что планирование основано на количестве ЦП , запрошенном для каждой рабочей нагрузки, а не на том, сколько он фактически использует,или предел.
Ваши параметры:
- Отключите любую дополнительную службу, которая потребляет ресурсы ЦП, которые вам не нужны.
- Добавление дополнительных ЦПресурс для вашего кластера.Для этого вам нужно либо изменить пул узлов, чтобы использовать виртуальные машины с большим количеством ЦП, либо увеличить количество узлов в существующем пуле.Вы можете сделать это в консоли GKE или через командную строку
gcloud
. - Делать явные запросы в ваших контейнерах на меньшее количество ресурсов ЦП, которые переопределяют значения по умолчанию.
apiVersion: apps/v1
kind: Deployment
...
spec:
containers:
- name: my-app-server
image: gcr.io/my-app/server
...
resources:
requests:
cpu: "50m"
- name: my-app-scraper
image: gcr.io/my-app/scraper
...
resources:
requests:
cpu: "50m"
- name: my-app-frontend
image: gcr.io/my-app/frontend
...
resources:
requests:
cpu: "50m"