Принудительно планировать контейнеры Google Cloud Run на узлах с графическим процессором - PullRequest
1 голос
/ 22 января 2020

Есть ли способ заставить службы, развернутые с помощью Google Cloud Run для Anthos (размещенные на GKE), планировать пулы узлов с графическим процессором?

Я создал кластер Kubernetes, перейдя на Kubernetes -> Create Cluster -> GPU Accelerated Computing , Это создало кластер Kubernetes с пулом узлов gpu-pool-1, содержащим узлы с графическим процессором, и пул узлов standard-pool-1, содержащий узлы без графического процессора.

Есть ли способ развертывания контейнеров Cloud Run в узлы, имеющие графический процессор? Может быть, путем настройки пользовательского пространства имен или чего-то еще?


Обратите внимание, что существует аналогичный вопрос от ближайшего года go, но я не думаю, что принятый ответ («Cloud Run на Kubernetes не поддерживает графические процессоры») совершенно правильно.

Ответы [ 2 ]

2 голосов
/ 22 января 2020

Это hot topi c при разработке обслуживания Knative.

Пока невозможно иметь селектор и допуск узла, когда ваши модули порождаются с обслуживанием Knative, но команда работает над решением.

0 голосов
/ 22 января 2020

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

Кажущийся файл конфигурации Service, кажется, принимает и уважать аргумент limits: nvidia.com/gpu: 1. Хотя интерфейс Cloud Run не позволяет нам указывать этот аргумент самостоятельно, мы можем использовать CLI kubectl для ручного развертывания связанных служб, определенных в файле yaml, который содержит этот аргумент.

Сначала нам нужно создать кластер GKE с включенным пулом узлов процессора, пулом узлов GPU и включенной функцией Cloud Run for Anthos. Это можно сделать, перейдя на Kubernetes Engine -> Create Cluster -> Selecting "GPU Accelerated Computing" on the left cluster templates bar -> Checking the "Enable Cloud Run for Anthos". Как только кластер создан, мы можем нажать кнопку «подключиться» и запустить облачную оболочку. Здесь мы можем создать файл service.yaml, который определяет наш родной сервис. Например, мы можем адаптировать файл service.yaml из документации , но указать, что для этой службы требуется графический процессор:

# service.yaml
apiVersion: serving.knative.dev/v1 # Current version of Knative
kind: Service
metadata:
  name: helloworld-go # The name of the app
  namespace: default # The namespace the app will use
spec:
  template:
    spec:
      containers:
        - image: gcr.io/knative-samples/helloworld-go # The URL to the image of the app
          env:
            - name: TARGET # The environment variable printed out by the sample app
              value: "Go Sample v1"
          resources:
            limits:
              nvidia.com/gpu: 1 # The service must be run on a machine with at least one GPU

Мы можем развернуть эту службу, используя:

kubectl apply -f service.yaml

и проверьте его состояние с помощью:

kubectl get ksvc helloworld-go

Служба helloworld-go должна планироваться только на узлах, содержащих графический процессор. Служба должна отображаться на панели управления Cloud Run, как и другие службы Cloud Run для Anthos.

...