OpenKruise中 rollouts 有没有监听指定namespace 的资源变化?

OpenKruise中 rollouts 有没有监听指定namespace 的资源变化,现在好像是监听所有的? 我开代码里有 batchrelease_event_handler 里 坚挺 pod event, 这种是不是控制不住指定ns。只对特定ns,就是不要监听他不关心的东西。
8037a83afa31af7507bece8795eb4014.png

展开
收起
十一0204 2023-07-26 08:58:42 106 分享 版权
3 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    在 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:

    • Added
    • Updated
    • Deleted
    • Error
      在上述示例中,WorkloadEventSource 对象会监听 my-namespace Namespace 中的 Added、Updated、Deleted 和 Error 事件。

    另外,如果您使用 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 资源。

    2023-07-29 09:03:26
    赞同 展开评论
  • 在 OpenKruise 中,Rollouts(即RollingUpdates)是一种用于管理应用程序的更新和部署策略的组件。但是 Rollouts 本身并不直接提供监听指定命名空间下资源变化的功能。

    然而,你可以通过使用 Kubernetes 提供的工具来实现监听指定命名空间下资源变化的功能,例如使用 Kubernetes 的事件(Event)或监控工具如 Prometheus+Grafana 组合等。

    以下是几种实现的方法:

    1. Kubernetes Event: Kubernetes 的 Event API 可以通过监听集群中所有资源的事件来实现自定义处理逻辑。你可以编写一个自定义的控制器,订阅 Kubernetes Event 并过滤出你感兴趣的特定命名空间下的事件。

    2. Prometheus+Grafana: 使用 Prometheus 监控你的 Kubernetes 集群,并在 Grafana 中配置相应的仪表盘来展示和报警指定命名空间下的资源变化。你可以使用 Prometheus 的 Exporter 或自定义指标来收集和存储资源的状态,并设置相应的告警规则。

    3. 扩展 Kubernetes API Server: 你可以开发一个扩展 Kubernetes API Server 的插件,该插件能够监听指定命名空间下资源的变化。它会在资源发生变化时触发你所定义的回调函数或处理逻辑。

    2023-07-27 22:47:09
    赞同 展开评论
  • 意中人就是我呀!

    有一个objecet label selector,在helm安装的时候可以配置。可以配置一下 rollouts 的 rbac 权限。目前只能通过 rbac 来限制一下。此回答整理至钉群“OpenKruise 社区交流群”。

    2023-07-26 12:37:27
    赞同 展开评论
问答分类:

国内唯一 Forrester 公共云容器平台领导者象限。

还有其他疑问?
咨询AI助理