Большая полезная нагрузка для пользовательских объектов - PullRequest
0 голосов
/ 04 сентября 2018

Хотя я могу очень хорошо создавать пользовательские объекты, мне интересно, как можно обрабатывать большие полезные нагрузки (гигабайты) для объекта.

CR в основном используются для взаимодействия со сборщиком мусора / подсчетом ссылок в Kubernetes.

Добавление полезной нагрузки через YAML не работает, хотя (недостаточно памяти для больших полезных нагрузок):

apiVersion: "data.foo.bar/v1" 
kind: Dump 
metadata:
  name: my-data
  ownerReferences:
    - apiVersion: apps/v1
      kind: Deploy
      name: my-deploy
      uid: d9607a69-f88f-11e7-a518-42010a800195
spec: 
  payload: dfewfawfjr345434hdg4rh4ut34gfgr_and_so_on_...

Можно было бы добавить полезную нагрузку в PV и просто ссылаться на этот путь в CR. Тогда у меня проблема в том, что мне кажется, что я не могу очистить файл полезной нагрузки, если CR будет завершен (не смог найти никакой информации о пользовательских финализаторах).

Понятия не имею, как интегрировать такую ​​концепцию в жизни Кубернетов.

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Мы по-прежнему использовали CO. Наряду с этим мы создали контроллер Kubernetes, который управляет временем жизни в PV. Для нас это работает нормально, поскольку контроллер может быть единственным автором для PV, в то время как реальным службам нужен только доступ для чтения к PV. В сочетании с ownerReference это обеспечивает хорошую интеграцию в время жизни Kubernetes.

0 голосов
/ 04 сентября 2018

Как правило, ограничение размера для любого объекта API Kube составляет ~ 1M из-за ограничений etcd, но помещать более 20-30k в объект - плохая идея и будет дорогим для доступа (а сборка мусора будет дорогой, так как хорошо).

Я бы порекомендовал хранить данные в хранилище объектов и использовать прокси-сервер RBAC, такой как https://github.com/brancz/kube-rbac-proxy, для доступа к содержимому хранилища (используйте URL-адрес для прокси в качестве ссылки из вашего объекта). Это дает вам все преимущества отслеживания данных в API, но сохраняет размер объекта небольшим. Если вы хотите более сложную интеграцию, вы можете реализовать агрегированный API и повторно использовать основные библиотеки Kubernetes для обработки вашего API, сохраняя данные в хранилище объектов.

...