×

Knative Serving 的activatorautoscalerautoscaler-hpacontrollerwebhookdomain-mappingdomainmapping-webhookkourier-controlkourier-gateway组件默认情况下都具有高可用性 (HA),每个组件都配置为具有两个副本。可以通过修改KnativeServing自定义资源 (CR) 中的spec.high-availability.replicas值来更改这些组件的副本数量。

配置 Knative Serving 的高可用性副本

要为符合条件的部署资源指定三个最小副本,请将自定义资源中spec.high-availability.replicas字段的值设置为3

前提条件
  • 您拥有 OpenShift Container Platform 的集群管理员权限,或者您拥有 Red Hat OpenShift Service on AWS 或 OpenShift Dedicated 的集群或专用管理员权限。

  • OpenShift Serverless Operator 和 Knative Serving 已安装在您的集群中。

步骤
  1. 在 OpenShift Container Platform Web 控制台的**管理员**视角中,导航到**OperatorHub** → **已安装的 Operator**。

  2. 选择knative-serving命名空间。

  3. 在 OpenShift Serverless Operator 的**提供的 API**列表中单击**Knative Serving**,转到**Knative Serving**选项卡。

  4. 单击**knative-serving**,然后转到**knative-serving**页面中的**YAML**选项卡。

    Knative Serving YAML
  5. 修改KnativeServing CR 中的副本数量

    YAML 示例
    apiVersion: operator.knative.dev/v1beta1
    kind: KnativeServing
    metadata:
      name: knative-serving
      namespace: knative-serving
    spec:
      high-availability:
        replicas: 3
  6. 您还可以为特定工作负载指定副本数量。

    针对工作负载的配置会覆盖 Knative Serving 的全局设置。

    YAML 示例
    apiVersion: operator.knative.dev/v1beta1
    kind: KnativeServing
    metadata:
      name: knative-serving
      namespace: knative-serving
    spec:
      high-availability:
        replicas: 3
      workloads:
      - name: webhook
        replicas: 4
  7. 验证是否遵守高可用性限制

    命令示例
    $ oc get hpa -n knative-serving
    输出示例
    NAME        REFERENCE              TARGETS   MINPODS   MAXPODS   REPLICAS   AGE
    activator   Deployment/activator   0%/100%   3         22        3          2m24s
    webhook     Deployment/webhook     2%/100%   4         8         4          2m23s

覆盖中断预算

Pod 中断预算 (PDB) 是 Kubernetes API 的标准功能,它有助于在需要重新安排 pod 进行维护时限制对应用程序的中断。

步骤
  • 通过修改KnativeServing自定义资源 (CR) 中的minAvailable配置值来覆盖特定资源的默认 PDB。

minAvailable设置为 70% 的 PDB 示例
apiVersion: operator.knative.dev/v1beta1
kind: KnativeServing
metadata:
 name: knative-serving
 namespace: knative-serving
spec:
 podDisruptionBudgets:
 - name: activator-pdb
   minAvailable: 70%

如果您禁用高可用性(例如,将high-availability.replicas值更改为1),请确保还将相应的 PDB minAvailable值更新为0。否则,pod 中断预算会阻止自动集群或 Operator 更新。