擴充 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 可能會再次可用,則暫時性錯誤可能會干擾您的擴充或縮減操作。當節點同時加入和離開時,某些分散式資料庫會出現問題。在這些情況下,最好在應用程式層級考慮擴充操作,並且僅在您確定有狀態應用程式叢集完全健康時才執行擴充。
下一步
- 深入瞭解刪除 StatefulSet。