自定义对象的大负载
Large payload for Custom Objects
虽然我可以很好地创建自定义对象,但我想知道应该如何处理对象的大负载(千兆字节)。
CR 主要用于连接 Kubernetes 中的垃圾 collection/reference 计数。
不过,通过 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 最终确定(找不到有关自定义终结器的任何信息),我似乎无法清理有效负载文件。
不清楚如何将这样的概念集成到 Kubernetes 生命周期中。
一般来说,由于 etcd 的限制,任何 Kube API 对象的大小限制都是 ~1M,但是在一个对象中放置超过 20-30k 是一个坏主意,并且访问起来会很昂贵(并且垃圾收集也会很昂贵)。
我建议将数据存储在对象存储桶中,并使用像 https://github.com/brancz/kube-rbac-proxy 这样的 RBAC 代理来访问存储桶内容(使用 URL 代理作为对象的引用).这为您提供了在 api 中跟踪数据的所有好处,但保持了较小的对象大小。如果您想要更复杂的集成,您可以实施聚合 API 并重用核心 Kubernetes 库来处理您的 API,将数据存储在对象存储中。
我们仍然继续使用 CO。同时,我们创建了一个 Kubernetes 控制器,它处理 PV 中的生命周期。对我们来说这很好用,因为控制器可以是 PV 的单一写入者,而实际的服务只需要对 PV 的读取权限。
结合 ownerReference
,这可以很好地集成到 Kubernetes 生命周期中。
虽然我可以很好地创建自定义对象,但我想知道应该如何处理对象的大负载(千兆字节)。
CR 主要用于连接 Kubernetes 中的垃圾 collection/reference 计数。
不过,通过 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 最终确定(找不到有关自定义终结器的任何信息),我似乎无法清理有效负载文件。
不清楚如何将这样的概念集成到 Kubernetes 生命周期中。
一般来说,由于 etcd 的限制,任何 Kube API 对象的大小限制都是 ~1M,但是在一个对象中放置超过 20-30k 是一个坏主意,并且访问起来会很昂贵(并且垃圾收集也会很昂贵)。
我建议将数据存储在对象存储桶中,并使用像 https://github.com/brancz/kube-rbac-proxy 这样的 RBAC 代理来访问存储桶内容(使用 URL 代理作为对象的引用).这为您提供了在 api 中跟踪数据的所有好处,但保持了较小的对象大小。如果您想要更复杂的集成,您可以实施聚合 API 并重用核心 Kubernetes 库来处理您的 API,将数据存储在对象存储中。
我们仍然继续使用 CO。同时,我们创建了一个 Kubernetes 控制器,它处理 PV 中的生命周期。对我们来说这很好用,因为控制器可以是 PV 的单一写入者,而实际的服务只需要对 PV 的读取权限。
结合 ownerReference
,这可以很好地集成到 Kubernetes 生命周期中。