Недавно мы перешли на автопилот 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. Если да, то любой пример или ссылки будут очень признательны. Спасибо.

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