擴充 StatefulSet

此任務說明如何擴充 StatefulSet。擴充 StatefulSet 是指增加或減少副本的數量。

開始之前

  • StatefulSet 僅適用於 Kubernetes 1.5 或更新版本。若要檢查您的 Kubernetes 版本,請執行 kubectl version

  • 並非所有有狀態應用程式都能順利擴充。如果您不確定是否要擴充 StatefulSet,請參閱 StatefulSet 概念StatefulSet 教學課程 以取得更多資訊。

  • 僅當您確信您的有狀態應用程式叢集完全健康時,才應執行擴充。

擴充 StatefulSet

使用 kubectl 擴充 StatefulSet

首先,找到您要擴充的 StatefulSet。

kubectl get statefulsets <stateful-set-name>

變更 StatefulSet 的副本數

kubectl scale statefulsets <stateful-set-name> --replicas=<new-replicas>

對 StatefulSet 進行就地更新

或者,您可以對 StatefulSet 執行就地更新

如果您的 StatefulSet 最初是使用 kubectl apply 建立的,請更新 StatefulSet 資訊清單的 .spec.replicas,然後執行 kubectl apply

kubectl apply -f <stateful-set-file-updated>

否則,使用 kubectl edit 編輯該欄位

kubectl edit statefulsets <stateful-set-name>

或使用 kubectl patch

kubectl patch statefulsets <stateful-set-name> -p '{"spec":{"replicas":<new-replicas>}}'

疑難排解

縮減無法正常運作

當 StatefulSet 管理的任何有狀態 Pod 不健康時,您無法縮減 StatefulSet。縮減只會在那些有狀態 Pod 變成執行中且就緒之後才會發生。

如果 spec.replicas > 1,Kubernetes 無法判斷不健康 Pod 的原因。這可能是永久性故障或暫時性故障的結果。暫時性故障可能是由升級或維護所需的重新啟動所引起。

如果 Pod 因永久性故障而不健康,則在未更正故障的情況下進行擴充可能會導致 StatefulSet 成員數降至正常運作所需的最低副本數以下。這可能會導致您的 StatefulSet 變得無法使用。

如果 Pod 因暫時性故障而不健康,且 Pod 可能會再次可用,則暫時性錯誤可能會干擾您的擴充或縮減操作。當節點同時加入和離開時,某些分散式資料庫會出現問題。在這些情況下,最好在應用程式層級考慮擴充操作,並且僅在您確定有狀態應用程式叢集完全健康時才執行擴充。

下一步

上次修改時間為 2023 年 3 月 14 日下午 8:12 PST:Tweak line wrappings in run-application (8b527bab7e)