設定高可用性元件¶
主動/被動高可用性 (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。
注意
如果您縮減 Autoscaler,您可能會觀察到某些修訂版本的自動縮放結果不準確,時間最長可達 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}}'
若要將 activator 縮放設定為特定值,只需將 minScale
和 maxScale
設定為相同的所需值即可。
建議生產部署至少執行 3 個 activator
實例,以實現冗餘,並避免在需要從 0 擴展 Knative 服務時出現單點故障。