gcsfuse для монтирования сегмента в GKE и / или python3 boto для потоковой записи? - PullRequest
0 голосов
/ 23 января 2019

Я ищу способ «записать поток» некоторых видеофайлов .mp4 - так как они генерируются каким-то приложением python - в хранилище облачного хранилища Google.Приложение python упаковано и развернуто в GKE и в настоящее время прекрасно работает как веб-сервис.Но проблема в том, что все видеофайлы локально генерируются и хранятся в пути (tmp/processed) внутри модуля.

Однако я хочу, чтобы видеофайлы записывались в файлы в хранилище Google с именем my_bucket.

Я прочитал gcsfuse рекомендации (https://github.com/maciekrb/gcs-fuse-sample) о том, как смонтировать ведро в кубиках Кубернетеса, а также прочитал о boto (* 1014)* используется для передачи потоков в сегменты хранения.

Чтобы смонтировать my_bucket в tmp/processed, я добавил следующие строки в файл развертывания моего приложения (YAML):

        lifecycle:
          postStart:
            exec:
              command:
              - gcsfuse
              - -o
              - nonempty
              - my_bucket
              - tmp/processed
          preStop:
            exec:
              command:
              - fusermount
              - -u
              - tmp/processed/
        securityContext:
          capabilities:
            add:
            - SYS_ADMIN

Я еще не использовал boto и подумал, что может быть достаточно просто монтировать! Но мое приложение выдает ошибку ввода / вывода при попытке создать видеофайл.

СейчасМой вопрос заключается в том, что мне нужно использовать оба gcsfuse и boto , или достаточно просто установить ведро в мой модуль GKE? И я правильно выполняю монтаж?


ОБНОВЛЕНИЕ : я проверил, правильно ли я смонтировал, используя следующую команду:

kubectl exec -it [POD_NAME] bash

1 Ответ

0 голосов
/ 30 января 2019

Проблема решена! Я только должен был смонтировать свое ведро в капсуле, и это было все. Сценарий монтирования (как написано выше в моем вопросе) был сделан правильно. Но проблема, вызвавшая input/output error, была связана с тем, что у моего кластера GKE были недостаточные разрешения. По сути, у кластера не было разрешения на чтение / запись в хранилище, и проекту потребовалось несколько других разрешений. Итак, я создал новый кластер с помощью следующей команды:

gcloud container clusters create [MY_CLUSTER_NAME] \
  --scopes=https://www.googleapis.com/auth/userinfo.email,cloud-platform,https://www.googleapis.com/auth/devstorage.read_write,storage-rw,trace,https://www.googleapis.com/auth/trace.append,https://www.googleapis.com/auth/servicecontrol,compute-rw,https://www.googleapis.com/auth/compute,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/taskqueue \
  --num-nodes 4 --zone "us-central1-c"

чтобы иметь возможность чтения / записи из / в корзину, кластер должен иметь разрешение https://www.googleapis.com/auth/devstorage.read_write.

Кроме того, мне не нужно было использовать boto , и для монтирования через gcsfuse мне было достаточно записи потоковых видеофайлов в my_bucket.

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