第 10 章 调优事件配置
10.1. 覆盖 Knative Eventing 系统部署配置
您可以通过修改 KnativeEventing
自定义资源(CR)中的 workload spec 来覆盖某些特定部署的默认配置。目前,对于
eventing-controller
、eventing-webhook
和 imc-controller
字段以及探测的 readiness
和 liveness
字段支持覆盖默认配置设置。
replicas
spec 无法覆盖使用 Horizontal Pod Autoscaler (HPA) 的部署副本数,且不适用于 eventing-webhook
部署。
您只能覆盖部署中默认定义的探测。
所有 Knative Serving 部署都会默认定义一个就绪度和存活度探测,但以下例外:
-
net-kourier-controller
和3scale-kourier-gateway
仅定义就绪度探测。 -
net-istio-controller
和net-istio-webhook
定义没有探测。
10.1.1. 覆盖部署配置
目前,对于 eventing-controller
、eventing-webhook
和 imc-controller
字段以及探测的 readiness
和 liveness
字段支持覆盖默认配置设置。
replicas
spec 无法覆盖使用 Horizontal Pod Autoscaler (HPA) 的部署副本数,且不适用于 eventing-webhook
部署。
在以下示例中,KnativeEventing
CR 覆盖 eventing-controller
部署,以便:
-
readiness
探测超时eventing-controller
被设置为 10 秒。 - 部署指定了 CPU 和内存资源限制。
- 部署有 3 个副本。
-
添加
example-label: label
标签。 -
添加
example-annotation:
注解。 -
nodeSelector
字段被设置为选择带有disktype: hdd
标签的节点。
KnativeEventing CR 示例
apiVersion: operator.knative.dev/v1beta1
kind: KnativeEventing
metadata:
name: knative-eventing
namespace: knative-eventing
spec:
workloads:
- name: eventing-controller
readinessProbes: 1
- container: controller
timeoutSeconds: 10
resources:
- container: eventing-controller
requests:
cpu: 300m
memory: 100Mi
limits:
cpu: 1000m
memory: 250Mi
replicas: 3
labels:
example-label: label
annotations:
example-annotation: annotation
nodeSelector:
disktype: hdd
- 1
- 您可以使用
readiness
和liveness
探测覆盖来覆盖在 Kubernetes API 中指定的一个部署中的一个容器探测的所有字段,与探测 handler:exec
,grpc
,httpGet
, 和tcpSocket
相关的字段除外。
KnativeEventing
CR 标签和注解设置覆盖部署本身和生成的 Pod 的部署标签和注解。
10.1.2. 修改消费者组 ID 和主题名称
您可以更改模板来生成触发器、代理和频道使用的消费者组 ID 和主题名称。
先决条件
- 在 OpenShift Container Platform 上具有集群或专用管理员权限。
-
OpenShift Serverless Operator、Knative Eventing 和
KnativeKafka
自定义资源(CR)已安装在 OpenShift Container Platform 集群中。 - 您已创建了一个项目,或者具有适当的角色和权限访问项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
-
已安装 OpenShift CLI(
oc
)。
流程
要更改生成触发器、代理和频道使用的消费者组 ID 和主题名称的模板,请修改
KnativeKafka
资源:apiVersion: v1 kind: KnativeKafka metadata: name: knative-kafka namespace: knative-eventing # ... spec: config: config-kafka-features: triggers.consumergroup.template: <template> 1 brokers.topic.template: <template> 2 channels.topic.template: <template> 3
- 1
- 用于生成触发器使用的消费者组 ID 的模板。使用有效的 Go
text/template
值。默认为{% raw %}"knative-trigger-{{ .Namespace }}-{{ .Name }}"{% endraw %}
. - 2
- 生成代理使用的 Kafka 主题名称的模板。使用有效的 Go
text/template
值。默认为{% raw %}"knative-broker-{{ .Namespace }}-{{ .Name }}"{% endraw %}
. - 3
- 生成频道使用的 Kafka 主题名称的模板。使用有效的 Go
text/template
值。默认为{% raw %}"messaging-kafka.{{ .Namespace }}.{{ .Name }}"{% endraw %}
.
模板配置示例
apiVersion: v1 kind: KnativeKafka metadata: name: knative-kafka namespace: knative-eventing # ... spec: config: config-kafka-features: triggers.consumergroup.template: "{% raw %}"knative-trigger-{{ .Namespace }}-{{ .Name }}-{{ .annotations.my-annotation }}"{% endraw %}" brokers.topic.template: "{% raw %}"knative-broker-{{ .Namespace }}-{{ .Name }}-{{ .annotations.my-annotation }}"{% endraw %}" channels.topic.template: "{% raw %}"messaging-kafka.{{ .Namespace }}.{{ .Name }}-{{ .annotations.my-annotation }}"{% endraw %}"
应用
KnativeKafka
YAML 文件:$ oc apply -f <knative_kafka_filename>