Как я могу использовать минимальные ресурсы с автопилотом GKE

Недавно мы перешли на автопилот GKE, зная, что он более безопасен, стабилен и требует меньших затрат на управление с точки зрения управления пулами узлов. мы видим это, как и ожидалось, но самая большая проблема, которую мы увидели, — это рост наших затрат в 2-3 раза. Причина в том, что каждый контейнер в каждом модуле потребляет 0,5 ЦП и 512 МБ памяти, что является минимальным значением по умолчанию для вычислительного класса Balanced. Для большинства наших приложений установлено значение 100 виртуальных процессоров и 128 МБ, поскольку запросы и ограничения МОГУТ быть выше. теперь я знаю, что мы не можем устанавливать разные лимиты запросов в автопилоте, но нам хотелось использовать меньшие ресурсы.

После небольшого исследования я увидел, что мы можем использовать nodeSelectors в модуле и указать вычислительный класс. Performance Вычислительный класс, кажется, подходит для моих нужд, поскольку он позволяет использовать как минимум 1 м ЦП и 1 МБ памяти. для данного модуля я попытался установить его как

nodeSelector:
  cloud.google.com/compute-class: Performance

После этого мы начали видеть эту ошибку.

Failed to save resource: admission webhook "warden-validating.common-webhooks.networking.gke.io" denied the request: GKE Warden rejected the request because it violates one or more constraints.
Violations details: {"[denied by autopilot-compute-class-limitation]":["the specified 'cloud.google.com/compute-class:Performance' is not supported. Deployment 'XXX.mysvc'."]}
Requested by user: 'XXXXXXX', groups: 'system:authenticated'.

После дальнейшего исследования я наткнулся на эту ссылку. https://cloud.google.com/kubernetes-engine/docs/how-to/ Performance-Pods Как объяснялось, мы попробовали этот пример:

apiVersion: v1
kind: Pod
metadata:
  name: performance-pod
spec:
  nodeSelector:
    cloud.google.com/compute-class: Performance
    cloud.google.com/machine-family: c3
    cloud.google.com/gke-ephemeral-storage-local-ssd: "true"
  containers:
  - name: my-container
    image: "k8s.gcr.io/pause"
    resources:
      requests:
        cpu: 100
        memory: "128Mi"
        ephemeral: "1Gi"

Потом я увидел эту ошибку.

Violations details: {"[denied by autogke-node-affinity-selector-limitation]":["Key 'cloud.google.com/machine-family' is not allowed with node selector; Autopilot only allows labels with keys: cloud.google.com/compute-class,cloud.google.com/gke-spot,cloud.google.com/gke-placement-group,topology.kubernetes.io/region,topology.kubernetes.io/zone,failure-domain.beta.kubernetes.io/region,failure-domain.beta.kubernetes.io/zone,cloud.google.com/gke-os-distribution,kubernetes.io/os,kubernetes.io/arch,cloud.google.com/private-node,sandbox.gke.io/runtime,cloud.google.com/gke-accelerator,cloud.google.com/gke-accelerator-count,iam.gke.io/gke-metadata-server-enabled."],"[denied by autopilot-compute-class-limitation]":["the specified 'cloud.google.com/compute-class:Performance' is not supported. Deployment 'xxx.xxxx'."]}
Requested by user: 'xxxx', groups: 'system:authenticated'.

теперь мой вопрос: если я хочу развернуть модуль с несколькими контейнерами, и они должны иметь возможность запрашивать 128 МБ и 100 МБ процессора. Могу ли я сделать это, используя ЛЮБОЙ вычислительный класс в автопилоте GKE. Если да, то любой пример или ссылки будут очень признательны. Спасибо.

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

Ответы 1

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

Если я хочу развернуть модуль с несколькими контейнерами, и они должны иметь возможность запросить 128 МБ и 100 МБ процессора. Могу ли я сделать это, используя ЛЮБОЙ вычислительный класс в автопилоте GKE. Если да, любой пример или ссылки будут очень признательны.

Должна быть возможность задать запрос класса общего назначения с пакетной передачей. Минимум, который вы можете запросить при пакетном режиме, — это 50 м ЦП и 52 МБ памяти общего назначения.

Обратите внимание, что класс общего назначения является типом вычислений по умолчанию и он настраивается автоматически, если вы не указали nodeSelector при развертывании.

По состоянию на 24 апреля 2024 г. Google временно отключил пакетную обработку для некоторых кластеров, поскольку в настоящее время существует проблема.

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

Исключения Ruby не отображаются в отчетах об ошибках Google Cloud
Поддерживает ли LoadBalancer внешней транзитной сети конфигурацию BackendConfig из GKE?
Поддерживается ли диапазон управляемых служб Google (34.118.224.0/20) для стандартных частных кластеров GKE?
Невозможно выполнить запрос для существующего сеанса: java.util.concurrent.TimeoutException для тестов селена, запущенных из Jenkins в кластере GKE
Экземпляр Airflow на веб-сервере/планировщике GCP Composer отключен
Google Kubernetes Engine переопределяет завершениеGracePeriodSeconds до 600 секунд
HPA не может найти «нетипизированную» пользовательскую метрику из адаптера Prometheus/Stackdriver
Перенаправление домена вершины на URL-адрес, отличный от вершины (с www на не www) в GCP/GKE
Golang == Ошибка: не удалось создать среду выполнения OCI: невозможно запустить процесс контейнера: exec: "./bin": stat ./bin: нет такого файла или каталога: неизвестно
Невозможно добавить сертификат TLS в GKE из Google Secret Manager