跳到内容

配置高可用组件

主动/被动高可用 (HA) 是 Kubernetes API 的一项标准功能,有助于确保 API 在发生中断时保持运行。在 HA 部署中,如果一个主控制器崩溃或被删除,另一个控制器将可用,接管由当前不可用的控制器正在服务的 API 的处理。

当使用 Leader Election HA 模式时,控制器实例在需要之前就已经在集群中调度并运行。这些控制器实例会争夺一个共享资源,称为 Leader Election 锁。在任何给定时间能够访问 Leader Election 锁资源的控制器实例被称为 Leader(主控制器)。

Leader Election 默认启用所有 Knative Serving 组件。HA 功能默认禁用所有 Knative Serving 组件,这些组件仅配置一个副本。

禁用 Leader Election

对于利用 Leader Election 实现 HA 的组件,可以通过传递标志 --disable-ha 来禁用此功能。当 HA 毕业为“稳定”时,此选项将消失。

扩展控制平面

除了 activator 组件外,您可以使用类似以下的命令扩展在 knative-serving (或 kourier-system) 中运行的任何部署:

$ kubectl -n knative-serving scale deployment <deployment-name> --replicas=2
  • --replicas 设置为 2 可启用 HA。
  • 如果您有需要更多部署副本的用例,可以使用更高的值。例如,如果您需要至少 3 个 controller 部署,请将 --replicas=3 设置为 3。
  • --replicas=1 设置为 1 可禁用 HA。

注意

如果您缩减 Autoscaler,您可能会在一段时间内(长达 stable-window 值)观察到某些 Revisions 的自动伸缩结果不准确。这是因为当一个 autoscaler pod 终止时,该 pod 所属 Revisions 的所有权会被传递给其他待命的 autoscaler pod。接管这些 Revisions 所有权的 autoscaler pod 使用 stable-window 时间来构建这些 Revisions 的伸缩指标状态。

扩展数据平面

activator 组件的规模由 Kubernetes HPA 组件控制。您可以通过运行以下命令查看当前的 HPA 规模限制和当前规模:

$ kubectl get hpa activator -n knative-serving

输出类似于以下内容:

NAME        REFERENCE              TARGETS   MINPODS   MAXPODS   REPLICAS   AGE
activator   Deployment/activator   2%/100%   5         15        11         346d

默认情况下,minReplicasmaxReplicas 分别设置为 120。如果这些值因任何原因不理想,那么,例如,您可以使用以下命令将这些值更改为 minScale=9maxScale=19

$ kubectl patch hpa activator -n knative-serving -p '{"spec":{"minReplicas":9,"maxReplicas":19}}'

要将 activator 的规模设置为特定值,只需将 minScalemaxScale 设置为所需的相同值即可。

建议生产部署至少运行 3 个 activator 实例以实现冗余,并避免在 Knative 服务需要从 0 扩展时出现单点故障。

我们使用分析和 cookie 来了解网站流量。有关您使用我们网站的信息会与 Google 共享以达到此目的。了解更多。