OpenKruise中 rollouts 有没有监听指定namespace 的资源变化,现在好像是监听所有的? 我开代码里有 batchrelease_event_handler 里 坚挺 pod event, 这种是不是控制不住指定ns。只对特定ns,就是不要监听他不关心的东西。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在 OpenKruise 中,可以通过配置 WorkloadEventSource 对象来监听指定 Namespace 的资源变化。例如,以下是一个使用 WorkloadEventSource 监听 my-namespace Namespace 中的资源变化的示例:
yaml
Copy
apiVersion: autoscaling.kruise.io/v1alpha1
kind: WorkloadEventSource
metadata:
name: my-workload-event-source
spec:
namespace: my-namespace
eventTypes:
另外,如果您使用 OpenKruise 的 BatchRelease 对象来自动化部署和升级应用程序,可以通过以下方式控制监听的 Namespace:
通过 BatchRelease 对象的 selector 字段选择指定 Namespace 中的资源。例如,使用以下 YAML 文件创建一个 BatchRelease 对象,它只会部署 my-namespace Namespace 中的 Deployment 对象:
yaml
Copy
apiVersion: apps.kruise.io/v1alpha1
kind: BatchRelease
metadata:
name: my-batch-release
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-container
image: my-image
通过 Kubernetes 的 NamespaceSelector 和 ObjectSelector 字段选择指定 Namespace 中的资源。例如,使用以下 YAML 文件创建一个 BatchRelease 对象,它只会部署 my-namespace Namespace 中的 Deployment 和 StatefulSet 对象:
yaml
Copy
apiVersion: apps.kruise.io/v1alpha1
kind: BatchRelease
metadata:
name: my-batch-release
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-container
image: my-image
namespaceSelector:
matchNames:
- my-namespace
objectSelector:
matchExpressions:
- {key: app.kubernetes.io/name, operator: In, values: [my-deployment, my-statefulset]}
在上述示例中,BatchRelease 对象会部署 my-namespace Namespace 中的 my-deployment 和 my-statefulset 资源。
在 OpenKruise 中,Rollouts(即RollingUpdates)是一种用于管理应用程序的更新和部署策略的组件。但是 Rollouts 本身并不直接提供监听指定命名空间下资源变化的功能。
然而,你可以通过使用 Kubernetes 提供的工具来实现监听指定命名空间下资源变化的功能,例如使用 Kubernetes 的事件(Event)或监控工具如 Prometheus+Grafana 组合等。
以下是几种实现的方法:
Kubernetes Event: Kubernetes 的 Event API 可以通过监听集群中所有资源的事件来实现自定义处理逻辑。你可以编写一个自定义的控制器,订阅 Kubernetes Event 并过滤出你感兴趣的特定命名空间下的事件。
Prometheus+Grafana: 使用 Prometheus 监控你的 Kubernetes 集群,并在 Grafana 中配置相应的仪表盘来展示和报警指定命名空间下的资源变化。你可以使用 Prometheus 的 Exporter 或自定义指标来收集和存储资源的状态,并设置相应的告警规则。
扩展 Kubernetes API Server: 你可以开发一个扩展 Kubernetes API Server 的插件,该插件能够监听指定命名空间下资源的变化。它会在资源发生变化时触发你所定义的回调函数或处理逻辑。
有一个objecet label selector,在helm安装的时候可以配置。可以配置一下 rollouts 的 rbac 权限。目前只能通过 rbac 来限制一下。此回答整理至钉群“OpenKruise 社区交流群”。