我想控制我的租户可以创建的事件数量。
我的 ttl 是 1,那没问题,但有时我们在多个命名空间中出现峰值,我担心如果它发生在多个命名空间中,etcd 会被忽视。
我尝试过像这样使用资源配额:
apiVersion: v1
kind: ResourceQuota
metadata:
creationTimestamp: "2024-09-16T04:54:44Z"
name: compute-resources
namespace: test-dev
resourceVersion: "35872662"
uid: 78d46d9b-9b1d-435d-88c2-0cfd6f61c64c
spec:
hard:
count/events: 1k
status:
hard:
count/events: 1k
used:
# i dont see it here
但是好像不起作用。
有什么方法可以使其与资源配额一起使用吗?或者我需要创建网络挂钩?
谢谢,
使用资源配额 没有直接的方法可以使用 ResourceQuota 来限制事件资源,因为事件不被视为配额管理资源。如果资源配额应用于命名空间级别,那么您想要控制多个命名空间的事件数量,则需要为每个命名空间创建单独的资源配额。
请参阅 Anvesh Muppeda 的 Medium 博客和 kodekloud 博客,了解 Kubernetes 资源配额、限制范围以及如何收集 kubernetes 事件的实践指南。
“Kubernetes 中的资源配额允许管理员对每个命名空间的总资源使用量设置限制。通过使用资源配额,您可以限制命名空间内可以消耗的资源数量,例如 Pod、CPU 和内存。”
您可以使用准入 Webhook 来捕获事件创建请求。您还可以检查命名空间中已存在的事件数量。
“准入 Webhook 是接收准入请求并对其执行某些操作的 HTTP 回调。您可以定义两种类型的准入 Webhook:验证准入 Webhook 和变更准入 Webhook。首先调用变异准入 Webhooks,并且可以修改发送到 API 服务器的对象以强制执行自定义默认值。所有对象修改完成后,并且 API 服务器验证传入对象后,将调用验证准入 Webhook,并可以拒绝执行自定义策略的请求。”