Menu Close
Settings Close

Language and Page Formatting Options

6.4.6. 为 Service Mesh 使用 secret 过滤来改进内存用量

默认情况下,Kubernetes client-go 库的 informers 实施会获取特定类型的所有资源。当有很多资源可用时,这可能会导致大量资源出现大量开销,这可能会导致 Knative net-istio 入口控制器因为内存泄漏而在大型集群中失败。但是,一个过滤机制可用于 Knative net-istio ingress 控制器,它可让控制器只获取 Knative 相关的 secret。您可以通过在 KnativeServing 自定义资源(CR)中添加注解来启用此机制。

先决条件

  • 您可以访问具有集群管理员权限的 OpenShift Container Platform 帐户。
  • 您已创建了一个项目,或者具有适当的角色和权限访问项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
  • 安装 Red Hat OpenShift Service Mesh。带有 Service Mesh 的 OpenShift Serverless 仅支持与 Red Hat OpenShift Service Mesh 2.0.5 或更高版本搭配使用。
  • 安装 OpenShift Serverless Operator 和 Knative Serving。
  • 安装 OpenShift CLI(oc)。

流程

  • serverless.openshift.io/enable-secret-informer-filtering 注解添加到 KnativeServing CR:

    KnativeServing CR 示例

    apiVersion: operator.knative.dev/v1alpha1
    kind: KnativeServing
    metadata:
      name: knative-serving
      namespace: knative-serving
      annotations:
        serverless.openshift.io/enable-secret-informer-filtering: "true" 1
    spec:
      ingress:
        istio:
          enabled: true
      deployments:
        - annotations:
            sidecar.istio.io/inject: "true"
            sidecar.istio.io/rewriteAppHTTPProbers: "true"
          name: activator
        - annotations:
            sidecar.istio.io/inject: "true"
            sidecar.istio.io/rewriteAppHTTPProbers: "true"
          name: autoscaler

    1
    添加此注解会将 enviroment 变量 ENABLE_SECRET_INFORMER_FILTERING_BY_CERT_UID=true 注入到 net-istio 控制器 pod。