擴縮 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 的更多資訊。