15.2. Knative 部署的高可用性
默认情况下,Knative Serving activator
, autoscaler,
,autoscaler
-hpacontroller
,webhook
,domain-mapping
,domainmapping-webhook
,kourier-control
, 和 kourier-gateway
组件提供高可用性(HA)。您可以通过修改 KnativeServing
自定义资源 (CR) 中的 spec.high-availability.replicas
值来更改这些组件的副本数。
15.2.1. 为 Knative Serving 配置高可用性副本
要为有资格的部署资源指定三个最小副本,请将自定义资源中的 spec.high-availability.replicas
的值设置为 3
。
先决条件
- 在 OpenShift Container Platform 上具有集群管理员权限,或者具有 Red Hat OpenShift Service on AWS 或 OpenShift Dedicated 的集群或专用管理员权限。
- 在集群中安装了 OpenShift Serverless Operator 和 Knative Serving。
流程
-
在 OpenShift Container Platform web 控制台的 Administrator 视角中,进入 OperatorHub
Installed Operators。 -
选择
knative-serving
命名空间。 - 点 OpenShift Serverless Operator 的 Provided APIs 列表中的 Knative Serving 来进入 Knative Serving 选项卡。
点 knative-serving,然后使用 knative-serving 页面中的 YAML 选项卡。
修改
KnativeServing
CR 中的副本数量:YAML 示例
apiVersion: operator.knative.dev/v1beta1 kind: KnativeServing metadata: name: knative-serving namespace: knative-serving spec: high-availability: replicas: 3
您还可以指定特定工作负载的副本数量。
注意特定于工作负载的配置会覆盖 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
验证是否遵循高可用性限制:
示例命令
$ 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
15.2.2. 覆盖中断预算
Pod Disruption Budget (PDB)是 Kubernetes API 的一个标准功能,有助于限制因维护原因需要重新调度 pod 时对应用程序的中断。
流程
-
通过修改
KnativeServing
自定义资源(CR)中的minAvailable
配置值来覆盖特定资源的默认 PDB。
PDB 示例,minAvailable
设置为 70%
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 更新。