6.11. OpenShift Serverless 中的高可用性

高可用性 (HA) 是 Kubernetes API 的标准功能,有助于确保在出现中断时 API 保持正常运行。在 HA 部署中,如果某个活跃控制器崩溃或者被删除,另外一个控制器就可以接管处理目前不可用的控制器所服务的 API。

OpenShift Serverless 中的 HA 可通过领导选举机制获得,该机制会在安装 Knative Serving 和 Eventing control plane 后默认启用。

在使用领导选举 HA 模式时,控制器实例在需要前应该已在集群内调度并运行。这些控制器实例争用共享资源,即领导选举锁定。在任意给定时间可以访问领导选举机制锁定资源的控制器实例被称为领导(leader)。

6.11.1. 在 OpenShift Serverless 中配置高可用性副本

OpenShift Serverless 对于 Knative Serving、Knative Eventing 和 Knative Kafka,默认提供高可用性 (HA) 功能。这些组件为每个组件扩展:

  • Knative Serving:activatorautoscalerautoscaler-hpacontrollerwebhookkourier-controlkourier-gateway
  • Knative Eventing:eventing-controllereventing-webhookimc-controllerimc-dispatchermt-broker-controllersugar-controller
  • Knative Kafka:kafka-ch-controllerkafka-controller-managerkafka-webhook

这些组件默认配置有两个副本。

对于 Knative Eventing,HA 不会扩展 mt-broker-filtermt-broker-ingress 部署。如果需要多个部署,请手动扩展这些组件。

您可以通过更改 KnativeServing 自定义资源 (CR)、KnativeEventing CR 或 KnativeKafka CR 中的 spec.high-availability.replicas 配置来修改每个组件创建的副本数。

6.11.1.1. 为 Serving 配置高可用性副本

您可以通过修改 KnativeServing 自定义资源中的 spec.high-availability.replicas 值来扩展 Knative Serving 组件。

先决条件

  • 您可以使用集群管理员权限访问 OpenShift Container Platform 集群。
  • 在集群中安装了 OpenShift Serverless Operator 和 Knative Serving。

流程

  1. 在 OpenShift Container Platform web 控制台的 Administrator 视角中,进入 OperatorHubInstalled Operators
  2. 选择 knative-serving 命名空间。
  3. 点击 OpenShift Serverless Operator 的 Provided APIs 列表中的 Knative Serving 来进入 Knative Serving 选项卡。
  4. knative-serving,然后使用 knative-serving 页面中的 YAML 选项卡。

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

    YAML 示例

    apiVersion: operator.knative.dev/v1alpha1
    kind: KnativeServing
    metadata:
      name: knative-serving
      namespace: knative-serving
    spec:
      high-availability:
        replicas: 3 1

    1
    将副本数量设置为 3
    重要

    不要修改 config 字段中包含的任何 YAML。此字段中的一些配置值被 OpenShift Serverless Operator 注入,修改后,您的部署将不被支持。

    • replicas 值为所有 HA 控制器设置副本数。
    • 默认的 replicas 值为 2
    • 您可以通过将值更改为 3 或更多来增加副本数量。

6.11.1.2. 为 Eventing 配置高可用性副本

您可以通过修改 KnativeEventing 自定义资源中的 spec.high-availability.replicas 值来扩展 Knative Eventing 组件。

先决条件

  • 您可以使用集群管理员权限访问 OpenShift Container Platform 集群。
  • 在集群中安装了 OpenShift Serverless Operator 和 Knative Eventing。

流程

  1. 在 OpenShift Container Platform web 控制台的 Administrator 视角中,进入 OperatorHubInstalled Operators
  2. 选择 knative-eventing 命名空间。
  3. 点击 OpenShift Serverless Operator 的 Provided APIs 列表中的 Knative Eventing 来进入 Knative Eventing 选项卡。
  4. knative-eventing,然后进入 knative-eventing 页面中的 YAML 选项卡。

    Knative Eventing YAML
  5. 修改 KnativeEventing CRD 中的副本数量:

    YAML 示例

    apiVersion: operator.knative.dev/v1alpha1
    kind: KnativeEventing
    metadata:
      name: knative-eventing
      namespace: knative-eventing
    spec:
      high-availability:
        replicas: 3 1

    1
    将副本数量设置为 3
    重要

    不要修改 config 字段中包含的任何 YAML。此字段中的一些配置值被 OpenShift Serverless Operator 注入,修改后,您的部署将不被支持。

    • replicas 值为所有 HA 控制器设置副本数。
    • 默认的 replicas 值为 2
    • 您可以通过将值更改为 3 或更多来增加副本数量。

6.11.1.3. 为 Kafka 配置高可用性副本

您可以通过修改 KnativeKafka 自定义资源中的 spec.high-availability.replicas 值来扩展 Knative Kafka 组件。

先决条件

  • 您可以使用集群管理员权限访问 OpenShift Container Platform 集群。
  • 在集群中安装了 OpenShift Serverless Operator 和 Knative Kafka。

流程

  1. 在 OpenShift Container Platform web 控制台的 Administrator 视角中,进入 OperatorHubInstalled Operators
  2. 选择 knative-eventing 命名空间。
  3. 点 OpenShift Serverless Operator 的 Provided APIs 列表中的 Knative Kafka 进入 Knative Kafka 标签页。
  4. knative-kafka,然后进入 knative-kafka 页面中的 YAML 选项卡。

    Knative Kafka YAML
  5. 修改 KnativeKafka CRD 中的副本数量:

    YAML 示例

    apiVersion: operator.serverless.openshift.io/v1alpha1
    kind: KnativeKafka
    metadata:
      name: knative-kafka
      namespace: knative-eventing
    spec:
      high-availability:
        replicas: 3 1

    1
    将副本数量设置为 3
    重要

    不要修改 config 字段中包含的任何 YAML。此字段中的一些配置值被 OpenShift Serverless Operator 注入,修改后,您的部署将不被支持。

    • replicas 值为所有 HA 控制器设置副本数。
    • 默认的 replicas 值为 2
    • 您可以通过将值更改为 3 或更多来增加副本数量。