配置高可用性组件¶
主动/被动高可用性 (HA) 是 Kubernetes API 的一项标准功能,有助于确保在发生中断时 API 保持运行。在 HA 部署中,如果活动控制器崩溃或被删除,另一个控制器可以接管处理当前不可用控制器的 API 的任务。
使用领导者选举 HA 模式时,控制器实例在需要之前已在集群中计划并运行。这些控制器实例竞争使用共享资源,称为领导者选举锁。在任何给定时间访问领导者选举锁资源的控制器实例称为领导者。
领导者选举默认情况下对所有 Knative Serving 组件启用。HA 功能默认情况下对所有 Knative Serving 组件禁用,这些组件配置为只有一个副本。
禁用领导者选举¶
对于利用领导者选举来实现 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
。 - 设置
--replicas=1
禁用 HA。
注意
如果您缩减了自动扩展器,您可能会在一段时间内(最多为 stable-window
值)观察到某些修订的自动扩展结果不准确。这是因为当 autoscaler
pod 终止时,属于该 pod 的修订的所有权将传递给处于待命状态的其他 autoscaler
pod。接管这些修订所有权的 autoscaler
pod 使用 stable-window
时间来构建这些修订的扩展指标状态。
扩展数据平面¶
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
默认情况下,minReplicas
和 maxReplicas
分别设置为 1
和 20
。如果这些值出于某种原因不可取,那么您可以使用以下命令将这些值更改为 minScale=9
和 maxScale=19
$ kubectl patch hpa activator -n knative-serving -p '{"spec":{"minReplicas":9,"maxReplicas":19}}'
要将激活器规模设置为特定值,只需将 minScale
和 maxScale
设置为相同的目标值。
建议在生产部署中运行至少 3 个 activator
实例以实现冗余并避免单点故障,以防 Knative 服务需要从 0 扩展。