高可用性 (HA) 是 Kubernetes API 的标准功能,有助于确保在发生中断时 API 保持运行。在 HA 部署中,如果活动控制器崩溃或被删除,则另一个控制器随时可用。此控制器接管以前由现在不可用的控制器服务的 API 的处理。
OpenShift Serverless 中的 HA 可通过领导者选举实现,在安装 Knative Serving 或 Eventing 控制平面后,默认情况下启用该功能。使用领导者选举 HA 模式时,控制器实例已在它们需要之前被调度并运行在集群内。这些控制器实例竞争使用共享资源,称为领导者选举锁。在任何给定时间访问领导者选举锁资源的控制器实例称为领导者。
OpenShift Serverless 中的 HA 可通过领导者选举实现,在安装 Knative Serving 或 Eventing 控制平面后,默认情况下启用该功能。使用领导者选举 HA 模式时,控制器实例已在它们需要之前被调度并运行在集群内。这些控制器实例竞争使用共享资源,称为领导者选举锁。在任何给定时间访问领导者选举锁资源的控制器实例称为领导者。
Knative Eventing 的 `eventing-controller`、`eventing-webhook`、`imc-controller`、`imc-dispatcher` 和 `mt-broker-controller` 组件默认情况下具有高可用性 (HA),默认配置为每个组件有两个副本。可以通过修改 `KnativeEventing` 自定义资源 (CR) 中的 `spec.high-availability.replicas` 值来更改这些组件的副本数量。
对于 Knative Eventing,`mt-broker-filter` 和 `mt-broker-ingress` 部署不通过 HA 进行缩放。如果需要多个部署,请手动缩放这些组件。 |
您拥有 OpenShift Container Platform 的集群管理员权限,或者您拥有 Red Hat OpenShift Service on AWS 或 OpenShift Dedicated 的集群或专用管理员权限。
OpenShift Serverless Operator 和 Knative Eventing 已安装在您的集群上。
在 OpenShift Container Platform Web 控制台的 **管理员** 视角中,导航到 **OperatorHub** → **已安装的 Operators**。
选择 `knative-eventing` 命名空间。
单击 OpenShift Serverless Operator 的 **提供的 API** 列表中的 **Knative Eventing** 以转到 **Knative Eventing** 选项卡。
单击 **knative-eventing**,然后转到 **knative-eventing** 页面中的 **YAML** 选项卡。
修改 `KnativeEventing` CR 中的副本数量
apiVersion: operator.knative.dev/v1beta1
kind: KnativeEventing
metadata:
name: knative-eventing
namespace: knative-eventing
spec:
high-availability:
replicas: 3
您也可以为特定工作负载指定副本数量。
针对工作负载的配置会覆盖 Knative Eventing 的全局设置。 |
apiVersion: operator.knative.dev/v1beta1
kind: KnativeEventing
metadata:
name: knative-eventing
namespace: knative-eventing
spec:
high-availability:
replicas: 3
workloads:
- name: mt-broker-filter
replicas: 3
验证是否遵守高可用性限制
$ oc get hpa -n knative-eventing
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
broker-filter-hpa Deployment/mt-broker-filter 1%/70% 3 12 3 112s
broker-ingress-hpa Deployment/mt-broker-ingress 1%/70% 3 12 3 112s
eventing-webhook Deployment/eventing-webhook 4%/100% 3 7 3 115s
Apache Kafka 的 Knative 代理实现组件 `kafka-controller` 和 `kafka-webhook-eventing` 默认情况下具有高可用性 (HA),默认配置为每个组件有两个副本。可以通过修改 `KnativeKafka` 自定义资源 (CR) 中的 `spec.high-availability.replicas` 值来更改这些组件的副本数量。
您拥有 OpenShift Container Platform 的集群管理员权限,或者您拥有 Red Hat OpenShift Service on AWS 或 OpenShift Dedicated 的集群或专用管理员权限。
OpenShift Serverless Operator 和 Apache Kafka 的 Knative 代理已安装在您的集群上。
在 OpenShift Container Platform Web 控制台的 **管理员** 视角中,导航到 **OperatorHub** → **已安装的 Operators**。
选择 `knative-eventing` 命名空间。
单击 OpenShift Serverless Operator 的 **提供的 API** 列表中的 **Knative Kafka** 以转到 **Knative Kafka** 选项卡。
单击 **knative-kafka**,然后转到 **knative-kafka** 页面中的 **YAML** 选项卡。
修改 `KnativeKafka` CR 中的副本数量
apiVersion: operator.serverless.openshift.io/v1alpha1
kind: KnativeKafka
metadata:
name: knative-kafka
namespace: knative-eventing
spec:
high-availability:
replicas: 3
Pod 中断预算 (PDB) 是 Kubernetes API 的标准功能,有助于限制在需要重新安排其 Pod 以进行维护时对应用程序的中断。
通过修改 `KnativeEventing` 自定义资源 (CR) 中的 `minAvailable` 配置值来覆盖特定资源的默认 PDB。
apiVersion: operator.knative.dev/v1beta1
kind: KnativeEventing
metadata:
name: knative-eventing
namespace: knative-eventing
spec:
podDisruptionBudgets:
- name: eventing-webhook
minAvailable: 70%
如果您禁用高可用性(例如,将 |