配置 Trigger 组件的资源配额

概述

配置与 Trigger 组件相关的资源配额。

使用场景

  • 调整 Trigger 控制平面组件的资源配额
  • 根据集群负载调整 Trigger Deployments 的副本数以及 CPU/内存设置

先决条件

资源配置指南

在配置资源配额之前:

  • 评估集群可用资源和容量
  • 考虑 webhook 流量模式和峰值事件负载
  • 从保守值开始,并根据监控数据进行调整
  • 先在非生产环境中测试配置

步骤

步骤 1

编辑 TektonConfig 资源。

$ kubectl edit tektonconfigs.operator.tekton.dev config

步骤 2

WARNING

修改配置可能会触发组件 Pods 的滚动更新,这可能导致服务短暂不可用。请在适当的时间执行此操作。

修改 spec.trigger.options.deployments 配置的示例如下:

apiVersion: operator.tekton.dev/v1alpha1
kind: TektonConfig
metadata:
  name: config
spec:
  trigger:
    options:
      disabled: false
      deployments:
        tekton-triggers-controller:
          spec:
            replicas: <REPLICA_COUNT>  # e.g., 1
            template:
              spec:
                containers:
                  - name: tekton-triggers-controller
                    resources:
                      requests:
                        cpu: <CPU_REQUEST>        # e.g., "200m"
                        memory: <MEMORY_REQUEST>  # e.g., "256Mi"
                      limits:
                        cpu: <CPU_LIMIT>          # e.g., "500m"
                        memory: <MEMORY_LIMIT>    # e.g., "512Mi"

        tekton-triggers-core-interceptors:
          spec:
            replicas: <REPLICA_COUNT>  # e.g., 1
            template:
              spec:
                containers:
                  - name: tekton-triggers-core-interceptors
                    resources:
                      requests:
                        cpu: <CPU_REQUEST>        # e.g., "200m"
                        memory: <MEMORY_REQUEST>  # e.g., "256Mi"
                      limits:
                        cpu: <CPU_LIMIT>          # e.g., "500m"
                        memory: <MEMORY_LIMIT>    # e.g., "512Mi"

        tekton-triggers-webhook:
          spec:
            replicas: <REPLICA_COUNT>  # e.g., 1
            template:
              spec:
                containers:
                  - name: webhook
                    resources:
                      requests:
                        cpu: <CPU_REQUEST>        # e.g., "200m"
                        memory: <MEMORY_REQUEST>  # e.g., "256Mi"
                      limits:
                        cpu: <CPU_LIMIT>          # e.g., "500m"
                        memory: <MEMORY_LIMIT>    # e.g., "512Mi"

步骤 3

提交配置并等待 Pods 更新。

$ kubectl get pods -n tekton-pipelines -w

NAME                                                READY   STATUS    RESTARTS   AGE
tekton-triggers-controller-67f69dbb5d-zk5x2         1/1     Running   0          2m16s
tekton-triggers-core-interceptors-d6495f95f-vk49r   1/1     Running   0          2m16s
tekton-triggers-webhook-55758bbcd9-2qvzs            1/1     Running   0          2m16s

操作结果

可以看到,Trigger 相关组件的资源配额配置已生效。

$ kubectl get deployments.apps -n tekton-pipelines tekton-triggers-controller tekton-triggers-core-interceptors tekton-triggers-webhook -o yaml | grep 'resources:' -A 6

          resources:
            limits:
              cpu: 500m
              memory: 512Mi
            requests:
              cpu: 200m
              memory: 256Mi
--
          resources:
            limits:
              cpu: 500m
              memory: 512Mi
            requests:
              cpu: 200m
              memory: 256Mi
--
          resources:
            limits:
              cpu: 500m
              memory: 512Mi
            requests:
              cpu: 200m
              memory: 256Mi

参考资料